Рассмотрим один из передовых методов кластеризации - DBSCAN. Для многих исследователей эффективность метода зачастую компенсируется сложностью его настройки, из-за чего предпочтение отдается другим алгоритмам. Давайте внесем ясность в вопрос и упростим задачу использования DBSCAN.
В этой задаче библиотека scikit-learn нам не поможет, поэтому обратимся к SciPy. Для начала следует воспользоваться функцией linkage из scipy.cluster.hierarchy, которая и проведет процесс кластеризации (ранее я разбирал ее работу). В третьей колонке она возвращает дистанцию между объединяемыми кластерами (из первого и второго столбцов). На ее основании можно и задать предельный порог, после которого дистанция считается существенной и кластера перестают объединяться:
Рассмотрим, какие параметры имеет класс H2OGradientBoostingEstimator для решения задач машинного обучения, как обучать и тестировать модель. В качестве примера загрузим данные о заболеваемости раком через метод load_breast_cancer из sklearn (подробнее о получении датасетов с использованием библиотеки):
Рассмотрим пример построения дерева решений и работы модели на примере классификации цветков Ириса:
Ключам никогда не сообщают, какую дверь им предстоит открыть (Сергей Лукьяненко). Для оценки влияния признаков на модель машинного обучения следует использовать разные способы. Одним из ключевых является обучение модели на парах признаков и визуализация границ принятия решений. Конечно, хотелось бы подавать для этого все признаки, тем более, что именно так они включаются в итоговую модель (а не отдельными парами). Однако ввиду ограниченности человеческого восприятия приходится чем-то пренебрегать. В качестве демонстрационного примера посмотрим на границы логистической регрессии при классификации цветков Ириса:
Рассмотрим, как получить коэффициенты парной линейной регрессии, чтобы понять логику этой модели. Пусть наша формула предсказания цели через неизвестный x имеет следующий вид:
Для моделей машинного обучения методы диагностики влияния признаков на прогноз представляют исключительную важность.
Как я рассказывал ранее, использование класса np.random.RandomState для инициализации счетчика случайных чисел в моделях является предпочтительным для оценки качества. В то же время при сравнении результатов кросс-валидации моделей в сплиттер лучше вместо данного объекта передавать целый сид, иначе наборы фолдов будут отличаться между собой, поэтому и модели сравнивать не совсем корректно. Сгенерируем демонстрационный набор данных:
При предсказании редких явлений (например, природной катастрофы, орфанного заболевания) тренировочная выборка в большинстве случаев содержит перекос в сторону одного из классов. И правда, формируя датасет, найти людей небольных ВИЧ значительно проще. Соответственно, при обучении модели на таких "скошенных" данных редкие кейсы могут затеряться, а их особенности не получат достаточного внимания.
Единственная сила, способная умерять индивидуальный эгоизм, — это сила группы (Эмиль Дюркгейм). Создание выборок для временных рядов имеет свои особенности, связанные с тем, что в реальности предсказания по времени происходят позже обучения. Этот принцип надо соблюдать и при валидации моделей. Создадим демонстрационный набор данных: