🔥4
#fun #music #rammstein #programming
Что общего у Тилля с программированием?
https://www.youtube.com/watch?v=m1Gl1CeEQKY
Что общего у Тилля с программированием?
https://www.youtube.com/watch?v=m1Gl1CeEQKY
🔥1
Forwarded from asisakov
Дождались
Наконец-то выложили видео с моим выступлением на датафесте!
Все прошло очень круто, тем более в этот день конференция проходила в гостях у Яндекса и по классике все было очень приятно.
Единственная проблема была вызвана ощущуением конкуренции с треком по LLMкам, который проходил параллельно нашим активностям, но мои переживания были напрасны. Ребята настолько задолбались слушать про RAGи, что как раз на мое выступление подошло достаточно большое количество людей, которые при этом были сильно вовлечены. Это было очень приятно, что все-таки временные ряды важны не только узкому числу людей. После выступления также небольшое время мы с ребятами общались про нюансы подготовки признаков и применения моделей.
С этого момента прошло достаточно много времени, поэтому я решил, что будет полезно с этим ознакомиться и в печатном виде, и поэтому мы с коллегами готовим статью на Хабре. Как только опубликуем, также поделюсь ссылкой.
Кстати, вот ссылка на видео: https://www.youtube.com/watch?v=lL9Dimm5UuE
#life #ml #timeseries
Наконец-то выложили видео с моим выступлением на датафесте!
Все прошло очень круто, тем более в этот день конференция проходила в гостях у Яндекса и по классике все было очень приятно.
Единственная проблема была вызвана ощущуением конкуренции с треком по LLMкам, который проходил параллельно нашим активностям, но мои переживания были напрасны. Ребята настолько задолбались слушать про RAGи, что как раз на мое выступление подошло достаточно большое количество людей, которые при этом были сильно вовлечены. Это было очень приятно, что все-таки временные ряды важны не только узкому числу людей. После выступления также небольшое время мы с ребятами общались про нюансы подготовки признаков и применения моделей.
С этого момента прошло достаточно много времени, поэтому я решил, что будет полезно с этим ознакомиться и в печатном виде, и поэтому мы с коллегами готовим статью на Хабре. Как только опубликуем, также поделюсь ссылкой.
Кстати, вот ссылка на видео: https://www.youtube.com/watch?v=lL9Dimm5UuE
#life #ml #timeseries
YouTube
Александр Исаков | Краткосрочное прогнозирование заказов для создания курьерских слотов на лавках
Спикер: Александр Исаков, аналитик-разработчик, Яндекс Лавка
Data Fest 2024: https://ods.ai/events/datafest2024
Презентацию к докладу Вы можете скачать в треке секции Time Series: https://ods.ai/tracks/df24-time-series
______
Наши соц.сети:
Telegram: ht…
Data Fest 2024: https://ods.ai/events/datafest2024
Презентацию к докладу Вы можете скачать в треке секции Time Series: https://ods.ai/tracks/df24-time-series
______
Наши соц.сети:
Telegram: ht…
👍3✍1🔥1
#law #google
"В центре скандала оказалось действующее с 2002 года эксклюзивное соглашение между Apple и Google, в рамках которого поисковая система Google Search является на всех устройствах Apple для пользователей по всему миру поисковиком по умолчанию, что приносило и той и другой компании доходы, исчисляемые миллиардами долларов. Google выплачивала Apple как партнёру часть дохода от своей поисковой рекламы. Только за 2022 год Google выплатила Apple 20 млрд долларов, сообщает Financial Times, ссылаясь на приведённые факты в судебном решении.
Окружной судья Амит Мехта (Amit Mehta) признал Google виновной в нарушении антимонопольного законодательства, что ставит под вопрос партнёрское соглашение об установлении Google на устройствах Apple в качестве основного поисковика.
Google намерена обжаловать решение суда, хотя аналитики считают, что шансы на положительный пересмотр малы. В зависимости от окончательного вердикта, касающегося нарушения антимонопольного законодательства Google, Apple может быть «вынуждена согласиться на гораздо менее выгодное соглашение с Microsoft [поисковая система Bing] или может быть вообще лишена возможности устанавливать поисковые системы по умолчанию», — считает независимый аналитик Эрик Сеуферт (Eric Seufert)."
https://3dnews.ru/1109138/v-apple-zayavili-chto-alternativi-poisku-google-net
"В центре скандала оказалось действующее с 2002 года эксклюзивное соглашение между Apple и Google, в рамках которого поисковая система Google Search является на всех устройствах Apple для пользователей по всему миру поисковиком по умолчанию, что приносило и той и другой компании доходы, исчисляемые миллиардами долларов. Google выплачивала Apple как партнёру часть дохода от своей поисковой рекламы. Только за 2022 год Google выплатила Apple 20 млрд долларов, сообщает Financial Times, ссылаясь на приведённые факты в судебном решении.
Окружной судья Амит Мехта (Amit Mehta) признал Google виновной в нарушении антимонопольного законодательства, что ставит под вопрос партнёрское соглашение об установлении Google на устройствах Apple в качестве основного поисковика.
Google намерена обжаловать решение суда, хотя аналитики считают, что шансы на положительный пересмотр малы. В зависимости от окончательного вердикта, касающегося нарушения антимонопольного законодательства Google, Apple может быть «вынуждена согласиться на гораздо менее выгодное соглашение с Microsoft [поисковая система Bing] или может быть вообще лишена возможности устанавливать поисковые системы по умолчанию», — считает независимый аналитик Эрик Сеуферт (Eric Seufert)."
https://3dnews.ru/1109138/v-apple-zayavili-chto-alternativi-poisku-google-net
3DNews - Daily Digital Digest
Apple признала, что альтернативы поиску Google сейчас нет
Историческое решение суда по делу о нарушении антимонопольного законодательства со стороны Google, вынесенное в понедельник в США, ставит под угрозу одно из самых долгосрочных партнёрств в сфере технологий и может обойтись для Apple потерей миллиардов долларов.
❤1
#gpt #openai
"До вычета сборов магазинов приложений Apple App Store и Google Play, приложение ChatGPT заработало 28,9 млн долларов в мае, 34 млн долларов в июне и 39,9 млн долларов в июле. Интересно, что 83 % выручки приложения пришлось на App Store от Apple, что на 20 % больше по сравнению с июнем.
По информации Appfigures, спрос на новую технологию способствовал росту выручки приложения на 40 % в мае, и хотя темпы роста немного замедлились, доходы продолжают расти стабильно. В результате, в июле ChatGPT удалось привлечь 2 миллиона новых платных подписчиков, что стало очередным рекордом для мобильного приложения.
В OpenAI ожидают, что с внедрением нового расширенного голосового режима, который сможет обеспечить реалистичное взаимодействие практически в реальном времени, интерес к GPT-4o будет только увеличиваться, соответственно рост доходов продолжится в ближайшие месяцы."
https://3dnews.ru/1109146/mobilnoe-prilogenie-chatgpt-blagodarya-versii-omni-zafiksirovalo-rekordnuyu-viruchku
"До вычета сборов магазинов приложений Apple App Store и Google Play, приложение ChatGPT заработало 28,9 млн долларов в мае, 34 млн долларов в июне и 39,9 млн долларов в июле. Интересно, что 83 % выручки приложения пришлось на App Store от Apple, что на 20 % больше по сравнению с июнем.
По информации Appfigures, спрос на новую технологию способствовал росту выручки приложения на 40 % в мае, и хотя темпы роста немного замедлились, доходы продолжают расти стабильно. В результате, в июле ChatGPT удалось привлечь 2 миллиона новых платных подписчиков, что стало очередным рекордом для мобильного приложения.
В OpenAI ожидают, что с внедрением нового расширенного голосового режима, который сможет обеспечить реалистичное взаимодействие практически в реальном времени, интерес к GPT-4o будет только увеличиваться, соответственно рост доходов продолжится в ближайшие месяцы."
https://3dnews.ru/1109146/mobilnoe-prilogenie-chatgpt-blagodarya-versii-omni-zafiksirovalo-rekordnuyu-viruchku
3DNews - Daily Digital Digest
Мобильное приложение ChatGPT благодаря GPT-4o очень быстро наращивает выручку
Мобильное приложение ChatGPT от компании OpenAI установило новый рекорд по доходам.
#sklearn #dataframes
Оказывается, есть инициатива унификации библиотек работы с датафреймами. И её поддерживают в sklearn.
"Enhancement All estimators now recognizes the column names from any dataframe that adopts the DataFrame Interchange Protocol. Dataframes that return a correct representation through np.asarray(df) is expected to work with our estimators and functions."
"Python users today have a number of great choices for dataframe libraries. From Pandas and cuDF to Vaex, Koalas, Modin, Ibis, and more. Combining multiple types of dataframes in a larger application or analysis workflow, or developing a library which uses dataframes as a data structure, presents a challenge though. Those libraries all have different APIs, and there is no standard way of converting one type of dataframe into another."
Похожая идея с использованием массивов Array API:
"Python users have a wealth of choice for libraries and frameworks for numerical computing, data science, machine learning, and deep learning. New frameworks pushing forward the state of the art in these fields are appearing every year. One unintended consequence of all this activity and creativity has been fragmentation in multidimensional array (a.k.a. tensor) libraries - which are the fundamental data structure for these fields. Choices include NumPy, Tensorflow, PyTorch, Dask, JAX, CuPy, MXNet, Xarray, and others.
The APIs of each of these libraries are largely similar, but with enough differences that it’s quite difficult to write code that works with multiple (or all) of these libraries. This array API standard aims to address that issue, by specifying an API for the most common ways arrays are constructed and used.
Why not simply pick an existing API and bless that as the standard?"
Оказывается, есть инициатива унификации библиотек работы с датафреймами. И её поддерживают в sklearn.
"Enhancement All estimators now recognizes the column names from any dataframe that adopts the DataFrame Interchange Protocol. Dataframes that return a correct representation through np.asarray(df) is expected to work with our estimators and functions."
"Python users today have a number of great choices for dataframe libraries. From Pandas and cuDF to Vaex, Koalas, Modin, Ibis, and more. Combining multiple types of dataframes in a larger application or analysis workflow, or developing a library which uses dataframes as a data structure, presents a challenge though. Those libraries all have different APIs, and there is no standard way of converting one type of dataframe into another."
Похожая идея с использованием массивов Array API:
"Python users have a wealth of choice for libraries and frameworks for numerical computing, data science, machine learning, and deep learning. New frameworks pushing forward the state of the art in these fields are appearing every year. One unintended consequence of all this activity and creativity has been fragmentation in multidimensional array (a.k.a. tensor) libraries - which are the fundamental data structure for these fields. Choices include NumPy, Tensorflow, PyTorch, Dask, JAX, CuPy, MXNet, Xarray, and others.
The APIs of each of these libraries are largely similar, but with enough differences that it’s quite difficult to write code that works with multiple (or all) of these libraries. This array API standard aims to address that issue, by specifying an API for the most common ways arrays are constructed and used.
Why not simply pick an existing API and bless that as the standard?"
❤1⚡1
#sklearn #cupy
Вот пример выполнения LDA на GPU с применением этого экспериментального Array API.
А еще теперь можно напрямую работать с тензорами Pytorch:
Пока далеко не все модули это поддерживают, но сама идея чудесная.
https://scikit-learn.org/stable/modules/array_api.html#array-api
Вот пример выполнения LDA на GPU с применением этого экспериментального Array API.
from sklearn.datasets import make_classification
from sklearn import config_context
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import cupy
X_np, y_np = make_classification(random_state=0)
X_cu = cupy.asarray(X_np)
y_cu = cupy.asarray(y_np)
X_cu.device
with config_context(array_api_dispatch=True):
lda = LinearDiscriminantAnalysis()
X_trans = lda.fit_transform(X_cu, y_cu)
X_trans.device
А еще теперь можно напрямую работать с тензорами Pytorch:
import torch
X_torch = torch.asarray(X_np, device="cuda", dtype=torch.float32)
y_torch = torch.asarray(y_np, device="cuda", dtype=torch.float32)
with config_context(array_api_dispatch=True):
lda = LinearDiscriminantAnalysis()
X_trans = lda.fit_transform(X_torch, y_torch)
type(X_trans)
X_trans.device.type
Пока далеко не все модули это поддерживают, но сама идея чудесная.
https://scikit-learn.org/stable/modules/array_api.html#array-api
scikit-learn
11.1. Array API support (experimental)
The Array API specification defines a standard API for all array manipulation libraries with a NumPy-like API. Scikit-learn’s Array API support requires array-api-compat to be installed, and the en...
❤1
#boostings #mlgems
Подумал, жаль, что даже в лучших в современных библиотеках машинного обучения нет параметра timeout. В xgboost, catboost, lightgbm есть максимальное количество деревьев n_estimators, но вряд ли кому есть дело до точного количества деревьев в решении. Что на самом деле важно, так это максимальное время обучения модели, правда? Так почему бы не дать возможность его непосредственно задать параметром timeout?
Запостил feature requests. Мне, правда, указывают, что можно для этих целей приспособить коллбэк и отлавливать исключение, но в xgboost неясно, сохранится ли лучшая модель, если используется защита от оверфита. Да и гораздо удобнее, если такой простой параметр будет во всех либах без необходимости конструировать и тестировать свои коллбэки.
Если кто согласен с полезностью такой фичи, буду рад поддержке в гитхабовских ветках.
Подумал, жаль, что даже в лучших в современных библиотеках машинного обучения нет параметра timeout. В xgboost, catboost, lightgbm есть максимальное количество деревьев n_estimators, но вряд ли кому есть дело до точного количества деревьев в решении. Что на самом деле важно, так это максимальное время обучения модели, правда? Так почему бы не дать возможность его непосредственно задать параметром timeout?
Запостил feature requests. Мне, правда, указывают, что можно для этих целей приспособить коллбэк и отлавливать исключение, но в xgboost неясно, сохранится ли лучшая модель, если используется защита от оверфита. Да и гораздо удобнее, если такой простой параметр будет во всех либах без необходимости конструировать и тестировать свои коллбэки.
Если кто согласен с полезностью такой фичи, буду рад поддержке в гитхабовских ветках.
GitHub
Feature Request: add timeout parameter to the .fit() method · Issue #10684 · dmlc/xgboost
Adding the timeout parameter to the .fit() method, that should force the library to return best known solution found so far as soon as provided number of seconds since the start of training are pas...
❤1👍1
#gpt #openai #dating
"Как сообщает OpenAI, опубликовавшая в четверг отчёт по поводу безопасности использования расширенного голосового режима (Advanced Voice Mode, AVM) для сервиса ChatGPT, ставшего доступным для небольшого количества подписчиков ChatGPT Plus, голос чат-бота ChatGPT в режиме AVM звучит очень реалистично. Чат-бот реагирует в реальном времени, может подстраиваться под прерывание, воспроизводит звуки, которые люди издают во время разговора, например, посмеивается или хмыкает. Он также может судить об эмоциональном состоянии собеседника по тону его голоса.
После того, как OpenAI анонсировала эту функцию у мультимодальной модели генеративного ИИ GPT-4o, её начали сравнивать с цифровым помощником ИИ из вышедшего в 2013 году фильма «Она», в которого влюбляется главный герой.
Видимо у OpenAI вызывает опасения то, что вымышленная история оказалась близкой к реальности, после наблюдения за пользователями, которые разговаривают с ChatGPT в голосовом режиме на языке, «выражающем общие связи» с инструментом общения.
В итоге «пользователи могут формировать социальные отношения с ИИ, снижая свою потребность в человеческом взаимодействии — потенциально принося пользу одиноким людям, но, возможно, влияя на здоровые отношения», отметила OpenAI. В отчёте также указано, что получение информации от бота в голосовом режиме, звучащем как голос человека, может вызвать у пользователя больше доверия, чем следовало бы, учитывая склонность ИИ ошибаться."
https://3dnews.ru/1109278/openai-obshchenie-s-chatgpt-v-novom-golosovom-regime-moget-vizvat-u-polzovateley-privyazannost-k-chatbotu
"Как сообщает OpenAI, опубликовавшая в четверг отчёт по поводу безопасности использования расширенного голосового режима (Advanced Voice Mode, AVM) для сервиса ChatGPT, ставшего доступным для небольшого количества подписчиков ChatGPT Plus, голос чат-бота ChatGPT в режиме AVM звучит очень реалистично. Чат-бот реагирует в реальном времени, может подстраиваться под прерывание, воспроизводит звуки, которые люди издают во время разговора, например, посмеивается или хмыкает. Он также может судить об эмоциональном состоянии собеседника по тону его голоса.
После того, как OpenAI анонсировала эту функцию у мультимодальной модели генеративного ИИ GPT-4o, её начали сравнивать с цифровым помощником ИИ из вышедшего в 2013 году фильма «Она», в которого влюбляется главный герой.
Видимо у OpenAI вызывает опасения то, что вымышленная история оказалась близкой к реальности, после наблюдения за пользователями, которые разговаривают с ChatGPT в голосовом режиме на языке, «выражающем общие связи» с инструментом общения.
В итоге «пользователи могут формировать социальные отношения с ИИ, снижая свою потребность в человеческом взаимодействии — потенциально принося пользу одиноким людям, но, возможно, влияя на здоровые отношения», отметила OpenAI. В отчёте также указано, что получение информации от бота в голосовом режиме, звучащем как голос человека, может вызвать у пользователя больше доверия, чем следовало бы, учитывая склонность ИИ ошибаться."
https://3dnews.ru/1109278/openai-obshchenie-s-chatgpt-v-novom-golosovom-regime-moget-vizvat-u-polzovateley-privyazannost-k-chatbotu
3DNews - Daily Digital Digest
OpenAI забеспокоилась об отношениях людей с ChatGPT в новом голосовом режиме
Общение с ИИ-чат-ботом ChatGPT в новом голосовом режиме, когда его голос ничем не отличается от человеческого, может привести к появлению у пользователя зависимости от взаимодействия с ИИ, пишет ресурс CNN со ссылкой на отчёт OpenAI.
❤1
#sklearn
Продолжаем обзор новых интересных фичей, добавленных в sklearn за последние пар лет.
С версии 1.3 там есть TargetEncoder, т.е. можно по идее не тянуть в проект category_encoders. Сравнение с CE бы не помешало.
https://scikit-learn.org/stable/auto_examples/preprocessing/plot_target_encoder.html#sphx-glr-auto-examples-preprocessing-plot-target-encoder-py
Продолжаем обзор новых интересных фичей, добавленных в sklearn за последние пар лет.
С версии 1.3 там есть TargetEncoder, т.е. можно по идее не тянуть в проект category_encoders. Сравнение с CE бы не помешало.
https://scikit-learn.org/stable/auto_examples/preprocessing/plot_target_encoder.html#sphx-glr-auto-examples-preprocessing-plot-target-encoder-py
scikit-learn
Comparing Target Encoder with Other Encoders
The TargetEncoder uses the value of the target to encode each categorical feature. In this example, we will compare three different approaches for handling categorical features: TargetEncoder, Ordi...
#sklearn
StackingRegressor/StackingClassifier. Можно самому не реализовывать стекинг,а взять готовый. Вопрос только в том, что не видно способа передавать fit_params,и, как следствие, валидационное множество для контроля переобучения. Зная подход авторов sklearn, я не удивлён такой лажей (хотя, возможно, это поддерживается через set_request?).
StackingRegressor/StackingClassifier. Можно самому не реализовывать стекинг,а взять готовый. Вопрос только в том, что не видно способа передавать fit_params,и, как следствие, валидационное множество для контроля переобучения. Зная подход авторов sklearn, я не удивлён такой лажей (хотя, возможно, это поддерживается через set_request?).
🤯1
#sklearn
TunedThresholdClassifierCV - тюнить порог решения классификатора теперь (с версии 1.5) можно элегантно. Открывает путь к удобному cost-sensitive learning.
"Classifier that post-tunes the decision threshold using cross-validation.
This estimator post-tunes the decision threshold (cut-off point) that is used for converting posterior probability estimates (i.e. output of predict_proba) or decision scores (i.e. output of decision_function) into a class label. The tuning is done by optimizing a binary metric, potentially constrained by a another metric."
Трейдерам на заметку: отличный пример, как использовать metadata routing, чтобы передать модели дополнительные параметры (здесь это величина транзакции в задаче обнаружения фрода).
TunedThresholdClassifierCV - тюнить порог решения классификатора теперь (с версии 1.5) можно элегантно. Открывает путь к удобному cost-sensitive learning.
"Classifier that post-tunes the decision threshold using cross-validation.
This estimator post-tunes the decision threshold (cut-off point) that is used for converting posterior probability estimates (i.e. output of predict_proba) or decision scores (i.e. output of decision_function) into a class label. The tuning is done by optimizing a binary metric, potentially constrained by a another metric."
from sklearn.model_selection import TunedThresholdClassifierCV
tuned_model = TunedThresholdClassifierCV(
estimator=model,
scoring=scoring["cost_gain"],
store_cv_results=True, # necessary to inspect all results
)
tuned_model.fit(X_train, y_train)
print(f"{tuned_model.best_threshold_=:0.2f}")
tuned_model.best_threshold_=0.02
Трейдерам на заметку: отличный пример, как использовать metadata routing, чтобы передать модели дополнительные параметры (здесь это величина транзакции в задаче обнаружения фрода).
👍1
#sklearn
Большой новый раздел, который я давно видел, но не вникал - роутинг метаданных. Видимо, с его помощью как раз можно передать валидационное множество объекту StackingClassifier, хотя там и нет такого явного параметра.
В примере ниже веса для скорера и для модельки передаются механизмом роутинга с более высокого уровня кросс-валидации. Удобно, что можно подписать разные компоненты на одни и те же метаданные, и всё это без parameters hell и всяких вложенных двойных подчёркиваний. Кажется очень перспективной новинкой, и придётся учитывать при разработке своих кастомных модулей, совместимых с sklearn.
Большой новый раздел, который я давно видел, но не вникал - роутинг метаданных. Видимо, с его помощью как раз можно передать валидационное множество объекту StackingClassifier, хотя там и нет такого явного параметра.
В примере ниже веса для скорера и для модельки передаются механизмом роутинга с более высокого уровня кросс-валидации. Удобно, что можно подписать разные компоненты на одни и те же метаданные, и всё это без parameters hell и всяких вложенных двойных подчёркиваний. Кажется очень перспективной новинкой, и придётся учитывать при разработке своих кастомных модулей, совместимых с sklearn.
weighted_acc = make_scorer(accuracy_score).set_score_request(
sample_weight="scoring_weight"
)
lr = LogisticRegressionCV(
cv=GroupKFold(), scoring=weighted_acc,
).set_fit_request(sample_weight="fitting_weight")
cv_results = cross_validate(
lr,
X,
y,
cv=GroupKFold(),
params={
"scoring_weight": my_weights,
"fitting_weight": my_other_weights,
"groups": my_groups,
},
scoring=weighted_acc,
)
scikit-learn
4. Metadata Routing
This guide demonstrates how metadata can be routed and passed between objects in scikit-learn. If you are developing a scikit-learn compatible estimator or meta-estimator, you can check our related...
#sklearn
GradientBoostingClassifier/HistGradientBoostingClassifier - реализация градиентного бустинга над деревьями, конкурент xgboost, lightgbm, catboost.
Смех смехом, а поддерживает автодетекцию категориальных признаков, чего команда катбуст не в силах сделать уже многие годы.
Также поддерживает раннюю остановку и validation_fraction - автосоздание валидационного множества, чего не могут сделать уже xgboost и lightgbm.
Завезены ограничения монотонности. Не завезена поддержка GPU.
GradientBoostingClassifier/HistGradientBoostingClassifier - реализация градиентного бустинга над деревьями, конкурент xgboost, lightgbm, catboost.
Смех смехом, а поддерживает автодетекцию категориальных признаков, чего команда катбуст не в силах сделать уже многие годы.
Также поддерживает раннюю остановку и validation_fraction - автосоздание валидационного множества, чего не могут сделать уже xgboost и lightgbm.
Завезены ограничения монотонности. Не завезена поддержка GPU.
✍1
#sklearn
set_output в схожей с set_request манере позволяет задать тип выходных данных компонента - массив numpy, фрейм pandas или polars. можно вызывать глобально, на уровне компонента и метакомпонента.
set_output в схожей с set_request манере позволяет задать тип выходных данных компонента - массив numpy, фрейм pandas или polars. можно вызывать глобально, на уровне компонента и метакомпонента.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().set_output(transform="pandas")
scaler.fit(X_train)
X_test_scaled = scaler.transform(X_test)
X_test_scaled.head()
scikit-learn
Introducing the set_output API
This example will demonstrate the set_output API to configure transformers to output pandas DataFrames. set_output can be configured per estimator by calling the set_output method or globally by se...
#aws #cloud
Повод подумать о достижимом эффекте+краткий обзор высокоуровневых ML-решений в AWS.
https://www.youtube.com/watch?v=l37J0pTWX9Q
Повод подумать о достижимом эффекте+краткий обзор высокоуровневых ML-решений в AWS.
https://www.youtube.com/watch?v=l37J0pTWX9Q
YouTube
Оценка эффекта от внедрения AI/ML решений
Главная сложность при решении бизнес-проблем с применением машинного обучения – это заранее понять, каким будет результат и будет ли решение успешным. В этом докладе мы обсудим как измерить эффект от внедрения ML и как убедиться, что результат соответствует…
#news #hpt #hpo #mbho #transferlearning #pmbho
Начинаю работу над одним из самых амбициозных своих ML проектов - оптимизатором гиперпараметров, основанном на моделях (PMBHO, Persistent Model Based Heuristic Optimizer).
Это следующий шаг в цепочке GridSearch->RandomSearch->HalvingRandomSearch->BayesianSearch.
BayesianSearch используется в оптимизаторах вроде optuna и hyperopt, которые вроде как считаются сейчас state of the art. На самом деле от Байесовского подхода там немного, по сути это скорее оптимизация "одноруких бандитов" поверх простенькой суррогатной модели, как правило, ГП - гауссова процесса (т.к. он позволяет учитывать неопределённость).
Недостатки BayesianSearch:
1) ГП откровенно слабоват как модель, часто бывает трудно подобрать подходящее ядро
2) не всё гладко с категорийками
3) никак не учитывается природа и структура данных - признаков и таргета
4) никак не учитываются знания, полученные при работе с другими датасетами
5) это уже недостаток конкретных реализаций - современные библиотеки подбора гиперпараметров обычно ни хрена не знают, какие собственно гиперпараметры есть у каких классов моделей. обычно юзеры сами задают поисковые пространства для 5-10 HP (при том что у современных бустингов их десятки)
6) библиотеки никак не отрабатывают конфликты гиперпараметров - юзерам предлагается разруливать всё вручную, из-за чего все и забивают на большинство HP и ограничиваются 5-6 самыми неконфликтными.
7) почти все известные мне оптимизаторы за оптимальный набор HP считают ту единственную точку в пространстве поиска, что достигает экстремума по нужной ML-метрике на CV. При этом никак не учитывается устойчивость в близких областях, что приводит к катастрофам на OOS (Out-of-Sample).
В результате десятки тысяч дата-сайентистов по всему миру для каждого нового проекта молотят сотни тысяч комбинаций гиперпараметров "каждый раз как в первый раз". There... There must be a better way! )
Гипотеза: есть мнение, что по некоторым базовым статистикам признаков и таргета (и их связей) уже можно определить перспективные наборы гиперпараметров.
А обучив несколько неглубоких моделек с фиксированными HP (назовём их "золотой стандарт") и изучив производные от их атрибутов (важностей признаков, кривых обучения и валидации по набору ML метрик), можно существенно повысить точность рекомендаций практически в реальном времени.
Решение: свой оптимизатор, основанный на принципе exploration-exploitation и на ранжировании кандидатов с помощью мета-модели, натренированной на разных датасетах и богатом наборе мета-данных. Периодически по мере проверки кандидатов на конкретной задаче можно основную модель подстраивать/файнтюнить (брать основной датасет с обычными весами+подмешивать актуальный датасет с большими весами). Оптимизатор интеллектуальный и будет учитывать значения и гладкость МЛ-метрик в ближайших окрестностях точек-кандидатов, знать, какие гиперпараметры есть у конкретного класса моделей и иметь таблицы конфликтов (например, будет знать, какие гиперпараметры недоступны на GPU).
В теории такой оптимизатор может быть эффективнее решений типа оптуны в разы. А может и не быть. При этом подход требует проведения огромного количества вычислений и экспериментов при подготовке мета-датасета, не говоря уже о программерской работе. Но, считаю, цель стоит усилий и риска.
Напомню, что у меня уже есть одномерный MBHO оптимизатор (сделанный для задачи #featureselection), и по результатам тестов мне удалось побить и оптуну, и гиперотпт, и эскаопт.
На самом деле, моя цель еще более амбициозная - в идеале я бы хотел для заданного датасета (сырые признаки+таргет+МЛ задача) быстро определять не только оптимальные классы МЛ моделей и их гиперпараметры, но и оптимальный препроцессинг (нейлинейные преобразования, PolynomialFeatures, сплайны, обработка категориальных входов, ядра, шкалирование, понижение размерности ) и трансформацию таргета (для задач регрессии). Пока неясно, можно ли эти 2 задачи эффективно увязать вместе.
Временные ряды в этой постановке - отдельная боль.
Как всегда, буду рад советам и конструктивной критике.
Начинаю работу над одним из самых амбициозных своих ML проектов - оптимизатором гиперпараметров, основанном на моделях (PMBHO, Persistent Model Based Heuristic Optimizer).
Это следующий шаг в цепочке GridSearch->RandomSearch->HalvingRandomSearch->BayesianSearch.
BayesianSearch используется в оптимизаторах вроде optuna и hyperopt, которые вроде как считаются сейчас state of the art. На самом деле от Байесовского подхода там немного, по сути это скорее оптимизация "одноруких бандитов" поверх простенькой суррогатной модели, как правило, ГП - гауссова процесса (т.к. он позволяет учитывать неопределённость).
Недостатки BayesianSearch:
1) ГП откровенно слабоват как модель, часто бывает трудно подобрать подходящее ядро
2) не всё гладко с категорийками
3) никак не учитывается природа и структура данных - признаков и таргета
4) никак не учитываются знания, полученные при работе с другими датасетами
5) это уже недостаток конкретных реализаций - современные библиотеки подбора гиперпараметров обычно ни хрена не знают, какие собственно гиперпараметры есть у каких классов моделей. обычно юзеры сами задают поисковые пространства для 5-10 HP (при том что у современных бустингов их десятки)
6) библиотеки никак не отрабатывают конфликты гиперпараметров - юзерам предлагается разруливать всё вручную, из-за чего все и забивают на большинство HP и ограничиваются 5-6 самыми неконфликтными.
7) почти все известные мне оптимизаторы за оптимальный набор HP считают ту единственную точку в пространстве поиска, что достигает экстремума по нужной ML-метрике на CV. При этом никак не учитывается устойчивость в близких областях, что приводит к катастрофам на OOS (Out-of-Sample).
В результате десятки тысяч дата-сайентистов по всему миру для каждого нового проекта молотят сотни тысяч комбинаций гиперпараметров "каждый раз как в первый раз". There... There must be a better way! )
Гипотеза: есть мнение, что по некоторым базовым статистикам признаков и таргета (и их связей) уже можно определить перспективные наборы гиперпараметров.
А обучив несколько неглубоких моделек с фиксированными HP (назовём их "золотой стандарт") и изучив производные от их атрибутов (важностей признаков, кривых обучения и валидации по набору ML метрик), можно существенно повысить точность рекомендаций практически в реальном времени.
Решение: свой оптимизатор, основанный на принципе exploration-exploitation и на ранжировании кандидатов с помощью мета-модели, натренированной на разных датасетах и богатом наборе мета-данных. Периодически по мере проверки кандидатов на конкретной задаче можно основную модель подстраивать/файнтюнить (брать основной датасет с обычными весами+подмешивать актуальный датасет с большими весами). Оптимизатор интеллектуальный и будет учитывать значения и гладкость МЛ-метрик в ближайших окрестностях точек-кандидатов, знать, какие гиперпараметры есть у конкретного класса моделей и иметь таблицы конфликтов (например, будет знать, какие гиперпараметры недоступны на GPU).
В теории такой оптимизатор может быть эффективнее решений типа оптуны в разы. А может и не быть. При этом подход требует проведения огромного количества вычислений и экспериментов при подготовке мета-датасета, не говоря уже о программерской работе. Но, считаю, цель стоит усилий и риска.
Напомню, что у меня уже есть одномерный MBHO оптимизатор (сделанный для задачи #featureselection), и по результатам тестов мне удалось побить и оптуну, и гиперотпт, и эскаопт.
На самом деле, моя цель еще более амбициозная - в идеале я бы хотел для заданного датасета (сырые признаки+таргет+МЛ задача) быстро определять не только оптимальные классы МЛ моделей и их гиперпараметры, но и оптимальный препроцессинг (нейлинейные преобразования, PolynomialFeatures, сплайны, обработка категориальных входов, ядра, шкалирование, понижение размерности ) и трансформацию таргета (для задач регрессии). Пока неясно, можно ли эти 2 задачи эффективно увязать вместе.
Временные ряды в этой постановке - отдельная боль.
Как всегда, буду рад советам и конструктивной критике.
⚡3🔥3