#hpt #hpo #optuna
Но, кстати, ситуация жизненная. Что делать-то, если test set недоступен, и возможностей проверить train/test skew нет, к примеру, это соревнование? Потратил такой кучу ресурсов, заоптимизировался на train/public. Вроде приложил усилия, сделал HPT, и на тебе, сюрприз. Хочу на этом тестовом примере изучить, что было бы, если за лучший сет брать не просто аргмакс от сырой метрики, а аргмакс от метрики, усреднённой по n ближайшим соседям.
Но, кстати, ситуация жизненная. Что делать-то, если test set недоступен, и возможностей проверить train/test skew нет, к примеру, это соревнование? Потратил такой кучу ресурсов, заоптимизировался на train/public. Вроде приложил усилия, сделал HPT, и на тебе, сюрприз. Хочу на этом тестовом примере изучить, что было бы, если за лучший сет брать не просто аргмакс от сырой метрики, а аргмакс от метрики, усреднённой по n ближайшим соседям.
❤🔥1
#optuna
Глубоко в недрах доки Оптуны, и почти случайно, я обнаружил, что у неё всё-такие есть нормальный интерфейс и можно у неё попросить все параметры сразу. Называется это define-and-run. Также, оказывается, не обязательно заворачивать всё в objective, можно использовать ask/tell чтобы гибко интегрировать её в существующие системы.
https://optuna.readthedocs.io/en/stable/tutorial/20_recipes/009_ask_and_tell.html#ask-and-tell
Глубоко в недрах доки Оптуны, и почти случайно, я обнаружил, что у неё всё-такие есть нормальный интерфейс и можно у неё попросить все параметры сразу. Называется это define-and-run. Также, оказывается, не обязательно заворачивать всё в objective, можно использовать ask/tell чтобы гибко интегрировать её в существующие системы.
https://optuna.readthedocs.io/en/stable/tutorial/20_recipes/009_ask_and_tell.html#ask-and-tell
#skopt
Преодолел сложности, запустил таки skopt. На моей задаче его forest_minimize и gbrt_minimize находят лучшие решения, чем TPE Optuna. Правда, работает уже не доли секунды, а 5-15 секунд. gp_minimize с ядром Матерна работает плохо. Но проблема ещё в том, что skopt очень много кандидатов выдаёт повторно, вместо того, чтобы исследовать новых. Возможно, проще сделать своё решение, чем разбираться и допиливать чужое.
Преодолел сложности, запустил таки skopt. На моей задаче его forest_minimize и gbrt_minimize находят лучшие решения, чем TPE Optuna. Правда, работает уже не доли секунды, а 5-15 секунд. gp_minimize с ядром Матерна работает плохо. Но проблема ещё в том, что skopt очень много кандидатов выдаёт повторно, вместо того, чтобы исследовать новых. Возможно, проще сделать своё решение, чем разбираться и допиливать чужое.
#hpt #hpo #optuna
ну хоть узнал про CMA-ES. Понравилась идея гибридного подхода, когда начинается проверка многих случайных комбинаций методом последовательного халвинга, потом в какой-то момент включается TPE.
Кстати, удивляет, что если в документации используется небрежный или неэффективный код, всё равно при демонстрациях, да и в практическом использовании подобную ересь все как попки копируют. В случае оптуны подобным кодом является загрузка и сплит датасета внутри objective. На кой эти дорогие задачи делать снова и снова на КАЖДОЙ итерации? И главное, человек при этом замеряет время исполнения... И нигде у него не ёкает.
Хах, а как он тестирует прунинг? Походу, совершенно не понимает, что это и как оно работает, там же должен быть partial_fit. И опять же, время выполнения у него с "прунингом" такое же, как и без, почему, вопросов у него не возникает даже. Доклад сделал, нормалёк, чё вам ещё надо?
https://www.youtube.com/watch?v=hboCNMhUb4g
ну хоть узнал про CMA-ES. Понравилась идея гибридного подхода, когда начинается проверка многих случайных комбинаций методом последовательного халвинга, потом в какой-то момент включается TPE.
Кстати, удивляет, что если в документации используется небрежный или неэффективный код, всё равно при демонстрациях, да и в практическом использовании подобную ересь все как попки копируют. В случае оптуны подобным кодом является загрузка и сплит датасета внутри objective. На кой эти дорогие задачи делать снова и снова на КАЖДОЙ итерации? И главное, человек при этом замеряет время исполнения... И нигде у него не ёкает.
Хах, а как он тестирует прунинг? Походу, совершенно не понимает, что это и как оно работает, там же должен быть partial_fit. И опять же, время выполнения у него с "прунингом" такое же, как и без, почему, вопросов у него не возникает даже. Доклад сделал, нормалёк, чё вам ещё надо?
https://www.youtube.com/watch?v=hboCNMhUb4g
YouTube
Practical Hyperparameter Optimisation
Any machine learning algorithm needs hyperparameters to define how the algorithm learns from your data and how the model looks like. These hyperparameters can have a large impact on how good the model learns from your data and how well it performs on data…
👍1
#pandas #optimization #bollocks
Пытаюсь выяснить, как передать большой фрейм пандас для чтения в другие процессы с помощью joblib без сериализации и копирования памяти. С массивом нумпай это сделать можно с помощью memmapping, пример есть в доке joblib, и это реально работает (память выделяется 1 раз, сериализации нет. правда, приходится один раз сдампить массив на диск). А вот с фреймом не прокатывает. Вроде оказывается, фрейм вообще нельзя инициализировать из общей памяти без копирования.
Набрёл на дискуссию, где человек приводит аргументы, что копирование излишне и вызывает пенальти к производительности. А 2 мудака-разраба пандас ему затирают про premature optimizaion. Cмотрю, у одного мудака знакомый ник. jreback. И вспоминаю, что это же существо из ядерных разрабов панадаса и мне когда-то давно писало про premature optimization, когда я спрашивал, почему какая-то операция была реализована без inplace (у меня была забита вся память и операция присваиванием просто не проходила).
Отсюда 2 вопроса:
1) кто знает техническое решение, напишите
2) почему подобные мудаки идут разрабатывать библиотеки для работы с данными, в том числе, большими данными? и потом херят все разумные начинания. так вот почему пандас такой сука медленный. вовсе не потому, что высокий уровень абстракции, гибкость. Просто разрабы - мудаки, которые под предлогом no premature optimization делают no optimization at all.
Пытаюсь выяснить, как передать большой фрейм пандас для чтения в другие процессы с помощью joblib без сериализации и копирования памяти. С массивом нумпай это сделать можно с помощью memmapping, пример есть в доке joblib, и это реально работает (память выделяется 1 раз, сериализации нет. правда, приходится один раз сдампить массив на диск). А вот с фреймом не прокатывает. Вроде оказывается, фрейм вообще нельзя инициализировать из общей памяти без копирования.
Набрёл на дискуссию, где человек приводит аргументы, что копирование излишне и вызывает пенальти к производительности. А 2 мудака-разраба пандас ему затирают про premature optimizaion. Cмотрю, у одного мудака знакомый ник. jreback. И вспоминаю, что это же существо из ядерных разрабов панадаса и мне когда-то давно писало про premature optimization, когда я спрашивал, почему какая-то операция была реализована без inplace (у меня была забита вся память и операция присваиванием просто не проходила).
Отсюда 2 вопроса:
1) кто знает техническое решение, напишите
2) почему подобные мудаки идут разрабатывать библиотеки для работы с данными, в том числе, большими данными? и потом херят все разумные начинания. так вот почему пандас такой сука медленный. вовсе не потому, что высокий уровень абстракции, гибкость. Просто разрабы - мудаки, которые под предлогом no premature optimization делают no optimization at all.
GitHub
No way to construct mixed dtype DataFrame without total copy, proposed solution · Issue #9216 · pandas-dev/pandas
After hours of tearing my hair, I've come to the conclusion that it is impossible to create a mixed dtype DataFrame without copying all of its data in. That is, no matter what you do, if you wa...
#catboost
Спустя почти полгода в катбусте признали и исправили ошибку, о которой зарепортил ещё в июле и которая не позволяла валидироваться на точность (precision) - согласитесь, это жизненно необходимо для многих задач. Что делать, смеяться или плакать? И это наши лучшие разработчики. Такая скорость реакции при том, что я это в катбустовый чат ещё написал, и они это видели. И мы с другим пользователем чата нашли прямо там причину.
Спустя почти полгода в катбусте признали и исправили ошибку, о которой зарепортил ещё в июле и которая не позволяла валидироваться на точность (precision) - согласитесь, это жизненно необходимо для многих задач. Что делать, смеяться или плакать? И это наши лучшие разработчики. Такая скорость реакции при том, что я это в катбустовый чат ещё написал, и они это видели. И мы с другим пользователем чата нашли прямо там причину.
GitHub
Precision calculation error in Early Stopping. Request to add pos_label. · Issue #2422 · catboost/catboost
Problem: catboost version: 1.2 Operating System: Win CPU: + GPU: + Я думаю, в коде catboost вычисляющем precision где-то перепутаны предсказания и истинные значения, поэтому ранняя остановка по точ...
😭2🤯1
#fantasy #zelazny #comics
Оказывается, есть классные комиксы по Хроникам Эмбера!
https://comiconlinefree.org/roger-zelazny-s-amber-nine-princes-in-amber/issue-1
Оказывается, есть классные комиксы по Хроникам Эмбера!
https://comiconlinefree.org/roger-zelazny-s-amber-nine-princes-in-amber/issue-1
#pandas #optimization #joblib #numpy #memmap
Хорошие новости! после экспериментов выяснилось, что в последних версиях joblib умеет дампить в общую память не просто отдельные массивы numpy, а (что не указано в доке) и целиком фреймы пандас!
И даже не обязательно прописывать операции вручную. Достаточно просто передать фрейм в конструктор Parallel joblib-a как параметр, и, если он больше max_nbytes, joblib его автоматически сдампит и правильно загрузит уже в рабочих процессах! Советую в качестве temp_folder указывать быстрый NVME SSD диск, типа Parallel(n_jobs=32,max_nbytes=0, temp_folder=r'R:\Temp' ). В моих тестах отработали по сути все базовые типы столбцов: int, float, datetime, categorical.
Единственное - проблема со сложными типами, вроде массива массивов numpy (итоговый тип object), такое не работает и включается обычная сериализация. Но этого желать было бы уж слишком нереалистично, я и так не могу себе представить, как удалось победить нерадивых программистов пандас, ведь раньше даже просто инитнуть фрейм с разнородными типами столбцов было невозможно без копирования.
Вывод: если у Вас не экзотические типы данных и есть nvme, большие фреймы в свежих версиях библиотек можно спокойно передавать как параметры, и они не буду побайтово сериализоваться, более того, RAM будет расходоваться в десятки раз экономнее.
Хорошие новости! после экспериментов выяснилось, что в последних версиях joblib умеет дампить в общую память не просто отдельные массивы numpy, а (что не указано в доке) и целиком фреймы пандас!
И даже не обязательно прописывать операции вручную. Достаточно просто передать фрейм в конструктор Parallel joblib-a как параметр, и, если он больше max_nbytes, joblib его автоматически сдампит и правильно загрузит уже в рабочих процессах! Советую в качестве temp_folder указывать быстрый NVME SSD диск, типа Parallel(n_jobs=32,max_nbytes=0, temp_folder=r'R:\Temp' ). В моих тестах отработали по сути все базовые типы столбцов: int, float, datetime, categorical.
Единственное - проблема со сложными типами, вроде массива массивов numpy (итоговый тип object), такое не работает и включается обычная сериализация. Но этого желать было бы уж слишком нереалистично, я и так не могу себе представить, как удалось победить нерадивых программистов пандас, ведь раньше даже просто инитнуть фрейм с разнородными типами столбцов было невозможно без копирования.
Вывод: если у Вас не экзотические типы данных и есть nvme, большие фреймы в свежих версиях библиотек можно спокойно передавать как параметры, и они не буду побайтово сериализоваться, более того, RAM будет расходоваться в десятки раз экономнее.
👍2
#trading #rl
Обзор различных направлений прикладного ML в трейдинге, на базе дипломных студентов колледжа. Познавательно. Некоторые весьма креативны.
Про hedonistic learning system, trading as dimensionality reduction забавно )
Ну и сам профессор отжигает. Кто из вас бы увязал в одном абзаце определение кибернетики, 2-й закон термодинамики, принцип неопределённости Гейзенберга, и дилемму смещение-разброс? А он смог, только фракталов не хватает для полного счастья )
https://www.youtube.com/watch?v=cih4rqTc_4w
Обзор различных направлений прикладного ML в трейдинге, на базе дипломных студентов колледжа. Познавательно. Некоторые весьма креативны.
Про hedonistic learning system, trading as dimensionality reduction забавно )
Ну и сам профессор отжигает. Кто из вас бы увязал в одном абзаце определение кибернетики, 2-й закон термодинамики, принцип неопределённости Гейзенберга, и дилемму смещение-разброс? А он смог, только фракталов не хватает для полного счастья )
https://www.youtube.com/watch?v=cih4rqTc_4w
YouTube
Machine Learning in Finance
Paul Bilokon, Imperial College London
September 30, 2021
September 30th, 2021
Fields-CFI Bootcamp on Machine Learning for Quantitative Finance
(http://www.fields.utoronto.ca/activities/21-22/finance-bootcamp)
September 30, 2021
September 30th, 2021
Fields-CFI Bootcamp on Machine Learning for Quantitative Finance
(http://www.fields.utoronto.ca/activities/21-22/finance-bootcamp)
Aspiring Data Science
#wisdom #thales
#musk #war
Илон на удивление хорошо разбирается в военной тактике.
По поводу военного конфликта в Газе, кажется, очень здравые идеи, лучше и не сказать. По поводу российско-украинской войны тоже с ним можно только согласиться, погибают люди на за что.
По поводу оценки вероятности акулы быть убитой ракетой - интересно. Оказывается, звуковые волны - афродизиаки для морских котиков ) Как этот котик потом объяснит своим друзьям, что произошло?!
https://www.youtube.com/watch?v=JN3KPFbWCy8
Илон на удивление хорошо разбирается в военной тактике.
По поводу военного конфликта в Газе, кажется, очень здравые идеи, лучше и не сказать. По поводу российско-украинской войны тоже с ним можно только согласиться, погибают люди на за что.
По поводу оценки вероятности акулы быть убитой ракетой - интересно. Оказывается, звуковые волны - афродизиаки для морских котиков ) Как этот котик потом объяснит своим друзьям, что произошло?!
https://www.youtube.com/watch?v=JN3KPFbWCy8
YouTube
Elon Musk: War, AI, Aliens, Politics, Physics, Video Games, and Humanity | Lex Fridman Podcast #400
Elon Musk is CEO of X, xAI, SpaceX, Tesla, Neuralink, and The Boring Company.
Thank you for listening ❤ Please support this podcast by checking out our sponsors:
- LMNT: https://drinkLMNT.com/lex to get free sample pack
- Eight Sleep: https://www.eightsleep.com/lex…
Thank you for listening ❤ Please support this podcast by checking out our sponsors:
- LMNT: https://drinkLMNT.com/lex to get free sample pack
- Eight Sleep: https://www.eightsleep.com/lex…
#featureselection #skopt
Результаты бенчмарка forest_minimize пакета skopt на задаче отбора признаков. Они непредставительны, т.к. из-за большого числа комбинаций параметров я использовал всего 10 повторов. Итого каждая комбинация отработала 10 раз на 8 задачах, 80 запусков - маловато для статзначимости. Но всё же, кажется, можно сделать вывод, что инциализация методом grid и lhs хороша, и если решите использовать леса в skopt, начинайте с RF-LCB-Grid. На вид казалось, что skopt находит лучшее решение чаще оптуны, но по цифрам это не так, для лучших комбинаций скор и там и там 76%. При этом оптуна работает в 50+ раз быстрее. А, в skopt было много дублей, так что он всё-таки будет точнее, если удастся победить дублирование.
Результаты бенчмарка forest_minimize пакета skopt на задаче отбора признаков. Они непредставительны, т.к. из-за большого числа комбинаций параметров я использовал всего 10 повторов. Итого каждая комбинация отработала 10 раз на 8 задачах, 80 запусков - маловато для статзначимости. Но всё же, кажется, можно сделать вывод, что инциализация методом grid и lhs хороша, и если решите использовать леса в skopt, начинайте с RF-LCB-Grid. На вид казалось, что skopt находит лучшее решение чаще оптуны, но по цифрам это не так, для лучших комбинаций скор и там и там 76%. При этом оптуна работает в 50+ раз быстрее. А, в skopt было много дублей, так что он всё-таки будет точнее, если удастся победить дублирование.
#featureselection #skopt
Ну и бенчи gbrt из skopt-a. Здесь меньше вариантов конфига, и сам сэмплинг работает быстрее лесов, так что получилось за примерно то же время (10 часов) потестить с 20 повторениями. grid инициализация опять себя хорошо показала. Осталось потестить гиперопт и собственную реализацию.
Ну и бенчи gbrt из skopt-a. Здесь меньше вариантов конфига, и сам сэмплинг работает быстрее лесов, так что получилось за примерно то же время (10 часов) потестить с 20 повторениями. grid инициализация опять себя хорошо показала. Осталось потестить гиперопт и собственную реализацию.