Pull to refresh

Comments 2

Полезные уроки, конечно, но есть вопрос по уроку №7 - что именно изучать в метриках и как воспользоваться результатами изучения?

Как пример, что сделала победившая команда (Дмитрий Гордеев и Константин Яковлев) с метрикой SMAPE+1 в соревновании по Паркинсону. Оригинал сообщения на англ тут

SMAPE1P:

MAPE / SMAPE / SMAPE1P очень хитрая метрика для GBT:

  • Требуется кастом лосс или трансформация через L1 (а L1 в свою очередь никогда не бывает оптимальным выбором для GBT)

  • Мультимодальность

  • Zero inflation https://en.wikipedia.org/wiki/Zero-inflated_model

  • ….

Парни сделали такой хак, который забустил метрику SMAPE1P:

Step 1: Multiclass Classification

params = { 'boosting_type': 'gbdt', 'objective': 'multiclass', ... }

Step 2: Train model (could be xgboost catboost lgbm)

estimator.train(...)

Step 3: Predict probabilities:

probas = estimator.predict(...)

Step 4: Make direct SMAPE1P optimization from probabilities

def single_smape1p(preds, tgt):
x = np.tile(np.arange(preds.shape[1]), (preds.shape[0], 1))
x = np.abs(x - tgt) / (2 + x + tgt)
return (x * preds).sum(axis=1)

def opt_smape1p(preds):
x = np.hstack([single_smape1p(preds, i).reshape(-1,1) for i in range(preds.shape[1])])
return x.argmin(axis=1)

final_predictions = opt_smape1p(probas)


По моему гениально...



Sign up to leave a comment.

Articles