Вы знакомы с термином «Машинное обучение» или это новое для вас понятие? Эта фраза стала расхожей в нашем современном мире, часто всплывая в нашей работе и в новостях. Несмотря на его известность, многие из нас по-прежнему не уверены в его основных механизмах. Вам интересно разгадать секреты магии машинного обучения? Хотели бы вы изучить разнообразные категории, которые охватывает машинное обучение? Если нет, позвольте мне разъяснить вам эти аспекты в следующей статье. Приготовьтесь погрузиться в глубины обширной области машинного обучения, включая сопоставление его ключевых типов: обучение с учителем и обучение без учителя. Да начнется путешествие!
В этой статье мы рассмотрим ключевые различия между этими двумя парадигмами и предоставим примеры и фрагменты кода, иллюстрирующие варианты их использования.
Машинное обучение — это мощный инструмент, который позволяет компьютерам изучать закономерности и принимать решения без явного программирования. Два основных подхода к машинному обучению — это обучение с учителем и обучение без учителя, каждый из которых имеет свои характеристики и области применения.
Контролируемое обучение
Обучение с учителем — это тип машинного обучения, при котором алгоритм учится на размеченных обучающих данных, чтобы делать прогнозы или классифицировать невидимые данные. В этом подходе обучающие данные состоят из пар вход-выход, где алгоритм учится сопоставлять входные данные с соответствующими выходными данными. Цель состоит в том, чтобы свести к минимуму разницу между прогнозируемыми выходными данными и фактическими метками.
Пример контролируемого обучения — классификация изображений
Одним из наиболее распространенных примеров контролируемого обучения является классификация изображений. Давайте рассмотрим сценарий, в котором мы хотим построить алгоритм для классификации изображений фруктов по разным категориям: яблоки, груши и манго. Для этого нам нужен помеченный набор данных, содержащий изображения фруктов, каждое из которых связано с соответствующей меткой.
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. Метрики уменьшения размерности: объясненная дисперсия, ошибка реконструкции.
Давайте рассмотрим примеры кода, иллюстрирующие распространенные метрики оценки, используемые в неконтролируемом обучении.
- Метрики кластеризации:
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.
Я с энтузиазмом отношусь к вашим конструктивным отзывам и любым концепциям, которые вы хотели бы предложить для будущих статей. Спасибо, что уделили время чтению!