Обучение без учителя

Обучение без учителя на Python

Benjamin Wilson

Director of Research at lateral.io

Обучение без учителя

  • Обучение без учителя находит закономерности в данных
  • Например, кластеризация клиентов по покупкам
  • Сжатие данных на основе паттернов покупок (снижение размерности)
Обучение без учителя на Python

Обучение с учителем и без учителя

  • Обучение с учителем находит закономерности для задачи предсказания
  • Например, классификация опухолей как доброкачественных или злокачественных (метки)
  • Обучение без учителя также находит закономерности в данных
  • ... но без конкретной задачи предсказания
Обучение без учителя на Python

Набор данных Iris

  • Измерения многих растений ириса
  • Три вида ириса:
    • setosa
    • versicolor
    • virginica
  • Длина лепестка, ширина лепестка, длина чашелистика, ширина чашелистика (признаки набора данных)

Ирис

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Обучение без учителя на Python

Массивы, признаки и выборки

  • Двумерный массив NumPy
  • Столбцы — измерения (признаки)
  • Строки — растения ириса (выборки)
Обучение без учителя на Python

Данные Iris в 4-мерном пространстве

  • Выборки ириса — точки в 4-мерном пространстве
  • Размерность = количество признаков
  • Слишком высокая размерность для визуализации!
  • ... но обучение без учителя даёт понимание структуры данных
Обучение без учителя на Python

Кластеризация k-means

  • Находит кластеры выборок
  • Количество кластеров задаётся заранее
  • Реализован в sklearn («scikit-learn»)
Обучение без учителя на Python
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 ...
 [ 7.2  3.2  6.   1.8]]
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
KMeans(n_clusters=3)
labels = model.predict(samples)

print(labels)
[0 0 1 1 0 1 2 1 0 1 ...]
Обучение без учителя на Python

Метки кластеров для новых выборок

  • Новые выборки можно отнести к существующим кластерам
  • k-means запоминает среднее каждого кластера («центроиды»)
  • Для каждой новой выборки находит ближайший центроид
Обучение без учителя на Python

Метки кластеров для новых выборок

print(new_samples)
[[ 5.7  4.4  1.5  0.4]
 [ 6.5  3.   5.5  1.8]
 [ 5.8  2.7  5.1  1.9]]
new_labels = model.predict(new_samples)

print(new_labels)
[0 2 1]
Обучение без учителя на Python

Графики рассеяния

  • График рассеяния: длина чашелистика против длины лепестка
  • Каждая точка — одна выборка ириса
  • Цвет точек соответствует метке кластера
  • PyPlot (matplotlib.pyplot)

График рассеяния

Обучение без учителя на Python

Графики рассеяния

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Обучение без учителя на Python

Давайте потренируемся!

Обучение без учителя на Python

Preparing Video For Download...