Методы уменьшения размерности необходимы для извлечения ценной информации из многомерных наборов данных в машинном обучении. Среди них выделяется линейный дискриминантный анализ (LDA) как уникальный подход, сочетающий снижение размерности с классификацией. Хотя на первый взгляд LDA может напоминать анализ главных компонентов (PCA), он предлагает явные преимущества и результаты. В этой статье мы углубимся в тонкости LDA и продемонстрируем его эффективность с помощью задачи классификации с использованием широко известного набора данных Iris.

Понимание LDA и его цели

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

Набор данных и предварительная обработка

Чтобы проиллюстрировать применение LDA, мы будем использовать известный набор данных Iris, который содержит измерения различных цветов ириса. Мы разделим набор данных на наборы для обучения и тестирования, обозначив функции как X (атрибуты) и соответствующие виды как Y (классы).

Реализация LDA:

# Importing the necessary packages
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# Loading the Iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initializing and training the LDA model
lda = LinearDiscriminantAnalysis()
lda.fit(X_train, y_train)

# Transforming the data and plotting the transformed data
X_train_transformed = lda.transform(X_train)
plt.scatter(X_train_transformed[:, 0], X_train_transformed[:, 1], c=y_train)
plt.xlabel('LDA Component 1')
plt.ylabel('LDA Component 2')
plt.title('LDA Transformed Data (Training Set)')
plt.show()

# Computing the mean accuracy of classification on the training data
accuracy_train = lda.score(X_train, y_train)
print("Training Accuracy:", accuracy_train)

# Applying the trained LDA model to the testing data
X_test_transformed = lda.transform(X_test)

# Plotting the transformed data for the testing set
plt.scatter(X_test_transformed[:, 0], X_test_transformed[:, 1], c=y_test)
plt.xlabel('LDA Component 1')
plt.ylabel('LDA Component 2')
plt.title('LDA Transformed Data (Testing Set)')
plt.show()

# Computing the accuracy of classification on the testing data
accuracy_test = lda.score(X_test, y_test)
print("Testing Accuracy:", accuracy_test)

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

Следуя этапам предварительной обработки набора данных, мы обучили модель LDA, используя обучающие данные. Используя функцию lda.fit(X_train, y_train), модель научилась преобразовывать данные в низкоразмерное пространство, которое максимизирует разделение классов. Затем мы визуализировали преобразованные данные с помощью точечных диаграмм, демонстрируя четкое разделение, достигнутое с помощью LDA, следующим образом.

Чтобы оценить точность классификации, мы рассчитали среднюю точность обучающих данных, используя lda.score(X_train, y_train). Впечатляющая точность обучающей выборки 97,5% продемонстрировала способность LDA точно классифицировать обучающие выборки.

Переходя к этапу тестирования, мы применили обученную модель LDA к тестовым данным, преобразовав ее с помощью lda.transform(X_test). Мы построили преобразованные данные, соблюдая тот же уровень разделения, что и в обучающей выборке. Диаграмма рассеяния показала эффективность LDA в различении различных видов ирисов.

Наконец, мы вычислили точность классификации данных тестирования, используя lda.score(X_test, y_test).Полученная точность, равная 1, подтвердила способность модели к обобщению, обеспечивая точные прогнозы для невидимых данных.

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

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