Найти в Дзене
Анастасия Софт

Методы машинного обучения: от метода ближайшего соседа до других популярных алгоритмов

Машинное обучение стало неотъемлемой частью современной разработки, и понимание основных методов помогает решать широкий спектр задач. В этой статье мы рассмотрим пять популярных алгоритмов, которые часто встречаются на собеседованиях, с примерами на Python и разбором, что происходит в каждой строке кода. Погнали! Метод ближайшего соседа — это один из самых простых и популярных алгоритмов классификации. Он работает по принципу: объекты классифицируются на основе того, к каким классам принадлежат их ближайшие соседи. Для начала, давайте рассмотрим пример с использованием Scikit-learn. Мы будем использовать набор данных о цветах ирисов (известный Iris dataset), чтобы классифицировать цветы на три вида (setosa, versicolor, virginica). from sklearn.datasets import load_iris # Импортируем набор данных ирисов
from sklearn.model_selection import train_test_split # Для разделения данных на обучающую и тестовую выборки
from sklearn.neighbors import KNeighborsClassifier # Импортируем классифи
Оглавление

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

Погнали!

1. Метод ближайшего соседа (K-Nearest Neighbors, KNN)

Метод ближайшего соседа — это один из самых простых и популярных алгоритмов классификации. Он работает по принципу: объекты классифицируются на основе того, к каким классам принадлежат их ближайшие соседи.

Пример для новичков: KNN для классификации

Для начала, давайте рассмотрим пример с использованием Scikit-learn. Мы будем использовать набор данных о цветах ирисов (известный Iris dataset), чтобы классифицировать цветы на три вида (setosa, versicolor, virginica).

from sklearn.datasets import load_iris # Импортируем набор данных ирисов
from sklearn.model_selection import train_test_split # Для разделения данных на обучающую и тестовую выборки
from sklearn.neighbors import KNeighborsClassifier # Импортируем классификатор KNN
from sklearn.metrics import accuracy_score # Для оценки точности

# Загружаем данные
data = load_iris()
X = data.data # Признаки (например, длина и ширина лепестков)
y = data.target # Целевая переменная (классы: 0, 1, 2)

# Разделяем данные на обучающую и тестовую выборки (80% на обучение, 20% на тестирование)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Создаем модель KNN с 3 ближайшими соседями
knn = KNeighborsClassifier(n_neighbors=3)

# Обучаем модель на обучающих данных
knn.fit(X_train, y_train)

# Делаем прогнозы на тестовых данных
y_pred = knn.predict(X_test)

# Оцениваем точность модели
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

Что происходит в коде:

  • Мы загружаем набор данных ирисов с помощью load_iris(), где X — это признаки (характеристики цветов), а y — целевая переменная (виды цветов).
  • Данные разделены на обучающую и тестовую выборки с помощью train_test_split().
  • Создаем модель KNN с параметром n_neighbors=3, что означает, что для классификации будем учитывать 3 ближайших соседа.
  • Обучаем модель на обучающих данных с помощью метода fit().
  • Прогнозируем классы на тестовых данных с помощью predict() и оцениваем точность модели с помощью accuracy_score().

2. Логистическая регрессия (Logistic Regression)

Логистическая регрессия используется для задач бинарной и многоклассовой классификации. Несмотря на название, это не регрессия в привычном смысле, а метод классификации, который использует логистическую функцию для прогнозирования вероятности принадлежности объекта к одному из классов.

Пример для новичков: Логистическая регрессия для классификации

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

from sklearn.linear_model import LogisticRegression # Импортируем классификатор логистической регрессии

# Создаем модель логистической регрессии
log_reg = LogisticRegression(max_iter=200)

# Обучаем модель
log_reg.fit(X_train, y_train)

# Прогнозируем на тестовых данных
y_pred_log_reg = log_reg.predict(X_test)

