Подробное обсуждение с кодом!

Цель: найти скрытые закономерности и идеи в наборе данных Wine с помощью неконтролируемого обучения, которое будет более непредсказуемым по сравнению с другими естественными методами обучения.

Содержание:

  • Что такое неконтролируемое обучение?
  • Почему неконтролируемое обучение?
  • Обучение без учителя против обучения с учителем
  • Что такое кластеризация?
  • Типы кластеризации
  • Обработка набора данных
  • Одномерный исследовательский анализ данных
  • Многовариантный исследовательский анализ данных
  • Уменьшение размерности
  • Модель кластеризации
  • Выбор модели кластеризации в соответствии с набором данных
  • Получение кластеров и что дальше?
  • Заключение

Что такое неконтролируемое обучение?

Обучение без учителя, также известное как Машинное обучение без учителя, использует алгоритмы машинного обучения для анализа и кластеризации немаркированных наборов данных. Эти алгоритмы обнаруживают скрытые шаблоны или группы данных без необходимости вмешательства человека. Его способность обнаруживать сходства и различия в информации делает его идеальным решением для исследовательского анализа данных, стратегий перекрестных продаж, сегментации клиентов и распознавания изображений.

"Обучение без учителя – это тип машинного обучения, при котором модели обучаются с использованием немаркированного набора данных и могут работать с этими данными без какого-либо контроля".

Почему неконтролируемое обучение?

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

  • Неконтролируемое машинное обучение находит в данных всевозможные неизвестные закономерности.
  • Неконтролируемые методы помогают найти признаки, которые могут быть полезны для категоризации.
  • Это происходит в режиме реального времени, поэтому все входные данные должны быть проанализированы и помечены в присутствии учащихся.
  • Неразмеченные данные легче получить с компьютера, чем размеченные данные, которые требуют ручного вмешательства.

Обучение без учителя против обучения с учителем!!!

  1. Метод контролируемого обучения имеет дело с помеченными данными, где шаблоны выходных данных известны системе. Напротив, неконтролируемое обучение работает с немаркированными данными, в которых выходные данные основаны только на наборе восприятий.
  2. Когда дело доходит до сложности, метод обучения с учителем менее сложен, а метод обучения без учителя более сложен.
  3. Обучение с учителем также может проводить анализ в автономном режиме, тогда как обучение без учителя использует анализ в реальном времени.
  4. Результат контролируемого обучения более точен и надежен. Напротив, неконтролируемое обучение дает умеренные, но надежные результаты.
  5. Классификация и регрессия — это типы задач, решаемых методом контролируемого обучения. И наоборот, неконтролируемое обучение включает проблемы кластеризации и ассоциативного анализа правил.

Что такое кластеризация?

Кластеризация или кластерный анализ — это метод машинного обучения, который группирует немаркированный набор данных. Его можно определить как

«Способ группировки точек данных в разные кластеры, состоящие из похожих точек данных. Объекты с возможным сходством остаются в группе, которая имеет меньшее сходство или вообще не имеет сходства с другой группой».

Он делает это, находя в немаркированном наборе данных некоторые похожие шаблоны, такие как форма, размер, цвет, поведение и т. д., и разделяет их в соответствии с наличием и отсутствием этих похожих шаблонов.

Это неконтролируемый метод, поэтому алгоритм не контролируется и работает с немаркированным набором данных.

Типы кластеризации

Различные типы кластеризации:

  • Кластеризация K-средних
  • Кластеризация K-Medoids
  • Модель смеси Гаусса
  • Иерархическая кластеризация
  • Спектральная кластеризация

Теперь мы кратко обсудим это,

Кластеризация K-средних

Кластеризация методом K-средних – это алгоритм обучения без учителя, который группирует немаркированный набор данных в разные кластеры. Здесь K определяет количество предопределенных кластеров, которые необходимо создать в процессе, например, если K=2, будет два кластера, а при K=3 будет три кластера и так далее.

"Это итеративный алгоритм, который делит немаркированный набор данных на k разных кластеров таким образом, что каждый набор данных принадлежит только одной группе со схожими свойствами".

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

Это алгоритм на основе центроида, в котором каждый кластер связан с центроидом. Основная цель этого алгоритма — минимизировать сумму расстояний между точкой данных и их соответствующими кластерами.

