R에서 선형 판별 분석을 구현하는 방법은 무엇입니까?



이 기사에서는 선형 판별 분석이 무엇인지 설명하고 R 프로그래밍 언어를 사용한 자세한 데모를 제공합니다.

선형 판별 분석은 분류 문제를 해결하는 데 사용되는 매우 널리 사용되는 기계 학습 기술입니다. 이 기사에서 우리는이 기술 뒤에 숨겨진 직감과 수학을 이해하려고 노력할 것입니다. LDA 구현의 예 아르 자형 또한 제공됩니다.

그럼 시작하겠습니다.





선형 판별 분석 가정

선형 판별 분석은 다음 가정을 기반으로합니다.

  • 종속 변수 와이 이산 적입니다. 이 기사에서는 종속 변수가 이진이고 클래스 값을 취한다고 가정합니다. {+1, -1} . 클래스에 속하는 샘플의 확률 +1 , 즉 P (Y = +1) = p . 따라서 클래스에 속하는 샘플의 확률은 -하나 이다 1-p .



  • 독립 변수 엑스 가우스 분포에서 비롯됩니다. 가우스 분포의 평균은 클래스 레이블에 따라 다릅니다. 와이 . 즉 와이 나는 = +1 , 다음의 평균 엑스 나는 이다 & # 120583 +1 , 그렇지 않으면 & # 120583 -하나 . 분산 & # 120590 2 두 클래스 모두 동일합니다. 수학적으로 말하자면 X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) X | (Y = -1) ~ N (& # 120583 -하나 , & # 120590 2 ) , 어디 정규 분포를 나타냅니다.

    자바의 스캐너 클래스는 무엇입니까

이 정보로 공동 분포를 구성 할 수 있습니다. P (X, Y) 독립 및 종속 변수에 대해. 따라서 LDA는 생성 분류 자 ​​모델 . 밀접하게 관련된 생성 분류기는 QDA (Quadratic Discriminant Analysis)입니다. 클래스 차이가 다르다는 점을 제외하고는 LDA의 모든 동일한 가정을 기반으로합니다.

Linear Discriminant Analysis 기사를 계속 진행하고

직관

다음에 대한 클래스 조건부 가우스 분포를 고려하십시오. 엑스 주어진 수업 와이 . 아래 그림은 분포의 밀도 함수를 보여줍니다. 이 그림에서 Y = +1 , 다음의 평균 엑스 10이고 Y = -1 , 평균은 2입니다. 두 경우 모두 분산은 2입니다.

직관-선형 차별 분석-Edureka

이제 새로운 가치 엑스 우리에게 주어집니다. 그냥 다음과 같이 표시하자 엑스 나는 . 작업은 이것에 대해 가장 가능성이 높은 클래스 레이블을 결정하는 것입니다 엑스 나는 , 즉 와이 나는 . 단순성을 위해 확률은 클래스에 속하는 샘플의 +1 클래스에 속하는 것과 동일 -하나 , 즉 p = 0.5 .

직관적으로 말하면 엑스 나는 에 더 가깝다 & # 120583 +1 그것보다 & # 120583 -하나 , 그러면 와이 나는 = +1 . 좀 더 공식적으로 와이 나는 = +1 만약:

| x 나는 -& # 120583 +1 |<|x 나는 -& # 120583 -하나 |

표준 편차로 양쪽 정규화 :

| x 나는 -& # 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 ) .

방정식의 형태는 다음과 같습니다. 선의 , 따라서 이름은 선형 판별 분석입니다.

Linear Discriminant Analysis 기사를 계속해서 살펴 보겠습니다.

LDA의 수학적 설명

LDA 표현의 수학적 유도는 다음과 같은 개념을 기반으로합니다. 베이 즈 규칙 Bayes 최적 분류기 . 관심있는 독자는 이러한 개념에 대해 더 많이 읽어 보시기 바랍니다. 식을 유도하는 한 가지 방법을 찾을 수 있습니다. 여기 .

