Итак, вы наконец-то разобрались с машинным обучением. Вы знаете, как создавать свои модели и определять разницу между контролируемым и неконтролируемым обучением, и если вы читаете эту статью, вы, вероятно, наткнулись на что-то под названием «Оценка силуэта» или «Коэффициент силуэта» при изучении алгоритмов кластеризации.
Что ж, в настоящее время реализовать алгоритмы машинного обучения не так уж сложно, как и их оценка. Начните с импорта метрик модуля scikit-learn. Самое лучшее в этом модуле то, что он имеет много других оценок, которые помогут вам проверить вашу работу, но давайте пока остановимся на вышеупомянутых оценках. Код следует ниже
from sklearn import metrics labels = kmeans.labels_ silhouette = metrics.silhouette_score(values, labels, metric='euclidean')
Давайте разберем элементы фрагмента кода выше:
- values:В общих чертах, цитируя документацию, это будет 'подобный массиву формы (n_samples_a, n_samples_a)',но большинство скорее всего, это будет ваш результирующий набор массивов после предварительной обработки и нормализации или стандартизации.
- метки:согласно документации, это «прогнозируемые метки для каждого образца». Эти упомянутые метки являются произведением 'y_pred = kmeans.fit_predict(values)', что означает, что они являются метками прогнозируемых значений y после применения метода K-средних.
- метрика. В этом случае мы используем евклидово расстояние для оценки нашей модели. Грубо говоря, евклидово расстояние — это длина отрезка между двумя точками.
Уравнение для расчета оценки силуэта:
Выглядит сложным? Ну не совсем. По крайней мере, это станет намного проще после того, как вы поймете концепцию евклидова расстояния.
Евклидово расстояние
Позвольте мне сделать небольшую остановку, потому что оценка силуэта все зависит от расстояния. На каком расстоянии друг от друга расположены элементы кластера? Как далеко кластер от других кластеров?
Возьмем, к примеру, иллюстрацию ниже:
Мы должны вычислить евклидовы расстояния между A и B, A и C, B и C… Вы поняли, верно?
Проверьте ниже пример для евклидова между A и B
После вычисления расстояния между всеми элементами, а затем найдите среднее расстояние, которое будет называться альфа (ɑ).
В качестве примера мы описываем процесс для элемента «А», а коэффициент, возвращаемый модулем метрик scikit-learn, представляет собой среднее значение всех расстояния всех евклидовых расстояний внутри кластера.
Теперь нам нужно beta(b), которое представляет собой расстояние между нашей ссылкой 'A' и ближайшим кластером. Опять же, модуль будет вычислять это для каждого элемента, но сейчас я просто хочу проиллюстрировать, как это делается.
Снова мы должны вычислить среднее расстояние между A и каждым из кластеров.
Как только это будет сделано, мы соберем наименьшее значение, то есть это ближайший кластер, и подставим его в уравнение. Помните формулу Silhoutte Score? Бета, Альфа, йада, йада, йада? Предположим, что значения, которые мы нашли для альфа и бета, составляют соответственно 0,96 и 1,31, уравнение будет выглядеть так:
Результат для этого будет 0,26.
Оценка силуэта всегда будет колебаться между -1 и 1, что означает следующее:
- 1: Чем ближе к 1, тем более выделены кластеры. значит правильно назначили
- 0: Несущественное расстояние между кластерами, расстояние незначительно.
- -1: кластеры были назначены неправильно
Что ж, надеюсь, вам понравилось чтение. Большое спасибо!