Как работает алгоритм К-средних

Для обработки обучающих данных алгоритм K-средних при интеллектуальном анализе данных начинает с первой группы случайно выбранных центроидов, которые используются в качестве начальных точек для каждого кластера, а затем выполняет итерационные (повторяющиеся) вычисления для оптимизации положения центроидов.

Он останавливает создание и оптимизацию кластеров, когда:

  • Центроиды стабилизировались — их значения не изменились, потому что кластеризация прошла успешно.
  • Достигнуто заданное количество итераций.

Как выбрать значение К?

Одной из самых сложных задач в этом алгоритме кластеризации является выбор правильных значений k. Каким должно быть правильное значение k? Как выбрать значение k? Найдем ответ на эти вопросы. Если вы выбираете значения k случайным образом, это может быть правильным или неправильным. Если вы выберете неправильное значение, это напрямую повлияет на производительность вашей модели. Таким образом, есть два метода, с помощью которых вы можете выбрать правильное значение k.

  1. Метод локтя.
  2. Силуэтный метод.

Теперь давайте подробно разберем обе концепции.

  1. Метод локтя:

Elbow — один из самых известных методов, с помощью которого вы можете выбрать правильное значение k и повысить производительность вашей модели. Мы также выполняем настройку гиперпараметров, чтобы выбрать наилучшее значение k. Давайте посмотрим, как работает этот метод локтя.

Это эмпирический метод определения наилучшего значения k. он выбирает диапазон значений и выбирает лучшее из них. Он вычисляет сумму квадратов точек и вычисляет среднее расстояние.

Когда значение k равно 1, сумма квадрата внутри кластера будет высокой. По мере увеличения значения k сумма квадратов внутри кластера будет уменьшаться.

Наконец, мы построим график между значениями k и суммой квадратов внутри кластера, чтобы получить значение k. мы внимательно изучим график. В какой-то момент наш график резко уменьшится. Эта точка будет рассматриваться как значение k.

2. Силуэтный метод:

Метод силуэта несколько отличается. Метод локтя также выбирает диапазон значений k и рисует график силуэта. Он вычисляет коэффициент силуэта каждой точки. Он вычисляет среднее расстояние точек в своем кластере a (i) и среднее расстояние точек до следующего ближайшего кластера с именем b (i).

Примечание. Значение a (i) должно быть меньше значения b (i), то есть ai‹bi.

Теперь у нас есть значения a (i) и b (i). мы рассчитаем коэффициент силуэта, используя приведенную ниже формулу.

Теперь мы можем вычислить коэффициент силуэта всех точек в кластерах и построить график силуэта. Этот график также поможет обнаружить выбросы. График силуэта находится в диапазоне от -1 до 1.

Обратите внимание, что для коэффициента силуэта, равного -1, это наихудший сценарий.

Наблюдайте за графиком и проверьте, какое из значений k ближе 1.

Кроме того, проверьте график с меньшим количеством выбросов, что означает менее отрицательное значение. Затем выберите это значение k для настройки вашей модели.

Кластеризация K-Medoids

K-Medoids можно определить как точку в кластере, несходство которой со всеми остальными точками в кластере минимально. Различие медоида (Ci) и объекта (Pi) вычисляется с помощью

Алгоритмы:

  1. выберите k случайных точек из n точек данных в качестве медоидов.
  2. Свяжите каждую точку данных с ближайшим медоидом, используя любые распространенные методы метрики расстояния.

3. Пока стоимость уменьшается:
Для каждого медоида m, для каждой точки данных o, которая не является медоидом:
a.
Поменять местами m и o, связать каждую точку данных с ближайшим медоидом, пересчитать стоимость.
б. Если общая стоимость больше, чем на предыдущем шаге, отмените обмен.

Смешанная модель Гаусса

GMM-Гауссовская смешанная модель. Иногда наши данные имеют несколько распределений или несколько пиков. Он не всегда имеет один пик, и это можно заметить, взглянув на набор данных. Это будет выглядеть так, как будто здесь и там происходит несколько пиков. Есть две пиковые точки, и данные, кажется, идут вверх и вниз дважды, может быть, три раза или четыре раза. Но если есть несколько распределений Гаусса, которые могут представлять эти данные, мы можем построить то, что мы назвали Гауссовой смешанной моделью.

