Властелин машин
@dt_analytic
Всё о передовых инструментах исследования и трюках продуктивности, чтобы стать крутым аналитиком и специалистом по машинному обучению на Python.
424 posts
машинное обучение

Визуализация ошибок, как навигатор к скрытым проблемам модели

Визуализация — это язык, который позволяет нам видеть данные и понимать их смысл. Простой и эффективный способ диагностики результатов работы модели на различных объектах заключается в анализе разницы между прогнозами и целями. Он может показать, что в некоторых группах поведение модели имеет особенности (например, склонность к завышению или занижению прогнозов). Для демонстрации того, как строится такая визуализация загрузим набор данных:

Особенности работы с LLM нейросетями в части исправления ошибок в ответах

После релиза ChatGPT сверхпопулярным направлением стало создание промтов. Появилось много "экспертов", каждый из которых пытается предложить рецепт подходящего запроса. Пройдусь по одному из трендов - это расхожие фразы, которые призваны устранить логические ошибки .

DBSCAN для кластеризации и обнаружения аномалий

Рассмотрим один из передовых методов кластеризации - DBSCAN. Для многих исследователей эффективность метода зачастую компенсируется сложностью его настройки, из-за чего предпочтение отдается другим алгоритмам. Давайте внесем ясность в вопрос и упростим задачу использования DBSCAN.

Неочевидные способы подбора количества групп для агломеративной кластеризации

В этой задаче библиотека scikit-learn нам не поможет, поэтому обратимся к SciPy. Для начала следует воспользоваться функцией linkage из scipy.cluster.hierarchy, которая и проведет процесс кластеризации (ранее я разбирал ее работу). В третьей колонке она возвращает дистанцию между объединяемыми кластерами (из первого и второго столбцов). На ее основании можно и задать предельный порог, после которого дистанция считается существенной и кластера перестают объединяться:

Градиентный бустинг с библиотекой H2O

Рассмотрим, какие параметры имеет класс H2OGradientBoostingEstimator для решения задач машинного обучения, как обучать и тестировать модель. В качестве примера загрузим данные о заболеваемости раком через метод load_breast_cancer из sklearn (подробнее о получении датасетов с использованием библиотеки):

Функции sklearn, с которыми понимание работы дерева решений сильно облегчится 

Рассмотрим пример построения дерева решений и работы модели на примере классификации цветков Ириса:

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

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

Раскрываем суть регрессии через смысл коэффициентов

Рассмотрим, как получить коэффициенты парной линейной регрессии, чтобы понять логику этой модели. Пусть наша формула предсказания цели через неизвестный x имеет следующий вид:

Крутой способ оценки влияния признака на модель, о котором мало кто знает

Для моделей машинного обучения методы диагностики влияния признаков на прогноз представляют исключительную важность.

Корректное использование сида при сравнении моделей на кросс-валидации

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