Использование линейного дискриминантного анализа (LDA) для уменьшения размерности
Вступление
Линейный дискриминантный анализ (LDA) - это метод уменьшения размерности, который чаще всего используется на этапе предварительной обработки приложений машинного обучения и классификации шаблонов. Цель состоит в том, чтобы спроецировать данные в пространство меньшей размерности с хорошей разделяемостью классов, чтобы избежать переобучения («проклятие размерности»), а также снизить вычислительные затраты. Это помогает уменьшить размерность данных и в то же время пытается сохранить основные характеристики данных, специфичные для класса.
Как работает LDA?
Линейный дискриминантный анализ - это контролируемый алгоритм, который учитывает помеченные данные при выполнении метода уменьшения размерности. Этот метод используется для поиска нового пространства функций, которое максимизирует разделимость классов, используя подход, очень похожий на тот, который используется в Анализе главных компонентов (PCA).
PCA - это статистическая процедура, которая преобразует набор возможно коррелированных переменных в набор линейно некоррелированных характеристик, называемых главными компонентами. По сути, он отбрасывает наименее важные переменные, сохраняя при этом ценные, путем нахождения осей главных компонентов, по которым разброс данных высок.
В LDA мы намерены максимизировать разделение между классами за счет максимального увеличения расстояния между центроидами классов и в то же время минимизировать внутриклассовую дисперсию, чтобы сформировать хорошо разделенные неперекрывающиеся кластеры. Сведение к минимуму дисперсии внутри класса приводит к созданию компактных, менее распространенных классов. Эти функции называются дискриминантными функциями.
Разброс между изменчивостью классов можно определить как
а внутриклассовое разделение может быть определено как
Правила дискриминации:
- Максимальная вероятность: присваивает x группе, которая максимизирует плотность населения (группы).
- Дискриминантное правило Байеса: присваивает x группе, которая максимизирует произведение априорной вероятности и плотности населения.
- Линейное правило дискриминанта Фишера: максимизирует соотношение между между классами и внутри класса и находит линейную комбинацию предикторов для прогнозирования группы.
Применение LDA к набору данных IRIS
- Импорт набора данных IRIS:
library(datasets) head(iris) #output Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa
2. Описательная статистика
summary(iris) #output Sepal.Length Sepal.Width Petal.Length Petal.Width Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 Median :5.800 Median :3.000 Median :4.350 Median :1.300 Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
3. Исследовательский анализ данных
# Visualizing correlation between features plot(iris)
# Density & Frequency analysis with the Histogram # We can observe that most of the attributes exhibit normal distribution # Sepal length ggplot(data=iris, aes(x=Sepal.Length))+ geom_histogram(color="black", aes(fill=Species)) + xlab("Sepal Length (cm)") + ylab("Frequency") + theme(legend.position="none")+ ggtitle("Histogram of Sepal Length")+ geom_vline(data=iris, aes(xintercept = mean(Sepal.Length))) Similarly other features can be plotted
# Now we will plot boxplots for the features and try to identify any # outliers present in the data. The dots in the boxplot indicate the potential outliers which maybe present in the data. Not necessarily all of them are outliers, so human verification for such points is essential. # For Sepal Length ggplot(iris, aes(Species, Sepal.Length, fill=Species)) + geom_boxplot()+ scale_y_continuous("Petal Length (cm)") + labs(title = "Iris Petal Length Box Plot", x = "Species")
# Let's plot a scatter plot to visualize the relation between features. We can see a strong relation between petal width and length as opposed to sepal measurements, implying the petal measurements play a crucial role in clustering.
# Building the LDA model of iris using Training Set. iris.lda <- lda(TrainingSet$Species ~., data =TrainingSet) predict.iris <- predict(iris.lda) table(TrainingSet$Species, predict.iris$class) # Predict the test set using the LDA model predictLDATest <- predict(iris.lda, newdata = TestSet) table(TestSet$Species, predictLDATest$class) # Output # Coefficients of linear discriminants: LD1 LD2 Sepal.Length 0.8293776 0.02410215 Sepal.Width 1.5344731 2.16452123 Petal.Length -2.2012117 -0.93192121 Petal.Width -2.8104603 2.83918785 # Confusion Matrix of training set setosa versicolor virginica setosa 34 0 0 versicolor 0 34 0 virginica 0 1 31 # Confusion Matrix of test set setosa versicolor virginica setosa 16 0 0 versicolor 0 15 1 virginica 0 0 18 So from the results we can see that the miss classification rate is as less as 2% .
Таким образом, применяя LDA, мы могли успешно сопоставить данные с пространством более низкой размерности, не теряя при этом большей части их исходных характеристик.