Методы уменьшения размерности необходимы для извлечения ценной информации из многомерных наборов данных в машинном обучении. Среди них выделяется линейный дискриминантный анализ (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, мы продемонстрировали его эффективность в точной классификации видов цветков ириса. Если вы сталкиваетесь с проблемами классификации, связанными с избыточной информацией по измерениям, рассмотрите возможность включения линейного дискриминантного анализа, чтобы использовать уменьшение размерности и раскрыть его классификационные возможности.