Одномерное распределение Гаусса:

Многомерное распределение Гаусса:

Смеси Гаусса:

ML здесь не работает, так как нет решения в закрытой форме. Параметры можно рассчитать с помощью метода Максимизация ожидания (EM).

Максимизация ожиданий:

Алгоритм EM для GMM:Для смешанной модели Гаусса цель состоит в том, чтобы максимизировать функцию правдоподобия по отношению к параметрам, включающим средние значения и ковариации компонентов и коэффициенты смешивания).

Иерархическая кластеризация

Иерархическая кластеризация — это альтернативный подход к кластеризации k-средних для идентификации групп в наборе данных. Это не требует от нас предварительного указания количества создаваемых кластеров, как того требует подход k-средних.

Метод иерархической кластеризации имеет два подхода:

  1. Агломерация. Агломерация — это восходящий подход, при котором алгоритм начинает с того, что все точки данных рассматриваются как отдельные кластеры и объединяются до тех пор, пока не останется один кластер.
  2. Разделение: алгоритм разделения является обратным алгоритму агломерации, так как это нисходящий подход.

Кроме того, иерархическая кластеризация имеет дополнительное преимущество перед кластеризацией K-средних, поскольку она приводит к привлекательному древовидному представлению наблюдений, называемому дендрограммой.

Спектральная кластеризация

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

Этапы алгоритма:
1) построение графа ближайших соседей (граф KNN) или графа на основе радиуса.
2) встраивание точек данных в малоразмерное пространство (спектральный вложение), в котором кластеры более очевидны с использованием собственных векторов лапласиана графа.
3) Используйте наименьшее собственное значение, чтобы выбрать собственный вектор для кластера.

Здесь в качестве примера мы будем использовать набор данных WINE для изучения различных типов алгоритмов машинного обучения без учителя с использованием Python…

Итак, давайте начнем наше путешествие с некоторых интересных тем и еще нескольких интересных кодов и графиков…

Итак, наш прекрасный Wine_data-set здесь.

Обработка набора данных

В Python есть много библиотек. Но здесь мы в основном будем использовать библиотеки numpy, pandas, matplotlib, seaborn и т.д. Поэтому перед загрузкой нашего набора данных нам нужно импортировать эти библиотеки.

# Importing libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.pyplot as mp
import seaborn as sns
import seaborn as sb

# Loading our csv data file
df=pd.read_csv("/content/drive/MyDrive/wine/Wine 0.csv")
df.head()

Одномерный исследовательский анализ данных

Одномерный EDA в основном сообщает нам, как распределяются данные по каждому признаку, а также сообщает нам о центральных тенденциях и мерах дисперсии, таких как среднее значение, медиана, мода, стандартное отклонение, минимум, максимум, квартиль, асимметрия, эксцесс, коэффициент вариации и др.

Это дает нам информацию об описательной статистике всех 13 переменных, присутствующих в наборе данных.

Давайте визуализируем одномерный графический анализ.

Приведенные выше диаграммы показывают, что Proline имеет гораздо более высокий масштаб, чем другие переменные, и в наборе данных не так много выбросов, поэтому мы можем легко их игнорировать.

Графики, полученные с помощью приведенного выше кода, говорят о распределении всех переменных.

Здесь мы можем заключить, что щелочность золы и магния примерно соответствует нормальному распределению.

Оттенок, пролин, яблочная кислота, спирт, общее количество фенолов, флаваноиды и оптическая плотность разбавленных вин 280/315 предполагают наличие 2 кластеров.

Многовариантный исследовательский анализ данных

Многомерные методы EDA рассматривают две или более переменных одновременно, чтобы исследовать отношения между ними.

Тепловая карта корреляции:

  1. Тепловая карта корреляции — это графическое представление матрицы корреляции, представляющей корреляцию между различными переменными.
  2. Значение корреляции может принимать любые значения от -1 до 1.
  3. Корреляция между двумя случайными величинами или двумерными данными не обязательно подразумевает причинно-следственную связь.
  4. Корреляцию между двумя переменными также можно определить с помощью графика рассеяния между этими двумя переменными.

Давайте визуализируем корреляцию каждой переменной со всеми другими переменными в наборе данных…

