Использование логарифмического преобразования меток и передискретизации данных меньшинства для уменьшения систематической ошибки модели.

В продолжение одной из моих недавних статей,



Я получил комментарий от Юджинии Анелло об использовании преобразования журнала меток в задачах регрессии машинного обучения. Действительно, я использую этот метод много раз и поэтому постараюсь пролить больше света на его потенциальные предостережения, а также обсудить жизнеспособную альтернативу.

Результаты этого исследования также доступны в этой общедоступной записной книжке Kaggle.

Шаг 1 — предварительная обработка данных

Здесь я беру тот же самый набор данных и использую те же шаги предобработки, что и в вышеупомянутой статье.

Шаг 2 — влияние лог-преобразования метки на остатки модели

Здесь я смотрю на остаточные значения моделей (прогнозируемые минус фактические логарифмически преобразованные цены Airbnb в евро за двух человек и две ночи) для двух моделей:

  • модель с логарифмически преобразованной (x -> np.log10(x)) ценой (получившей название логарифмическое преобразование);
  • модель без логарифмического преобразования цены (получившая название без логарифмического преобразования).

Для простоты сравнения я также нанес на график средние значения бинов, полученные с помощью scipy.stats.binned_statistic.

Из-за логарифмического преобразования остатки модели измеряются в единицах dex.

Предоставленные средние бинарные значения показывают заметный недостаток обеих произведенных моделей. В то время как среднеквадратичная ошибка (RMSE) моделей с логарифмическим преобразованием составляет всего около 0,145 dex (примерно соответствует 40-процентной вариации), существуют гораздо более высокие систематические различия между прогнозируемыми и фактическими ценами, особенно для квартиры с самой высокой ценой (чтобы их прогнозируемая цена была в 10**1.7 = 50 раза ниже фактической цены).

Шаг 3 — уменьшение смещения модели с передискретизацией меньшинства

На самом деле выбор правильного метода для смягчения смещения модели обычно зависит от бизнес-требований. А именно, каковы последствия, если наша модель значительно завышает или занижает реальную стоимость аренды? Каковы принятые ограничения? Есть ли какие-либо Соглашения об уровне обслуживания (SLA) по этому поводу?

В качестве примера предположим, что наше соглашение об уровне обслуживания должно предоставлять модельную цену, медиана которой отличается от фактической цены не более чем на 1,0 dex (или в 10 раз). Как видно из скриншота выше, это нарушается для дорогих квартир (› 10**4 = 10,000 евро за двоих и две ночи). Простая коррекция будет заключаться в избыточной выборке дорогих квартир, чтобы модель уделяла больше внимания таким выборкам, например, увеличив количество квартир стоимостью около 1000 евро в 30 раз.

Как и ожидалось, модель передискретизации работает намного лучше (теперь в пределах диапазона SLA) для листингов с высокой ценой и по-прежнему хорошо работает как для листингов с низкой, так и со средней ценой:

Я надеюсь, что эти результаты могут быть полезны для вас. В случае вопросов/комментариев, не стесняйтесь писать в комментариях ниже или свяжитесь со мной напрямую через LinkedIn или Twitter.

Вы также можете подписаться на мои новые статьи или стать приглашенным участником Medium.