Yury Kashnitsky @yorko
Staff GenAI Field Solution Architect, Google Cloud
Information
- Rating
- Does not participate
- Location
- Den Haag, Zuid-Holland, Нидерланды
- Works in
- Date of birth
- Registered
- Activity
Staff GenAI Field Solution Architect, Google Cloud
Короче любой скрипт на Kaggle расскажет вам больше про Xgboost в R. И на более-менее реальных данных, а не избитом Титанике. Если реально полезную статью писать — это надо разобраться, как чудо-зверь работает (в офиц документации неплохо рассказывается), что стоит за всеми этими параметрами в Xgboost и как их настраивать (hyperopt, sacred).
А так по первой же попавшейся ссылке больше узнаешь.
Круговая диаграмма, показывающая, сколько торта осталось.
Из того, что я слушал, понятней всего было в курсе "Эконометрика" на курсере — ВШЭ, Борис Демешев. И Andrew Ng, само собой.
А вот пример объяснения градиентного спуска. Хоть и на английском, но все очень наглядно.
Для новичков то как раз это очень нагруженная подача материала.
МНК можно объяснить и без дифференцирования таких сложных матричных выражений. Да и косяки с индексами…
Но интересно посмотреть, что дальше будет.
Не планируете материал сделать в виде тетрадок Jupyter?
У Xgboost есть обертка под R. А сия реализация идей Фридмана плюс десяток эвристик — это лучшее, что существует на сегодняшний день. Раз уж вы на Kaggle ссылаетесь.
Существуют модификации в виде приближенного сингулярного разложения и, соответственно, RandomizedPCA.
Не хотелось бы явно рекламой заниматься :) так что скажу, что этот курс упомянут в конце статьи с примером проекта, на которую я сослался выше.
>>> Я отталкивался от того, что интерес несет именно дельта между ценой в объявлении и предсказанной ценой (выгода) <<
Прогноз остается тот же и при масштабированных признаках.
Насчет свободного члена. Все-таки при масштабированных признаках это будет именно «средняя» машина, для которой значение каждого признака равно среднему по этому признаку (x_i — mean_i = 0). И прогноз цены в ~1.2 млн. руб. выглядит намного разумней, чем прогноз в минус 176 млн. руб для «нулевого» авто :)
Да, у меня тоже обычный лассо лучше RF сработал. Но даже в тех случаях, когда RF лучше работает, понятно, какую модель выбирать, тут к гадалке не ходи :) Но рассказать об этом популярно стоит.
Однако часто в тех случаях, когда нам суперскорости прогноза не нужны и RF работает лучше, все равно выбирают линейные модели из-за «статистической значимости». Мне это не очень понятно. Что лучше на кросс-валидации и holdout-выборке работает, то вроде и нужно выбирать. Интересно будет про это послушать. И если не лень, можно посмотреть еще, как Xgboost и Vowpal Wabbit справится. Хотя на такой маленькой выборке вряд ли будут существенные отличия.
С Вашего позволения дам эти данные для анализа слушателям своего курса. Поанализируют, построят кучу картинок, много моделей сравнят, с помощью кривых обучения разберутся, как модели обобщаются и т.д. Вот пример проекта.
Хотел бы указать на пару неточностей.
Данные стоит масштабировать. Тогда коэффициенты модели можно интерпретировать. Свободный член — как средний прогноз (в Вашей модели минус 1.76e+08 — бессмысленно, а с масштабированными переменными — 1201687, то есть прогноз для «средней» машины), а остальные коэффициенты — как значимость переменных. По коэффициентам Вашей модели не видно, например, что признак «mileage» — второй/третий по значимости. А при масштабировании так и получается (простая регрессия year: 73182, engine.power: 55295, mileage: -50211, Lasso, Ridge, случайный лес схожие результаты дают).
Влияние 3 главных признаков на цену в картинках:
И в формуле RMSE у Вас ошибка — число измерений надо бы под корень внести, и тогда все-таки около 120 тыс. руб. в среднем ошибка прогноза.
Кстати, если интересно посравнивать модели, предлагаю сеять random seed для полной воспроизводимости.
Но все равно кажется, что это что-то из разряда spurious correlations. Или действительно скрытые факторы есть. Кстати, как авторы этой статьи пишут прямо в аннотации, пропорции лица не зависят от роста.
Но все равно такой вывод авторов «не удовлетворяет». А именно, последняя фраза аннотации «Together, these findings suggest that the sexually dimorphic facial width-to-height ratio may be an ‘honest signal’ of propensity for aggressive behaviour.» — это чисто «correlation doesn't imply causation».
Тем не менее, для хостинга своих блокнотов без серьезных вычислений — отличный вариант.
Также неплохо для знакомства с Apache Spark.
Также надо быть уверенным, что вам именно Spark нужен. Может, сойдет и просто Vowpal Wabbit или Xgboost на одной машине с 30 ядрами?
Вот статья по теме. Тут VW на 2 порядка быстрее Hadoop-кластера.
Для конфигурации самого Spark можно использовать скрипт spark-ec2, входящий в дистрибутив (в каталоге ec2). Он написан с использованием boto, так что вручную запрашивать инстансы не придется.
Пример:
Главное — не упустить аргумент spot-price. Иначе инстансы по требованию пойдут, и это будет намного дороже.
Но тут немало подводных камней. Если самому скрипт модифицировать, туда добавятся 2-3 костыля. Как руки дойдут, выложу на GitHub.
Кроме тех предостережений Amazon — про пароли, IAM-пользователей, root-ключи, двухфакторную авторизацию и бережное хранение ключей.