При тщательном изучении парных графиков мы обнаружили высокую положительную корреляцию между флавоноидами и общим содержанием фенолов (с коэффициентом корреляции около 0,86).

Существует гораздо больше коррелированных функций, которые дают общее представление о том, как функции коррелируют друг с другом.

Кроме того, большинство полученных графиков KDE предполагает наличие двух кластеров в наборе данных, в то время как некоторые из них (например, Общие фенолы, флавоноиды, OD280/OD315 разбавленных вин) предполагают наличие 3 кластеров в наборе данных. .

Теперь давайте перейдем к выбору функций с помощью PCA.

Уменьшение размерности с помощью PCA

Анализ основных компонентов, или PCA, – это метод уменьшения размерности, который часто используется для уменьшения размерности больших наборов данных путем преобразования большого набора переменных в меньший. тот, который по-прежнему содержит большую часть информации в большом наборе. Уменьшение количества переменных в наборе данных, естественно, происходит за счет точности, но хитрость в уменьшении размерности заключается в том, чтобы пожертвовать небольшой точностью ради простоты.

Теперь, когда мы обнаружили в многомерном анализе, что общее количество фенолов и флаваноиды имеют высокую положительную корреляцию (0,86), что может привести к мультиколлинеарности. в данных и, таким образом, дают предвзятые результаты.

Итак, мы удаляем один из них из данных, прежде чем двигаться дальше.

# Dropping Total Phenols
df1=df.drop(['Total phenols'],axis=1)

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

# Standardizing the data

from sklearn.preprocessing import StandardScaler
df_scaled=StandardScaler().fit_transform(df1)
df=pd.DataFrame(df_scaled,columns=df1.columns)

Теперь мы рассчитаем PCA.

Таким образом, мы можем заключить, что два вышеупомянутых основных компонента, полученные при сокращении PCA, объясняют около 54,25% дисперсии данных.

Сокращение набора данных до трех измерений с использованием PCA.

Приведенные выше 3 основных компонента объясняют 66,1 % дисперсии данных, что примерно на 12 % больше, чем объясняется двумя компонентами. Итак, мы выбираем PCA с 3 компонентами. (Мы взяли кумулятивную сумму коэффициента объясненной дисперсии)

Теперь давайте попробуем визуализировать, какие переменные влияют на разные кластеры, используя Bi-Plot.

Бисюжет:

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

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

НАБЛЮДЕНИЯ:

  1. Щелочность золы, нефлаваноидных фенолов и яблочной кислоты имеет тенденцию формировать один из кластеров.
  2. Интенсивность цвета, зольность, спирт, магний и пролин образуют другой кластер.
  3. Оттенок, разбавленные вина, флаваноиды и проантоцианы составляют еще один кластер.

Теперь давайте применим к данным разные модели кластеризации.

Модель кластеризации

Мы уже обсуждали различные типы моделей кластеризации.

Пришло время реализовать это с помощью некоторых интересных кодов Python…

  1. Кластеризация K-средних:

Из приведенного выше графика, используя метод локтя, мы можем сказать, что у нас может быть 2 или 3 кластера.

kmeans_2=KMeans(n_clusters=2,init='k-means++',random_state=42).fit(new_df)
kmeans_3=KMeans(n_clusters=3,init='k-means++',random_state=42).fit(new_df)
y_kmeans_2=kmeans_2.fit_predict(new_df)
y_kmeans_3=kmeans_3.fit_predict(new_df)

Мы подогнали модель, используя как 2, так и 3 кластера, теперь давайте решим, какой из них выбрать, используя оценку силуэта.

Поскольку оценка Силуэта для 3 кластеров больше, чем для 2 кластеров. Таким образом, мы выбираем нет. кластеров должно быть 3.

На приведенном выше графике представлены 3 кластера в данных о вине с использованием кластеризации K-средних.

2. Кластеризация K-Medoids:

Из трех методов измерения расстояний евклидова метрика имеет самый высокий балл силуэта. Итак, мы будем использовать metric= ‘Euclidean’ для визуализации наших кластеров.

На приведенном выше графике представлены 3 кластера в данных о вине с использованием K-Medoids Clustering.

Здесь основное различие заключается в назначении кластера 2 и кластера 3 точкам данных. Он был обратным по сравнению с кластеризацией K-средних.

