Я собираюсь описать 4 шага для выполнения обучения без учителя.
(Что нужно учесть: исследование данных, предварительная обработка данных, PCA, k-means, t-SNE)
Кредит компании Udacity Machine Learning Nanodegree. (Я доработал несколько кода и инструкции проекта.)
Будет использован известный набор данных Iris.
Набор данных содержит 150 образцов, каждый с пятью атрибутами:
- длина чашелистика в см
- ширина чашелистика в см
- длина лепестка в см
- ширина лепестка в см
- класс: сетоса, разноцветный и вирджиника.
Чтобы проводить обучение без учителя, мы опустим ярлык класса. Мы также не будем разделять набор данных на данные обучения и данные тестирования, поскольку мы предполагаем, что у нас нет метки наземной истины, а точность данных тестирования не имеет смысла (мы не пытаемся делать прогнозы здесь)
Шаг 1. Анализ данных
Независимо от того, будете ли вы проводить обучение с учителем или без него, это всегда первый шаг.
Визуализация распределения функций поможет вам лучше понять данные.
Здесь следует отметить два момента:
- Распределение: «Ширина чашелистника» распределена нормально, «длина лепестка» и «ширина лепестка» соответствуют бимодальному распределению.
- Корреляция: можно увидеть положительную корреляцию между «sepal_length» и «petal_length», между «petal_length» и «petal_width». «Septal_length» и «petal_width» несколько положительно коррелируют, но это не ясно.
Мы можем подтвердить корреляцию с тепловой картой.
Наш вывод подтверждается.
Положительная корреляция (в порядке убывания) для 3 распределений:
- 0,96 для «petal_length» и «petal_width»
- 0,87 для «sepal_length» и «petal_length»
- 0,82 для «petal_width» и «sepal_length»
Шаг 2: предварительная обработка
Этот шаг может быть неинтересным, но он действительно важен, прежде чем настраивать какие-либо модели машинного обучения. Производительность моделей или стоимость вычислений будут сильно меняться в зависимости от того, как вы предварительно обрабатываете набор данных.
В этом руководстве мы нормализуем набор данных так, чтобы каждое распределение функций имело нулевое среднее значение и единичную дисперсию.
Шаг 3. Преобразование функции
На этом этапе мы увидим структуру данных и при необходимости преобразуем данные в соответствующий формат.
Один из полезных методов - PCA (анализ главных компонентов). Выполнение этого позволит нам уменьшить размерность данных. Например, если данные содержат 100 функций, выполнение PCA может уменьшить их количество до 30, что улавливает 90% общей дисперсии исходных данных путем поиска нового представления наборов данных.
Поскольку на первый и второй основные компоненты приходится 95% общей дисперсии, мы рассмотрим их.
- Первый компонент: этот компонент положительно коррелирует с «длиной лепестка», «длиной чашелистника» и «шириной чашелистника». Эти три переменные различаются вместе. Первый компонент можно рассматривать как меру количества «длины лепестка», «длины чашелистика» и «ширины чашелистника».
- Второй компонент: этот компонент имеет положительную корреляцию с «шириной лепестка». Этот компонент можно рассматривать как меру количества (длины) «ширины лепестка».
Теперь мы сократим данные четырех измерений до данных двух измерений с новым представлением, которое создается первым и вторым основными компонентами.
Шаг 4: кластеризация
Мы будем использовать кластеризацию K-средних, чтобы увидеть, существует ли какая-либо отдельная группа набора данных. Коэффициент силуэта (-1 ≤ диапазон ≤1) будет использоваться в качестве метрики для определения подходящего количества кластеров.
В результате два кластера кажутся лучшими в соответствии с используемой метрикой.
Что здесь происходит? В этом наборе данных мы знаем, что есть три класса.
Мы будем использовать t-SNE, чтобы увидеть образец распределения (в качестве альтернативы, мы можем построить кластеризацию K-средних с метками классов). t-SNE пытается найти меньшее измерение, которое сохранит расстояние между точками в исходном измерении.
Кажется, что разноцветный и верджиника расположены близко друг к другу. Это может быть одной из причин, по которой кластеризация K-средних считала, что существует две группы.
Что дальше?
Вы можете продолжить изучение набора данных. Например, есть много других техник кластеризации. Что, если мы не будем выполнять PCA, а вместо этого проведем кластеризацию исходных данных?
Код:
Вы можете увидеть полное объяснение и используемый код здесь: