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 Classificationparams = {
'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 probabilitiesdef 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)
По моему гениально...
Первые 73 дня Kaggle. Опыт новичков в 20 извлеченных уроках