Forwarded from Data Science Private Sharing
#Tip27 #Train
При K-fold валидации прогнозы делаются на тестовых частях, которые не участвуют в обучении и эти прогнозы называются Out-of-Fold (OOF) Predictions.
Обычно они используются по прямому назначению - оценки модели.
Но можно их задействовать и более интересным способом - для стэкинга.
Стэкинг это способ построения ансамбля моделей, в котором есть базовые модели и есть мета модель.
Базовые модели обучаются на исходных данных, а мета-модель на предсказаниях базовых моделей.
Обычно для построения стекинга исходный датасет делится на несколько крупных частей из-за чего все модели увидят меньше данных. Но благодаря Out-of-Fold Predictions можно реализовать обучение на всех (почти) данных.
В соревновательном DS алгоритм в целом такой:
1. Разбиваем датасет с метками на трейн и эвал + у нас уже есть тестовый датасет от организаторов.
2. Трейн разбиваем на фолды.
3. Для каждого фолда:
- Обучаем модель на тренировочной части.
- Выполняем предсказание для тестовой части фолда и сохраняем предсказание в отдельный вектор, каждый элемент которого соответствует строке тренировочного датасета.
- Выполняем предсказание для валидационного датасета.
- Выполняем предсказание для тестового датасета.
4. Собранные предсказания на фолдах передаем в мета-модель как фичу.
5. Усредняем предсказания полученные для валидационного и тестового датасета.
6. С помощью мета-модели делаем предсказание для усредненных значений валидационного и тестового датасета.
7. Значения полученные для валидационного датасета используем для оценки, а значения полученные для тестового датасета заворачиваем в сабмит.
Реализуется данный алгоритм обычно вручную.
Варианты для изменений:
- На фолдах можно обучить несколько видов базовых моделей, тогда на вход мета-модели пойдет несколько фичей.
- На шаге обучения мета-модели можно присоединить фичи-предсказания к исходным фичам.
Для большей эффективности ансамбля для базовых и мета-модели стараются задействовать разные алгоритмы (линейные/KNN/деревья).
При K-fold валидации прогнозы делаются на тестовых частях, которые не участвуют в обучении и эти прогнозы называются Out-of-Fold (OOF) Predictions.
Обычно они используются по прямому назначению - оценки модели.
Но можно их задействовать и более интересным способом - для стэкинга.
Стэкинг это способ построения ансамбля моделей, в котором есть базовые модели и есть мета модель.
Базовые модели обучаются на исходных данных, а мета-модель на предсказаниях базовых моделей.
Обычно для построения стекинга исходный датасет делится на несколько крупных частей из-за чего все модели увидят меньше данных. Но благодаря Out-of-Fold Predictions можно реализовать обучение на всех (почти) данных.
В соревновательном DS алгоритм в целом такой:
1. Разбиваем датасет с метками на трейн и эвал + у нас уже есть тестовый датасет от организаторов.
2. Трейн разбиваем на фолды.
3. Для каждого фолда:
- Обучаем модель на тренировочной части.
- Выполняем предсказание для тестовой части фолда и сохраняем предсказание в отдельный вектор, каждый элемент которого соответствует строке тренировочного датасета.
- Выполняем предсказание для валидационного датасета.
- Выполняем предсказание для тестового датасета.
4. Собранные предсказания на фолдах передаем в мета-модель как фичу.
5. Усредняем предсказания полученные для валидационного и тестового датасета.
6. С помощью мета-модели делаем предсказание для усредненных значений валидационного и тестового датасета.
7. Значения полученные для валидационного датасета используем для оценки, а значения полученные для тестового датасета заворачиваем в сабмит.
Реализуется данный алгоритм обычно вручную.
Варианты для изменений:
- На фолдах можно обучить несколько видов базовых моделей, тогда на вход мета-модели пойдет несколько фичей.
- На шаге обучения мета-модели можно присоединить фичи-предсказания к исходным фичам.
Для большей эффективности ансамбля для базовых и мета-модели стараются задействовать разные алгоритмы (линейные/KNN/деревья).
Forwarded from Варим МЛ
Все знают, что при обучении сеток каждую эпоху надо шаффлить датасет. А есть ли смысл ещё как-то влиять на процесс сэмплинга данных? Может быть!
#Жека #machinelearning
#Жека #machinelearning
Telegraph
А вы, друзья, как ни садитесь...
Любой, кто хоть раз обучал нейронки, знает, что принято на каждой эпохе шаффлить датасет, чтобы не повторялся порядок батчей. А зачем это делать? Обычно это объясняют тем, что шаффлинг улучшает генерализацию сетей, делает точнее эстимейт градиента на батчах…
Forwarded from ИЦ "ГЕВИССТА"
Forwarded from ИЦ "ГЕВИССТА"
Признаки для временных рядов – скользящие разности
Обычно в прогнозировании временных рядов используют два вида скользящих разностей. Тестовую часть защищаете от протечек значениями NaN.
# и минимальным значениями окна, окно шириной 4,
# c лагом 1
# первым значениями окна, окно шириной 4, с лагом 1
Обычно в прогнозировании временных рядов используют два вида скользящих разностей. Тестовую часть защищаете от протечек значениями NaN.
# считаем скользящие разности между максимальным # и минимальным значениями окна, окно шириной 4,
# c лагом 1
data['rolling_diff4_max_min'] = data['sales'].shift(periods=1).rolling(
window=4, min_periods=1).apply(lambda x: max(x) - min(x))
# вручную считаем скользящие разности между последним и# первым значениями окна, окно шириной 4, с лагом 1
data['rolling_diff4_last_frst'] = data['sales'].shift(periods=1).rolling(
window=4, min_periods=1).apply(lambda x: x.iloc[-1] - x.iloc[0])
Ну и куда без подводных камней. Последняя разность между максимальным и минимальным значениями в тестовой части всегда будет равна 0, обычно нулевое значение заменяют последней разностью между максимальным и минимальным значениями в обучающей части. Разности между последним и первым значениями в тестовой части получат пропуски, обычно их заменяют нулями. Разности применяйте для градиентных бустингов. Они либо не работают вовсе, либо работают очень хорошо, резко улучшая качество модели. Я использую их в работе, они хорошо работали вот в этом соревновании https://www.kaggle.com/competitions/store-sales-time-series-forecasting/overview. В книге по рядам подробнее покажу примеры использования.Kaggle
Store Sales - Time Series Forecasting
Use machine learning to predict grocery sales
Forwarded from Дмитрий Колодезев
http://ceur-ws.org/Vol-2135/SEIM_2018_paper_30.pdf обзор до-бертовских подходов. и я бы попробовал RAKE для начала, что-то типа https://github.com/vgrabovets/multi_rake (не обязательно его, он руками пишется нетрудно)
Чтобы было, с чем сравнивать KeyBERT
Чтобы было, с чем сравнивать KeyBERT
Forwarded from Dmitrii
По пункту 3 в копилочку. По мотивам книги Advances in Financial Machine Learning.
GitHub
GitHub - BlackArbsCEO/Adv_Fin_ML_Exercises: Experimental solutions to selected exercises from the book [Advances in Financial Machine…
Experimental solutions to selected exercises from the book [Advances in Financial Machine Learning by Marcos Lopez De Prado] - BlackArbsCEO/Adv_Fin_ML_Exercises
Forwarded from Кодим на Коленке | Уроки по программированию
Forwarded from ИЦ "ГЕВИССТА"
Часть_3_17_3_Комбинирование_нескольких_методов_для_отбора_признаков.ipynb
1.2 MB
Из предстоящей книги по предварительной подготовке данных
Часть 3_17.3._Комбинирование нескольких методов для отбора признаков (задача Porto Seguro’s Safe Driver Prediction с Kaggle)
Часть 3_17.3._Комбинирование нескольких методов для отбора признаков (задача Porto Seguro’s Safe Driver Prediction с Kaggle)
Forwarded from See All
Крч, кто не в теме - это американский хакер, ставший известным благодаря снятию блокировки со смартфона iPhone, что позволило использовать его с другими операторами сотовой связи кроме AT&T. Кроме того известен взломом Sony PlayStation 3 и последовавшим после этого судебным иском со стороны компании Sony.
Сейчас последние 2-3 мес он пишет свой бэкэнд для нейронок на питоне (все на гите в опенсорсе). В этом есть две ценности, на мой взгляд, которые будут полезны людям, у которых <5 лет опыта в индустрии:
1) он крепкий SWE, а не MLE, поэтому он сначала продумывает до мелочей дизайн, интерфейсы, все до идеала просчитывает, и свои мысли описывает. Есть чему поучиться
2) он крепкий SWE, и стоит поучитсья у него дебагу, написаню тестов и тому, как он решает проблемы. Этот человек в топ-1% по навыкам кодинга стопроц, скорее даже 0.01%, и при этом он делает то, что я часто не вижу у людей в слаках/тг/у стажеров. Он видит ошибку И СРАЗУ ЕЕ ГУГЛИТ, НЕ СТЕСНЯЯСЬ. И, внезапно, находит решение. Я хз, почему люди это не делают, мб думают что умные и сами разберутся, но видя то, как другие решают проблемы, мб это уйдет.
Всем очень рекомендую посомтреть хотя бы 2-3 часа, и потом понять для себя, будет ли полезно;
Видосы можно найти тут https://www.youtube.com/c/georgehotzarchive/videos
Сейчас последние 2-3 мес он пишет свой бэкэнд для нейронок на питоне (все на гите в опенсорсе). В этом есть две ценности, на мой взгляд, которые будут полезны людям, у которых <5 лет опыта в индустрии:
1) он крепкий SWE, а не MLE, поэтому он сначала продумывает до мелочей дизайн, интерфейсы, все до идеала просчитывает, и свои мысли описывает. Есть чему поучиться
2) он крепкий SWE, и стоит поучитсья у него дебагу, написаню тестов и тому, как он решает проблемы. Этот человек в топ-1% по навыкам кодинга стопроц, скорее даже 0.01%, и при этом он делает то, что я часто не вижу у людей в слаках/тг/у стажеров. Он видит ошибку И СРАЗУ ЕЕ ГУГЛИТ, НЕ СТЕСНЯЯСЬ. И, внезапно, находит решение. Я хз, почему люди это не делают, мб думают что умные и сами разберутся, но видя то, как другие решают проблемы, мб это уйдет.
Всем очень рекомендую посомтреть хотя бы 2-3 часа, и потом понять для себя, будет ли полезно;
Видосы можно найти тут https://www.youtube.com/c/georgehotzarchive/videos