Сегодня мы обсудим основные типы обучения в машинном обучении: обучение с учителем, обучение без учителя и обучение с подкреплением. На примерах разберем их отличия и применения в реальных задачах.
1. Обучение с учителем
При обучении с учителем алгоритм обучается на размеченных данных, где каждая запись имеет соответствующий выходной результат. Задача алгоритма — научиться предсказывать этот результат на новых данных.
Пример: Регрессия
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# Генерация данных
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([3, 4, 2, 5, 6])
# Обучение модели
model = LinearRegression()
model.fit(X, y)
# Предсказание
X_new = np.array([[6]])
y_pred = model.predict(X_new)
# Визуализация
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict(X), color='red') # Линия регрессии по всем данным
plt.scatter(X_new, y_pred, color='green', label='Предсказание для X=6') # Предсказанное значение
plt.title("Линейная регрессия")
plt.xlabel("X")
plt.ylabel("y")
plt.legend()
plt.show()
В результате выполнения этого кода вы получите график с точками исходных данных и линией регрессии, которая показывает зависимость между переменной X и предсказанными значениями y. Это позволяет визуально оценить качество модели линейной регрессии.
2. Обучение без учителя
Обучение без учителя используется на неразмеченных данных. Алгоритм пытается найти скрытые структуры или паттерны в данных без явных меток.
Пример: Кластеризация
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Генерация данных
X, y = make_blobs(n_samples=300, centers=4, random_state=42)
# Обучение модели
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
# Предсказание кластеров
y_kmeans = kmeans.predict(X)
# Визуализация
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title("Кластеризация K-средних")
plt.show()
В результате выполнения этого кода вы получите график с точками, представляющими сгенерированные данные, окрашенными в зависимости от их принадлежности к кластерам. Красные точки обозначают центры найденных кластеров. Это позволяет визуально оценить качество кластеризации и распределение данных по кластерам.
3. Обучение с подкреплением
Обучение с подкреплением позволяет агенту обучаться через взаимодействие с окружающей средой. В этом процессе агент принимает решения, выполняет действия и получает обратную связь в виде вознаграждений или штрафов. Цель агента — максимизировать общее вознаграждение за определённый период времени.
Пример кода: Задача балансировки палки на движущейся тележке.
import gym
import numpy as np
# Создание среды
env = gym.make('CartPole-v1')
# Параметры
num_episodes = 1000
max_steps = 200
reward_list = []
for episode in range(num_episodes):
state = env.reset()
total_reward = 0
for step in range(max_steps):
# Выбор действия (случайное действие)
action = env.action_space.sample()
# Выполнение действия и получение нового состояния и вознаграждения
next_state, reward, done, _, _ = env.step(action)
total_reward += reward
if done:
break
state = next_state
reward_list.append(total_reward)
# Закрытие среды
env.close()
# Вывод результатов
print(f"Среднее вознаграждение за {num_episodes} эпизодов: {np.mean(reward_list)}")
После выполнения этого кода вы получите среднее вознаграждение: это значение будет отражать, насколько хорошо агент справляется с задачей балансировки палки на тележке.
Заключение
Каждый из этих типов обучения имеет свои уникальные применения и подходы, позволяя решать широкий спектр задач в области машинного обучения и искусственного интеллекта. Понимание этих методов помогает выбрать наиболее подходящий подход для конкретной задачи и эффективно применять алгоритмы машинного обучения в практике.