Холл Майкл Л. – Алгоритмы машинного обучения: базовый курс (страница 15)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Визуализируем исходные данные
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], alpha=0.5)
plt.title("Изначальные данные о покупках")
plt.xlabel("Сумма покупок")
plt.ylabel("Частота покупок")
plt.show()
```
Шаг 2: Применение PCA для снижения размерности
Хотя наши данные уже имеют всего два признака, на реальных данных размерность может быть гораздо выше. В этом случае PCA поможет нам снизить размерность, например, до двух компонент для визуализации и дальнейшего анализа.
```python
# Применяем PCA для уменьшения размерности
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# Визуализируем данные после PCA
plt.scatter(X_pca[:, 0], X_pca[:, 1], alpha=0.5)
plt.title("Данные после PCA")
plt.xlabel("Первая главная компонента")
plt.ylabel("Вторая главная компонента")
plt.show()
```
Шаг 3: Применение K-means для кластеризации
Теперь, когда мы применили PCA для снижения размерности, можно использовать алгоритм K-means для сегментации данных. Для этого мы заранее определим количество кластеров, например, 2, так как мы знаем, что данные состоят из двух групп клиентов.
```python
# Применяем K-means для кластеризации
kmeans = KMeans(n_clusters=2, random_state=42)
y_kmeans = kmeans.fit_predict(X_pca)
# Визуализируем результаты кластеризации
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_kmeans, cmap='viridis', alpha=0.5)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='red', marker='X', label='Центроиды')
plt.title("Результаты кластеризации K-means")
plt.xlabel("Первая главная компонента")
plt.ylabel("Вторая главная компонента")
plt.legend()
plt.show()
```
Шаг 4: Анализ результатов
После выполнения этих шагов мы получим два кластера, которые будут представлены на графике с различными цветами. Красные крестики на графике показывают центроиды кластеров. Эти центроиды представляют собой средние значения для каждого из кластеров.
Шаг 5: Проверка объяснённой дисперсии с помощью PCA
Для того чтобы понять, насколько эффективно мы сохранили информацию при уменьшении размерности, можно проверить, сколько дисперсии данных объясняется выбранными компонентами. В случае с нашим набором данных, PCA должен хорошо сохранить информацию, так как мы работаем с низким числом признаков.
```python
# Выводим долю объясненной дисперсии для каждой главной компоненты
print("Доля объясненной дисперсии для каждой компоненты:", pca.explained_variance_ratio_)
print("Общая объясненная дисперсия (для 2 компонент):", np.sum(pca.explained_variance_ratio_))
```
Результат:
1. Визуализация после применения PCA: После применения PCA мы видим данные, упорядоченные вдоль двух главных компонент. Хотя у нас всего два исходных признака, PCA позволяет выразить данные в линейной комбинации этих признаков, что помогает выделить важные закономерности.
2. Кластеризация с K-means: После применения K-means мы получаем два кластера клиентов. Это позволяет сегментировать клиентов на группы с схожими покупательскими привычками, что может быть полезно для таргетированной маркетинговой кампании.
3. Объяснённая дисперсия: Ожидаемая доля объяснённой дисперсии поможет понять, сколько информации мы потеряли при применении PCA. В случае с двумя компонентами результат обычно будет достаточно высоким, особенно для данных с явными группами.
В этом примере мы использовали PCA для снижения размерности данных о покупках клиентов и применили алгоритм K-means для сегментации этих клиентов. Этот подход можно использовать для более сложных задач, когда данные имеют много признаков, и важно выявить скрытые группы в данных. PCA позволяет уменьшить размерность без значительных потерь информации, а K-means помогает легко и быстро сегментировать клиентов на основе основных признаков.
Сегментация данных с помощью методов снижения размерности и кластеризации является важным инструментом в бизнес-аналитике, маркетинге и других областях, где необходимо разделить данные на группы с похожими характеристиками для дальнейшего анализа или принятия решений.
Глава 6. Полусупервизорное и обучение с подкреплением
– Принципы обучения с подкреплением
– Q-Learning: примеры и применение
– Полусупервизорные подходы
В этой главе мы рассмотрим два мощных подхода в области машинного обучения, которые открывают новые возможности для решения сложных задач: обучение с подкреплением и полусупервизорное обучение.
Обучение с подкреплением включает в себя процесс, при котором агент взаимодействует с окружающей средой и учится на основе получаемой обратной связи в виде награды или наказания. Этот подход становится все более популярным в решении задач, где важен процесс принятия решений и стратегия, направленная на достижение долгосрочных целей, таких как в играх, робототехнике или даже в оптимизации бизнес-процессов.
Полусупервизорные методы являются промежуточным решением между супервизорным и несупервизорным обучением. В ситуациях, когда есть большое количество неразмеченных данных и небольшое количество размеченных, полусупервизорные подходы позволяют эффективно использовать все данные, улучшая результаты модели с меньшими затратами на разметку.
В этой главе мы углубимся в эти методы, разберем их принципы, области применения и примеры реализации, что позволит понять, как и когда можно применить их для решения реальных задач.
Обучение с подкреплением (reinforcement learning, RL) – это подход в машинном обучении, при котором агент учится принимать решения, взаимодействуя с окружающей средой и получая за свои действия обратную связь в виде награды или наказания. Этот процесс напоминает обучение через опыт: агент предпринимает действия в определённой среде, получает результаты этих действий и на основе этих результатов корректирует свои дальнейшие действия.
Основной идеей в обучении с подкреплением является то, что агент должен максимизировать свою долгосрочную награду. Агент не получает четких указаний о том, какие действия он должен выполнять, а лишь получает информацию о том, насколько успешными были его действия на основе полученной награды. Это делает обучение с подкреплением схожим с процессом обучения живых существ: они учат свои действия через опыт, получая позитивные или негативные последствия в зависимости от того, насколько правильными были их выборы.
Процесс обучения с подкреплением можно описать через несколько ключевых компонентов. Агент – это существо или система, которая принимает решения и взаимодействует с окружающей средой. Среда, в свою очередь, представляет собой всё, с чем агент взаимодействует, включая её состояние. Каждое состояние среды – это описание текущего положения дел, и агент на основе этого состояния решает, какое действие он должен предпринять.
Когда агент выбирает действие, среда реагирует, изменяя своё состояние, и агент получает награду или наказание в зависимости от того, как полезным было это действие для достижения цели. Награда – это числовая величина, которая отражает степень успеха действия агента, а цель агента заключается в том, чтобы в долгосрочной перспективе накопить как можно больше награды. Это позволяет агенту научиться, какие действия в каких ситуациях приводят к наибольшей выгоде.
Одной из важнейших проблем обучения с подкреплением является баланс между исследованием (exploration) и эксплуатацией (exploitation). Исследование заключается в том, чтобы пробовать новые действия, которые могут привести к более высоким наградам, даже если они не гарантируют немедленного успеха. Эксплуатация – это использование уже известных и успешных действий, которые обеспечивают более предсказуемый результат. Баланс между этими двумя подходами критичен, так как слишком большое количество исследования может привести к неэффективности, а слишком много эксплуатации – к застою и пропущенным возможностям для улучшения.