Вы знакомы с термином «Машинное обучение» или это новое для вас понятие? Эта фраза стала расхожей в нашем современном мире, часто всплывая в нашей работе и в новостях. Несмотря на его известность, многие из нас по-прежнему не уверены в его основных механизмах. Вам интересно разгадать секреты магии машинного обучения? Хотели бы вы изучить разнообразные категории, которые охватывает машинное обучение? Если нет, позвольте мне разъяснить вам эти аспекты в следующей статье. Приготовьтесь погрузиться в глубины обширной области машинного обучения, включая сопоставление его ключевых типов: обучение с учителем и обучение без учителя. Да начнется путешествие!

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

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

Контролируемое обучение

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

Пример контролируемого обучения — классификация изображений

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

import tensorflow as tf
from tensorflow.keras import layers, models

# Load the dataset and preprocess the data

# Define the neural network architecture
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(3, activation='softmax')
])

# Compile the model
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# Train the model
model.fit(train_images, train_labels, epochs=10, batch_size=32)

# Evaluate the model
test_loss, test_accuracy = model.evaluate(test_images, test_labels)

Метрики, используемые в контролируемом обучении:

В обучении с учителем выбор метрик зависит от характера проблемы. Общие показатели оценки включают в себя:

1. Показатели классификации: точность, прецизионность, полнота, показатель F1, матрица путаницы.
2. Показатели регрессии: среднеквадратическая ошибка (MSE), среднеквадратическая ошибка (RMSE), средняя абсолютная ошибка (MAE), R -в квадрате.

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

1. Показатели классификации:

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
import numpy as np

# Assuming we have true labels and predicted labels
true_labels = np.array([0, 1, 1, 0, 1])
predicted_labels = np.array([0, 1, 0, 1, 1])

# Accuracy
accuracy = accuracy_score(true_labels, predicted_labels)

# Precision
precision = precision_score(true_labels, predicted_labels)

# Recall
recall = recall_score(true_labels, predicted_labels)

# F1-score
f1 = f1_score(true_labels, predicted_labels)

# Confusion Matrix
confusion_matrix_result = confusion_matrix(true_labels, predicted_labels)

2. Показатели регрессии:

from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

# Assuming we have true values and predicted values
true_values = np.array([3.5, 2.1, 4.0, 5.2, 6.8])
predicted_values = np.array([3.0, 2.5, 3.8, 5.0, 7.0])

# Mean Squared Error (MSE)
mse = mean_squared_error(true_values, predicted_values)

# Mean Absolute Error (MAE)
mae = mean_absolute_error(true_values, predicted_values)

# R-squared
r_squared = r2_score(true_values, predicted_values)

Требуемое время вычислений:

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

Ограничения контролируемого обучения:

1. Доступность данных. Обучение с учителем основано на размеченных данных, получение которых может быть дорогостоящим и трудоемким.
2. Переобучение. Сложные модели могут переобучать обучающие данные, что приводит к плохому обобщению невидимых данных.
3. Сдвиг предметной области. Модель может плохо работать с данными из распределения, отличного от распределения обучающих данных.
4. Смещение в метках. Если помеченные данные смещены, модель может унаследовать это смещение и давать несправедливые прогнозы. .

Преимущества контролируемого обучения:

1. Точность прогнозирования. Модели обучения с учителем могут достигать высокой точности прогнозирования при обучении на достаточном количестве размеченных данных.
2. Интерпретируемость. Некоторые модели, такие как линейная регрессия, поддаются интерпретации, что позволяет нам понять влияние входных функций. о прогнозах.
3. Широкая применимость: контролируемое обучение широко используется в различных приложениях, включая распознавание изображений, обработку естественного языка и обнаружение мошенничества.

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

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

Пример обучения без учителя — кластеризация K-средних

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

import numpy as np
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Load the Iris dataset
iris = load_iris()
X = iris.data

# Apply K-Means clustering
kmeans = KMeans(n_clusters=3, random_state=42)
predicted_labels = kmeans.fit_predict(X)

# Plot the clustered data
plt.scatter(X[:, 0], X[:, 1], c=predicted_labels, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='red', marker='X')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')
plt.title('K-Means Clustering')
plt.show()

Метрики, используемые в неконтролируемом обучении:

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

1. Метрики кластеризации: показатель силуэта, индекс Дэвиса-Булдина, индекс Калински-Харабаса.
2. Метрики уменьшения размерности: объясненная дисперсия, ошибка реконструкции.



Давайте рассмотрим примеры кода, иллюстрирующие распространенные метрики оценки, используемые в неконтролируемом обучении.

  1. Метрики кластеризации:
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score

# Load the Iris dataset
iris = load_iris()
X = iris.data

# Assuming we have clustered data (predicted_labels) from K-Means
kmeans = KMeans(n_clusters=3, random_state=42)
predicted_labels = kmeans.fit_predict(X)

# Silhouette Score
silhouette_score_result = silhouette_score(X, predicted_labels)

# Davies-Bouldin Index
davies_bouldin_score_result = davies_bouldin_score(X, predicted_labels)

# Calinski-Harabasz Index
calinski_harabasz_score_result = calinski_harabasz_score(X, predicted_labels)

2. Метрики уменьшения размерности:

Для методов уменьшения размерности, таких как PCA (анализ основных компонентов), обычно используется объясненная дисперсия:

from sklearn.decomposition import PCA

# Assuming X is the data matrix
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

# Explained Variance
explained_variance = pca.explained_variance_ratio_

Требуемое время вычислений:

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

Ограничения обучения без учителя:

1. Отсутствие контроля: без размеченных данных сложно объективно проверить точность моделей обучения без учителя.
2. Сложность интерпретации: модели без учителя трудно интерпретировать, что затрудняет понимание причин, лежащих в основе результаты кластеризации или уменьшения размерности.
3. Выбор правильного алгоритма. Выбор подходящего алгоритма обучения без учителя может быть процессом проб и ошибок, поскольку разные алгоритмы могут давать разные результаты.



Преимущества обучения без учителя:

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

Заключение

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

Не пропустите будущий контент! Подключайтесь и подписывайтесь на меня, чтобы получать больше обновлений!

Я надеюсь, что вы нашли эту статью о машинном обучении и его категориях полезной и обогатили ваше понимание. Если это так, я был бы искренне признателен за вашу поддержку аплодисментами и за то, что вы поделились этим произведением со своими коллегами. Кроме того, вы можете связаться со мной на Medium и LinkedIn через мой профиль по адресу https://www.linkedin.com/in/jervis-anthony-saldanha.

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