Решение Граница LDA в R - PullRequest
       17

Решение Граница LDA в R

0 голосов
/ 30 января 2020

Я пытаюсь сделать бинарную классификацию в R, используя LDA. Я использую пакет MASS, генерирую модель и проверяю производительность. Пока все хорошо. Но затем я делаю это для нескольких различных наборов данных и хочу сравнить их все. Примерно так, как показано ниже, где у меня есть сэмплы по оси X и значения LD1 (из функции предиката ()) по оси Y enter image description here

Как видите, граница принятия решения различна для каждого набора данных (в черном цвете). Я хочу общую границу решения для каждого набора данных. Что-то вроде оранжевой пунктирной линии. Поэтому я попытался вычислить границу решения для каждого набора данных, используя формулу
enter image description here

lda_model = lda(formula = class ~ ., data = B_V_test)
r_predict = predict(lda_model,B_V_test)
cov_inv = solve(cov(B_V_test[,1:2]))
mu_1 = lda_model$means[1,]
mu_2 = lda_model$means[2,]

D = rbind(c(eigen(cov_inv)$values[1],0),c(0,eigen(cov_inv)$values[2]))
U = eigen(cov_inv)$vectors
Dpow = D^(-0.5)
Dpow[is.infinite(Dpow)] = 0
S = Dpow %*% t(U)


a = log(lda_model$prior[1]/lda_model$prior[2])
b = t(mu_1+mu_2)
c = S %*% (mu_1-mu_2)
a0 = a-(0.5)*(b%*%c)

a1 = c[1]
a2 = c[2]

intercept = -a0/a2
slope = -a1/a2

Однако это не дает мне точную границу решения, которую я ищу , Можете ли вы помочь мне с этим или указать мне направление, которое может помочь мне переделать мою фигуру с границей решения, например, оранжевой линией? Спасибо!

...