# Оценка точности
accuracy_log_reg = accuracy_score(y_test, y_pred_log_reg)
print(f'Logistic Regression Accuracy: {accuracy_log_reg:.2f}')

Что происходит в коде:

  • Мы создаем объект LogisticRegression() с параметром max_iter=200, чтобы указать максимальное количество итераций для сходимости алгоритма.
  • Модель обучается на данных с помощью fit(), а прогнозирование выполняется через predict().
  • Точность вычисляется через accuracy_score().

3. Деревья решений (Decision Trees)

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

Пример для новичков: Дерево решений

Теперь давайте попробуем использовать дерево решений для классификации цветов ирисов.

from sklearn.tree import DecisionTreeClassifier # Импортируем дерево решений

# Создаем модель дерева решений
dt = DecisionTreeClassifier(random_state=42)

# Обучаем модель
dt.fit(X_train, y_train)

# Прогнозируем на тестовых данных
y_pred_dt = dt.predict(X_test)

# Оценка точности
accuracy_dt = accuracy_score(y_test, y_pred_dt)
print(f'Decision Tree Accuracy: {accuracy_dt:.2f}')

Что происходит в коде:

  • Мы создаем объект DecisionTreeClassifier(), который представляет собой классификатор на основе дерева решений.
  • Модель обучается на обучающих данных с помощью fit().
  • Прогнозирование выполняется с помощью predict(), и точность вычисляется через accuracy_score().

4. Метод опорных векторов (Support Vector Machine, SVM)

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

Пример для новичков: Метод опорных векторов

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

from sklearn.svm import SVC # Импортируем метод опорных векторов

# Создаем модель SVM
svm = SVC(kernel='linear', random_state=42)

# Обучаем модель
svm.fit(X_train, y_train)

# Прогнозируем на тестовых данных
y_pred_svm = svm.predict(X_test)

# Оценка точности
accuracy_svm = accuracy_score(y_test, y_pred_svm)
print(f'SVM Accuracy: {accuracy_svm:.2f}')

Что происходит в коде:

  • Мы создаем объект SVC() с параметром kernel='linear', что означает использование линейного ядра (для простоты).
  • Модель обучается на данных с помощью fit(), а прогнозирование выполняется через predict().
  • Точность вычисляется с помощью accuracy_score().

5. Наивный байесовский классификатор (Naive Bayes)

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

Пример для новичков: Наивный байесовский классификатор

Давайте используем наивный байесовский классификатор для работы с нашими данными.

from sklearn.naive_bayes import GaussianNB # Импортируем наивный байесовский классификатор

# Создаем модель наивного байеса
nb = GaussianNB()

# Обучаем модель
nb.fit(X_train, y_train)

# Прогнозируем на тестовых данных
y_pred_nb = nb.predict(X_test)

# Оценка точности
accuracy_nb = accuracy_score(y_test, y_pred_nb)
print(f'Naive Bayes Accuracy: {accuracy_nb:.2f}')

Что происходит в коде:

  • Мы создаем объект GaussianNB(), который представляет собой наивный байесовский классификатор для непрерывных признаков (в случае нормального распределения).
  • Модель обучается на данных с помощью fit(), а прогнозирование выполняется через predict().
  • Точность вычисляется с помощью accuracy_score().

Заключение

Мы рассмотрели пять популярных алгоритмов машинного обучения:

  1. Метод ближайшего соседа (KNN)
  2. Логистическая регрессия
  3. Деревья решений
  4. Метод опорных векторов (SVM)
  5. Наивный байесовский классификатор

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

Запомните: методы машинного обучения — это не магия. Это просто инструменты для извлечения знаний из данных. Чем больше вы практикуетесь, тем быстрее научитесь видеть закономерности. Удачи на вашем пути в мир машинного обучения!

Методы машинного обучения: от метода ближайшего соседа до других популярных алгоритмов
Методы машинного обучения: от метода ближайшего соседа до других популярных алгоритмов