Как реализовать линейный дискриминантный анализ в R?



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

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

Итак, давайте начнем тогда





Допущение линейного дискриминантного анализа

Линейный дискриминантный анализ основан на следующих предположениях:

  • Зависимая переменная Y дискретно. В этой статье мы будем предполагать, что зависимая переменная является двоичной и принимает значения класса. {+1, -1} . Вероятность принадлежности выборки к классу +1 , т.е. P (Y = +1) = p . Следовательно, вероятность принадлежности выборки к классу -один является 1-п .



  • Независимая переменная (ы) Икс происходят из гауссовских распределений. Среднее значение гауссовского распределения зависит от метки класса Y . т.е. если Y я = +1 , то среднее значение Икс я является & # 120583 +1 , иначе это & # 120583 -один . Дисперсия & # 120590 2 одинаков для обоих классов. Математически говоря, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) и X | (Y = -1) ~ N (& # 120583 -один , & # 120590 2 ) , где N обозначает нормальное распределение.

С помощью этой информации можно построить совместное распределение P (X, Y) для независимой и зависимой переменной. Следовательно, LDA относится к классу Генеративные модели классификаторов . Тесно родственный генеративный классификатор - квадратичный дискриминантный анализ (QDA). Он основан на тех же предположениях LDA, за исключением того, что отклонения классов различны.

Давайте продолжим статью о линейном дискриминантном анализе и посмотрим

Интуиция

Рассмотрим классовые условные гауссовские распределения для Икс учитывая класс Y . На рисунке ниже показаны функции плотности распределений. На этом рисунке, если Y = +1 , то среднее значение Икс равно 10 и если Y = -1 , среднее значение равно 2. В обоих случаях дисперсия равна 2.

интуиция - Анализ линейной дискриминации - Edureka

Теперь предположим новое значение Икс дается нам. Давайте просто обозначим это как Икс я . Задача - определить наиболее вероятную метку класса для этого Икс я , т.е. Y я . Для простоты предположим, что вероятность п образца, принадлежащего к классу +1 такое же, как принадлежность к классу -один , т.е. р = 0,5 .

Интуитивно имеет смысл сказать, что если Икс я ближе к & # 120583 +1 чем это & # 120583 -один , то более вероятно, что Y я = +1 . Более формально Y я = +1 если:

| х я - & # 120583 +1 |<|x я - & # 120583 -один |

Нормализация обеих сторон стандартным отклонением:

| х я - & # 120583 +1 | / & # 120590<|x я - & # 120583 -один | / & # 120590

магистр имеет степень магистра

Квадрат с обеих сторон:

