Aspiring Data Science
372 subscribers
425 photos
11 videos
10 files
1.88K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#ml #applied #dyakonov #pzad

На 16:48 про генерацию некоррелирующих признаков MAD из двух видов средних подумалось провести мини-исследование: нагенерить много случайных 1d массивов с разным распределением, возможно, взять какие-то реальные датасеты, для них всех рассчитать все возможные комбинации таких средних и MAD, посмотреть, какие наиболее некоррелированы (в линейном смысле и смысле взаимной информации) с остальными того же датасета. Возможно, даже потестировать предсказательную силу таких фичей (если составить искусственные зависимости) по сравнению со случайной подвыборкой. Не знаю, можно ли тут ожидать вообще какого-то стабильного обобщения, но если такое вдруг обнаружится, это позволит в реальной работе быстро проверять экзотические "киллер фичи", до которых в конкретном проекте и руки бы не дошли.. Хм, тогда уже и комбинации математических операций полезные исследовать на 18:40.

https://www.youtube.com/watch?v=kOaMvRo2YPI
#ml #applied #dyakonov #pzad

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

https://youtu.be/zX7hzjVBqeM?list=PLaRUeIuewv8CMFox0oEjlyePUhUmo-x0h&t=151
3
#ml #applied #dyakonov #pzad #featureselection #permutationimportance #mid #pfi #boruta #ace

Artificial contrasts with ensembles - примечательный метод. Ещё интересна идея, что в обёрточных методах FS оценивать важность признаков надо не тем классом моделей, который будет в итоге обучаться для решения самой ML задачи.

https://www.youtube.com/watch?v=ZRa7-F5PvRk&list=PLaRUeIuewv8CMFox0oEjlyePUhUmo-x0h&index=28
#ml #randomforest #pzad #dyakonov #syntheticrf #tricks #mlgems #oof

Понравился совет, как определить n_estimators для лесов, и аргументация, почему его не надо тюнить с HPT.

Оказывается, подрезание деревьев снижает калибровку.

Крутой трюк с подбором порогов для выравнивания распределений в "целочисленной регрессии" (у С. Семёнова это вообще вылилось в подзадачу ML). Кстати, а почему нету лесов, которые могут выдавать медиану в листьях вместо среднего?

OOF-прогнозы - тоже интересная техника, особенно для генерации новых признаков.

https://www.youtube.com/watch?v=sAcjGjMHduc&list=PLaRUeIuewv8CMFox0oEjlyePUhUmo-x0h&
#featureengineering #dyakonov #pzad

Понравилось:

монотонное преобразование для порядковых признаков (напр, возведение в квадрат);

совет пересоздать признаки, даже если они уже посчитаны в оригинальных данных, сверить во избежание сюрпризов;

трюк с обратными признаками для линейных (только ли?) моделей;

Ordinal/LabelEncoding с индуцированным порядком (лексикографическим, по мере появления категории в датасете, по длине токена и пр);

вообще случайный порядок категорий, с многократным обучением одной и той же базовой модели;

кодирование мелких категорий в одну (сразу мысль, а нельзя ли это как-то улучшить с помощью теории информации? Что, если в категориальном признаке только некоторые уровни несут информацию о таргете, нельзя ли все остальные сплавить в "общую категорию бесполезных"?);

"Applied machine learning is basically feature engineering."
Andrew Ng

https://www.youtube.com/watch?v=QX6ZAhW9yQ8
#featureengineering #dyakonov #pzad

Понравилось:

Count Encoding+шум;

Киллер фича кодирования категориальных признаков другими категориальными, через crosstab+SVD;

Target Encoding как форма стекинга;

Target Encoding+мультипликативный шум;

"Экспертное кодирование";

Category Embeddings;

Расстояние (ядро) до какого-то "идеального"/"нормального" объекта как новая фича;

Линейная модель на признаках нелинейной модели (например, сплитах дерева, random forest-based feature induction);

Кодирование M циклических признаков (вместо последовательных возрастающих целочисленных номеров) в 2 новых вектора x,y как t=np.linspace(0,2*np.pi, M+1), x=np.sin(t), y=np.cos(t); -надо бы замутить какой-то CyclicEncoder, кстати.

https://www.youtube.com/watch?v=bTusKjEa4KE