우리는 특정 경우에 대한 표현을 직접 제공 할 것입니다. 와이 두 수업을 들다 {+1, -1} . 또한 이전 섹션에 표시된 직관을 다음과 같은 일반적인 경우로 확장합니다. 엑스 다차원적일 수 있습니다. 거기에 있다고 가정합시다 ...에 독립 변수. 이 경우 클래스는 & # 120583 -하나 & # 120583 +1 차원의 벡터 k * 1 및 분산-공분산 행렬 & # 120622 차원의 행렬이 될 것입니다. k * k .

분류 자 기능은 다음과 같이 제공됩니다.

Y = h (X) = 부호 (b X + c)

어디,

b = -2 및 # 120622 -하나 (& # 120583 -하나 -& # 120583 +1 )

c = & # 120583 -하나 & # 120622 -하나 & # 120583 -하나 -& # 120583 -하나 & # 120622 -하나 & # 120583 -하나 {-2 ln (1-p) / p}

부호 함수는 다음을 반환합니다. +1 만약 표현이 x + c> 0 , 그렇지 않으면 -하나 . 자연 로그 용어 클래스 확률이 두 클래스에 대해 동일 할 필요는 없다는 사실을 조정하기 위해 존재합니다. 0.5가 아닌 (0, 1) 사이의 모든 값이 될 수 있습니다.

모델 매개 변수 학습

주어진 데이터 세트 데이터 점수 (엑스 하나 , Y 하나 ), (x 2 , Y 2 ),… (X , Y ) , 우리는 추정해야합니다 p, & # 120583 -하나 , & # 120583 +1 & # 120622 . 라는 통계적 추정 기법 최대 가능성 추정 이러한 매개 변수를 추정하는 데 사용됩니다. 위의 매개 변수에 대한 표현식은 다음과 같습니다.

& # 120583 +1 = (1 / N +1 ) * & # 120506 i : yi = + 1 엑스 나는

& # 120583 -하나 = (1 / N -하나 ) * & # 120506 i : yi = -1 엑스 나는

p = N +1 /엔

자바에서 문자열을 날짜로 변환하는 방법

& # 120622 = (1 / N) * & # 120506나는 = 1 : N (엑스 나는 -& # 120583 나는 ) (x 나는 -& # 120583 나는 )

어디 +1 = y 나는 = +1 -하나 = y 나는 = -1 .

위의 식으로 LDA 모델이 완성됩니다. 위의 표현식을 사용하여 모델 매개 변수를 추정하고이를 분류기 함수에서 사용하여 독립 변수의 새 입력 값에 대한 클래스 레이블을 얻을 수 있습니다. 엑스 .

Linear Discriminant Analysis 기사를 계속 진행하고

R의 예

다음 코드는 두 개의 독립 변수가있는 더미 데이터 세트를 생성합니다. X1 X2 및 종속 변수 와이 . 에 대한 X1 X2 , 우리는 평균을 가진 두 개의 다변량 가우스 분포에서 샘플을 생성합니다 & # 120583 -하나 = (2, 2) & # 120583 +1 = (6, 6) . 샘플의 40 %가 클래스에 속합니다. +1 60 %는 수업에 속합니다 -하나 따라서 p = 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_model 데이터 세트를 사용하여 LDA 모델 훈련<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

산출:

그룹의 사전 확률 :

-열한

0.6 0.4

그룹은 다음을 의미합니다.

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

선형 판별 계수 :

LD1

X1 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 . 이러한 샘플은 실제 클래스 평균보다 다른 클래스 평균 (중심)에 더 가깝기 때문에 오 분류가 발생합니다.

이것으로이 기사의 끝으로 이동합니다. 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 R 교육을 통한 Edureka의 데이터 분석은 R 프로그래밍, 데이터 조작, 탐색 적 데이터 분석, 데이터 시각화, 데이터 마이닝, 회귀, 감정 분석에 대한 전문 지식을 습득하고 소매, 소셜 미디어에 대한 실제 사례 연구에 R Studio를 사용하는 데 도움이됩니다.

질문이 있으십니까? 이 기사의 댓글 섹션에 언급 해 주시면 최대한 빨리 답변 드리겠습니다.