(Икс я - & # 120583 +1 ) 2 / & # 120590 2 <(x я - & # 120583 -один ) 2 / & # 120590 2

Икс я 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 х я & # 120583 +1 / & # 120590 2 я 2 / & # 120590 2 + & # 120583 -один 2 / & # 120590 2 - 2 х я & # 120583 -один / & # 120590 2

2 х я (& # 120583 -один - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -один 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 х я (& # 120583 -один - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -один 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

Вышеприведенное выражение имеет вид bx я + c> 0 где b = -2 (& # 120583 -один - & # 120583 +1 ) / & # 120590 2 и c = (& # 120583 -один 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Очевидно, что уравнение имеет вид линейный , отсюда и название линейный дискриминантный анализ.

Давайте продолжим статью о линейном дискриминантном анализе и посмотрим,

Математическое описание LDA

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

Мы предоставим выражение непосредственно для нашего конкретного случая, когда Y берет два класса {+1, -1} . Мы также расширим интуицию, показанную в предыдущем разделе, на общий случай, когда Икс может быть многомерным. Допустим, есть к независимые переменные. В данном случае класс означает & # 120583 -один и & # 120583 +1 были бы векторами размеров к * 1 и ковариационная матрица & # 120622 будет матрицей размеров к * к .

Функция классификатора задается как

Y = h (X) = знак (b Т X + c)

Куда,

b = -2 & # 120622 -один (& # 120583 -один - & # 120583 +1 )

c = & # 120583 -один Т & # 120622 -один & # 120583 -один - & # 120583 -один Т & # 120622 -один & # 120583 -один {-2 лн (1-п) / п}

Знаковая функция возвращает +1 если выражение б Т х + с> 0 , иначе возвращается -один . Термин натурального журнала в c присутствует, чтобы учесть тот факт, что вероятности классов не обязательно должны быть одинаковыми для обоих классов, т.е. п может быть любое значение между (0, 1), а не только 0,5.

Изучение параметров модели

Учитывая набор данных с N точки данных (Икс один , Y один ), (Икс 2 , Y 2 ),… (ИКС п , Y п ) , нам нужно оценить p, & # 120583 -один , & # 120583 +1 и & # 120622 . Метод статистической оценки, называемый Оценка максимального правдоподобия используется для оценки этих параметров. Выражения для вышеуказанных параметров приведены ниже.

& # 120583 +1 = (1 / N +1 ) * & # 120506 я: yi = + 1 Икс я

& # 120583 -один = (1 / N -один ) * & # 120506 я: yi = -1 Икс я

р = N +1 / N

& # 120622 = (1 / N) * & # 120506я = 1: N (Икс я - & # 120583 я ) (Икс я - & # 120583 я ) Т

куда N +1 = количество образцов, где y я = +1 и N -один = количество образцов, где y я = -1 .

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

что делает split в Java

Давайте продолжим статью о линейном дискриминантном анализе и посмотрим

Пример в R

Следующий код генерирует фиктивный набор данных с двумя независимыми переменными. X1 и X2 и зависимая переменная Y . Для X1 и X2 , мы сгенерируем выборку из двух многомерных гауссовских распределений со средними & # 120583 -один = (2, 2) и & # 120583 +1 = (6, 6) . 40% образцов относятся к классу +1 и 60% относятся к классу -один , следовательно р = 0,4 .

library (ggplot2) library (MASS) library (mvtnorm) # Матрица ковариаций для случайной двумерной гауссовской выборки var_covar = matrix (data = c (1.5, 0.3, 0.3, 1.5), nrow = 2) # Случайные двумерные гауссовские выборки для класса + 1 Xplus1<- rmvnorm(400, mean = c(6, 6), sigma = var_covar) # Random bivariate gaussian samples for class -1 Xminus1 <- rmvnorm(600, mean = c(2, 2), sigma = var_covar) #Samples for the dependent variable Y_samples <- c(rep(1, 400), rep(-1, 600)) #Combining the independent and dependent variables into a dataframe dataset <- as.data.frame(cbind(rbind(Xplus1, Xminus1), Y_samples)) colnames(dataset) <- c('X1', 'X2', 'Y') dataset$Y <- as.character(dataset$Y) #Plot the above samples and color by class labels ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y)) 

На приведенном выше рисунке синие точки представляют образцы из класса +1 а красные представляют образец из класса -один . Образцы частично пересекаются, т.е. классы нельзя полностью разделить простой линией. Другими словами, они не совсем линейно отделимый .

Теперь мы обучим модель LDA, используя приведенные выше данные.

# Обучите модель LDA, используя указанный выше набор данных lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Вывод:

Априорные вероятности групп:

-11

0,6 0,4

Группа означает:

X1 X2

-1 1,928108 2,010226

1 5.961004 6.015438

Коэффициенты линейных дискриминантов:

LD1

Х1 0,5646116

X2 0,5004175

Как видно, средние классы, изученные моделью, равны (1.928108, 2.010226) для класса -один и (5.961004, 6.015438) для класса +1 . Эти средства очень близки к средствам класса, которые мы использовали для генерации этих случайных выборок. Априорная вероятность для группы +1 оценка параметра п . В б вектор - линейные дискриминантные коэффициенты.

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

# Прогнозирование класса для каждого образца в вышеупомянутом наборе данных с использованием модели LDA y_pred<- predict(lda_model, newdata = dataset)$class #Adding the predictions as another column in the dataframe dataset$Y_lda_prediction <- as.character(y_pred) #Plot the above samples and color by actual and predicted class labels dataset$Y_actual_pred <- paste(dataset$Y, dataset$Y_lda_prediction, sep=',') ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y_actual_pred))

На рисунке выше фиолетовые образцы взяты из класса +1 которые были правильно классифицированы моделью LDA. Точно так же красные образцы взяты из класса -один которые были классифицированы правильно. Синие из класса +1 но были неправильно классифицированы как -один . Зеленые из класса -один которые были ошибочно классифицированы как +1 . Ошибки в классификации происходят из-за того, что эти выборки ближе к другому среднему классу (центру), чем их фактическое среднее значение класса.

На этом мы подошли к концу статьи, ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Обучение Edureka Data Analytics с R поможет вам получить опыт в программировании на R, манипулировании данными, исследовательском анализе данных, визуализации данных, интеллектуальном анализе данных, регрессии, анализе настроений и использовании R Studio для изучения реальных ситуаций в розничной торговле и социальных сетях.

Есть вопрос к нам? Пожалуйста, укажите это в комментариях к этой статье, и мы свяжемся с вами как можно скорее.