3. Кластеризация гауссовой смеси:

Если мы возьмем количество кластеров равным 3, мы получим большее значение оценки силуэта. Итак, мы пойдем с 3 кластерами.

ПРИМЕЧАНИЕ. Это значение немного меньше, чем у K-Means.

4. Иерархическая кластеризация — агломеративная кластеризация:

Чтобы решить нет. кластеров в Hierarchical Clustering мы используем Дендрограмму.

На приведенной выше дендрограмме у нас есть горизонтальная красная пунктирная линия, пересекающая 3 вертикальные линии. Итак, ставим нет. кластеров должно быть 3.

Теперь давайте подгоним модель и визуализируем ее.

5. Спектральная кластеризация:

При формировании матрицы M мы учитывали значение new_df-, которое было получено после проведения PCA на стандартизированных данных. Итак, давайте попробуем подобрать другую модель спектральной кластеризации без нормализации U_subset.

Приведенный выше график рассеяния показывает, что модель имеет в основном 2 кластера.

Давайте проверим производительность вышеперечисленных моделей с помощью Silhouette Score.

print(f'Silhouette Score("Normalized"): {silhouette_score(new_df, y_sc_1)}')

print(f'Silhouette Score("Non-Normalized"): {silhouette_score(new_df, y_sc_2)}')

Оценка силуэта предполагает, что модель с нормализованными собственными векторами работает лучше.

На данный момент мы подобрали к нашему набору данных пять различных моделей кластеризации и наблюдали за результатами.

Теперь нам нужно выбрать какую-то модель… но возникает большой вопрос, какая модель лучше из всего вышеперечисленного?

Выбор модели кластеризации в соответствии с набором данных

Для этого давайте сначала визуализируем все графики рассеяния с первого взгляда.

Мы ясно видим, что все приведенные выше графики рассеяния более или менее одинаковы.

Тогда как сравнивать эти модели?

Мы снова будем использовать оценку силуэта, чтобы сделать вывод о том же.

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

Получение кластеров

#here the dataframe(df) used is the one before standardization
df=pd.read_csv('/content/Wine 0.csv')
df['Cluster']=y_kmeans_3
df

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

Наконец мы получили все кластеры, но…

И что дальше?

Получения кластеров недостаточно, поэтому нам нужно также понимать наши кластеры.

Для этого давайте визуализируем кластеры, соответствующие каждой переменной.

Из приведенного выше графика можно сделать такие выводы, как Содержание алкоголя высокое во 2-м кластере, умеренное в 3-м кластере и низкое в 1-м кластере.

Чтобы лучше понять это, давайте воспользуемся блочной диаграммой.

Из приведенного выше графика мы можем построить таблицу, указывающую, какое количество определенного ингредиента (переменной) было добавлено в кластер 1,2 или 3(здесь 0,1,2).

В соответствии с этим мы разделили все переменные на 5 категорий в соответствии со шкалами переменных: Очень высокая, Высокая, Умеренная, Низкая, Очень низкая.

Итак, когда разное сырье (переменные) смешивают в разных пропорциях, получается 3 разные категории вина.

Здравствуйте…..

Оооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо...

А теперь пора ура!!!

Поздравляем с успехом! … Наконец… мы находим все скрытые типы вин из всех компонентов нашего набора данных…

Наконец, мы можем сделать вывод, что существует 3 типа вин.

Заключение

Вначале мы пытались понять наши данные с помощью основных методов исследования данных.

Затем мы тщательно изучили различные алгоритмы кластеризации (K-Means, K-Medoids, Gaussian Mixture Model, Agglomerative Hierarchical и Spectral Clustering), чтобы понять и реализовать их на наборе данных вина с кодами Python.

При сравнении этих моделей мы обнаружили, что алгоритм K-средних является лучшим алгоритмом/моделью кластеризации для этого набора данных.

Наконец, мы попытались глубже разобраться в кластерах и выяснить типы вин.

Всем читателям… Вам понравилось наше маленькое путешествие с прекрасными алгоритмами и кодами?! … Пожалуйста, дайте мне знать об этом в разделе комментариев.

Надеюсь, это будет полезно и интересно для всех... Любые предложения приветствуются в поле для комментариев.

Спасибо и удачного обучения! … Из Адрии :)