스터디/Machine Learn

2. 지도학습- 분류와 회귀

elenalee 2024. 8. 1. 09:36

분류 : 주어진 데이터에 대해 정의된 몇개의 클래스로 입력을 구분, 인식문제 

학습결과 : decision boundary와 decision function

 

결정경계 𝑔(𝑥:𝜃) 를 얻는 방법

① 확률 기반 방법

    데이터가 𝑥ₖ가 주어졌을때 특정 클래 𝑪ₖ에 속할 조건부 확률을 추정 𝐏(𝑪ₖ|𝑥), 베이즈 분류기

② 데이터 기반 방법 

    데이터 간의 관계를 바탕으로 분류, K-최근접이웃 분류기

 

확률분포에 기반한 분류의 개념 

 

1. 베이즈 분류기 

  

(1) 베이즈 분류기

- 베이즈 정리로부터 유도된 결정경계를 이용한 분류

- 이진 분류 : 2개의 분류(C1, C2)에서 x가 주어졌을때 C1 혹은 C2에 소속될 확률이 큰 클래스에 할당

- 관찰된 데이터가 클래스에 속할확률(후험확률)을 각클래스에 대한 선험확률(pC1혹은 pC2)에서 추정 

   클래스별 후험확률을 비교하는 판별함수 (C1과 C2의 우도를 비교하여 1보다 큰지 작은지로 구분)

 

- 클래스의 발생 확률에 따라 클래스의 갯수에 따라 결정경계가 상이하게 나타남 

- 바이오와 같이 감염환자의 비율이 극히 낮은 경우, 대다수인 비감염자(C2)의 폭이 넒어 C1으로 경계이동 

(2) 분류절차 

학습데이터 수집 학습데이터로부터 클래스별 분포함수 추정 P(x|Ck) 테스트 데이터 입력 (x_new)

 각 클래스별 판별함수값 계산 g_k = p(x|Ck)p(Ck)   g_k(x_new)가 가장 큰 클래스 k할당 

 

(3) 베이즈 분류기 구현 

 

① 가우시안 확률분포를 가정한 베이즈 분류기  (basic)

 - 정규분포를 가정하고 확률밀도 함수 구함 (n개의 각 i에 대해)

 - 계산 편의를 위해 로그처리( 도출된 args에 로그 반영 ), 로그와 (-)부호감안 최소값 찾음

 

공분산 행렬에 따른 판별함수

- 클래스 공통단위 공분산 행렬, 유클리드 거리 (모든 클래스의 분산이 동일한 단위행렬의 상수배)

  선험확률 동일가정, 𝚺ᵢ = σ²𝑰, 𝑰 : unit matrix이므로 분포 동심원

  차원 n/분산(동일)항목 및 상수항 생략 , 클래스들의 연산에 동일한 비율적용

* 클래스들이 Gaussian distribution, prior probability, covariance 동일함을 전제로 성립

 

- 클래스 공통 공분산 행렬, 마할라노비스거리  (동일한 공분산을 가지지만 일반적인 행렬)

  선험확률 동일가정,  𝚺ᵢ = 𝚺 통상 타원형태, 상수항 생략 ( 차원 n/분산은 i마다 다르므로 생략불가) 

  클래스들과의 연산에 분산을 감안한 정규화 요소 반영

   ➡ 최소거리 분류기 (거리는 마할라노비스 거리), 공분산이 대각행렬이면 정규화하여 유클리드거리 가능

 

- 일반적인 공분산 행렬 ( 일반적인 형태 )

   각 클래스 계산시 공분산 행렬도 함께 계산 ( 𝚺ᵢ = 𝚺ⱼ 서로 다른 타원형 분포 )

   클래스별 평균과 공분산 행렬을 추정해야 하며 계산이 많고, 오류발생 가능성 높아 간소화

 

 

비교결론 

- 공분산 행렬 𝚺ₖ 단위행렬로 가정 (x와 𝝁ₖ와의 거리를 비교, 가까운 클래스 할당) 최소거리 분류기

- 공분산 행렬 𝚺ₖ 가 동일하다고 가정 (하나의 𝚺추정, 평균과 거리계산에 사용)  마할라노비스 거리

 

공분산 ( 단위행렬, 하나의 행렬, 클래스별 행렬 )에 따른 결정경계 형태

 

 

2. K-최근접이웃 분류기  

 

1) 최근접 이웃분류기 

- 클래스와 상관없이 모든 데이터 중에서 가장 작은 거리값을 갖는 데이터의 클래스로 할당

 

 수행과정 

주어진 데이터 x와 모든 학습데이터 {𝑥₁, 𝑥₂, ... , 𝑥ₙ }와 거리 계산,

가장 가까운 데이터 x_min설정 →  x_min이 속한 y(x_min)으로 결정 

 단 하나의 데이터로 클래스를 결정, 과다적합 다발 

** 베이즈 분류기는 테스트 데이터와 학습 데이터의 오류율이 유사하나 최근접의 경우 오류율 크게 증가 

 

2) K-NN(nearest neighbor)

- 가우시안 분포에 의한 베이즈에 비해 비선형적인 결정경계에 정확성 높음 (성능과 데이터분포에 상관성 X) 

- 모든 학습 데이터와 거리 계산에 비용이 소모되며, 학습 데이터 저장이 요구, 적절한 K설정이 중요

 

(1) 수행과정 

주어진 데이터 x와 모든 학습데이터  {𝑥₁, 𝑥₂, ... , 𝑥ₙ }와 거리를 계산하여 

  가장 가까운 데이터 K개를 찾아 후보집합 N(x) = { 𝑥¹, 𝑥², ..., 𝑥} 생성 

   후보집합의 각 원소가 어떤 클래스에 속하는지 레이블값 탐색 𝑦(𝑥¹), 𝑦(𝑥²), ..., 𝑦(𝑥ᴷ)

   가장 많은 빈도수를 차지하는 클래스를 찾아 𝑥를 해당 클래스에 할당

 

(2) K값의 영향 

적절한 K값의 결정 : 주어진 데이터의 분포특성에 의존 ( 가장 좋은 성능을 주는 값 선택 ), √n 권장 

K=1, 최근접 이웃분류기로서 이웃한 데이터에만 의존하여 노이즈에 민감하고 과다적합 발생

K >> 1, 전체 데이터 영역에서 각 클래스가 차지하는 비율(선험비율)에 의존

** 주어진 데이터의 크기에 비해 K가 적절하지 않으면, 학습 데이터의 클래스 비율에 의존

 

(3) 거리함수 

- 거리함수에 의해 선택되는 이웃이 달라지고 분류성능에 영향 

** 내적은 유사도 측정(벡터의 크기에 비례하므로 거리 계산/비교시 정규화 필수)

 

K-NN vs. Gaussian Bayesian Classifier 

- 데이터가 복잡한 비선형 구조를 가지는 경우 K-NN이 매우 좋은 성능을 가짐 

Gaussian Bayesian Classifier 

- 각 클래스에 대한 확률분포함수 가정, 학습데이터로 평균과 표준편차만 계산하여활용
   ( 분류과정에서 학습 데이터 불필요 , 함수로서 분류)

- 확률분포가정이 맞지 않는 경우 급격한 성능저하 

K-NN

- 확률분포모델을 가정없이 데이터 집합으로 추정, 새 데이터는 주어지면 학습 데이터전체와 거리 계산

  ( 학습데이터 저장을 위한 메모리와 계산비용 발생 )

 

기타 분류기 - 베이즈 분류기, K최근접이웃 분류기, 로지스틱 회귀(회귀를 분류 문제로 확장),

                    결정트리 (속성들의 정보를 순차적으로 적용하여 분류, 진단결과의 설명력이 우수)

                    SVM (목적 함수로서 결정 경계의 마진을 최대화하여 일반화 성능우수)

                    신경망 (복잡한 결정경계를 모델로 정의/학습) 

 

 

 

--------------------------------------------------------------------------------------------

3. 회귀  (Regression)

데이터들의 관계를 표현하는 직선 , 곡선을 찾는 문제  ▶ 회귀, 보간법 

회귀 : 입력변수와 출력변수 사이의 매핑관계를 찾는것 

시계열 예측 : 주가예측, 환율예측

학습의 목표 : 예측오차를 최소화하는 최적의 회귀함수 𝑓(𝑥) = ( 𝑥 ; θ ) 도출

➡ 최소 자승법 (Least squared method) : 오차함수를 최소화하는 파라미터 사용

 

보간 곡선 : 제곱 오차가 0이지만 복잡

회귀 직선 : 작은 오차, 전체적인 데이터의 경향을 보여주는 입출력 관계표현에 적합                

    

1) 선형회귀 (Linear Regression)

 

(1) 선형 회귀식

데이터 집합 D = { (𝑥ᵢ , 𝑦ᵢ) } 에 대해 (𝑥, 𝑦)관계를 설명할 수 있는 선형함수 𝑦

𝑦 = 𝑤𝑥 + 𝑤 

 

① 최소자승법 ( 𝑤₁ , 𝑤₀ 최적화 )

- 모든 데이터에 대해 잔차가 최소가 되는 𝑤₁ , 𝑤₀를 구함 

𝑦 = 𝑤𝑥 + 𝑤₀ + 𝑒 ( 𝑤₁ : 기울기,  𝑤₀ : 절편,  𝑒 : 오차 또는 잔차(residual))

𝑒ᵢ = 𝑦ᵢ - ( 𝑤₁𝑥ᵢ  + 𝑤₀ )

- 데이터 집합의 잔차의 수학적인 합은 0이므로 잔차의 제곱의 합으로 적용하여

  Mean Squared Error(MSE, 평균제곱합)로 적용 

 

미분  ( 𝑤₁ , 𝑤₀ 최적화 )

- 오차를 최소화하기 위해  𝑤₁ 과 𝑤₀ 에 대해 편미분을 수행함 

 

(2) 평가 (예측에 대한 평가는 별도의 테스트 데이터집합으로 수행)

 

2) 다변량 선형회귀 

n차원 입력벡터 𝑥 = { 𝑥₁, 𝑥₂,...𝑥ₙ } , 입력값이 n차원이면 회귀함수는 n차원의 초평면 

예) 나이, 몸무게에 따른 수축기 혈압 추정값 (해당 초평면을 찾는 문제)

 

회귀함수 : 𝑓(𝑥) = 𝑤₀ + 𝑤₁𝑥₁ + 𝑤𝑥₂+  … 𝑤𝑥ₙ  (다수의 차원에 대한 회귀계수 도출)

상수항을 삽입한 데이터와 회귀계수간의 벡터연산

 

w행렬은 입력데이터의 벡터와 y벡터의 연산으로 얻어짐

 

- x와 y의 관계를 선형매핑으로 표현할수 없는 경우에는 기본적으로 적용이 불가능하나, 

  선형화 과정을 거쳐 (x와 y를 적절히 변형) 선형 매핑관계를 찾는 방식이 이용됨 

  (로그,  역수등을 이용한 선형화)

 

** 복잡한 형태의 곡선으로의 확장하여 매핑

다항회귀 (polynomial regression) 

고차 다항식 사용 → 𝑦(𝑥) = 𝑤₀ + 𝑤𝑥 + 𝑤𝑥²+   𝑤𝑥

 

비선형 입력 변환함수를 사용한 선형회귀

𝑦(𝑥) = 𝑤₀ + 𝑤𝝓₁(𝑥) + 𝑤𝝓₂(𝑥)+   𝑤𝝓ₙ(𝑥)

 

비선형회귀 (non-linear regression)

신경망과 같은 복잡한 비선형함수를 사용하는 방법

커널을 이용하여 고차원 공간으로 매핑하는 SVM적용

 

2) 로지스틱 회귀 (Logistic Regression)

 

(1)범주형 데이터의 회귀

- 선형회귀분석의 종속변수(출력)을 범주형으로 확장한 것, 분류문제에 적용

- 입력값이 각 클래스에 속할 확률값을 회귀분석으로 예측 (분류문제에 적용할수 있도록 회귀확장)

- 이진 출력 (0,1) 적용

 

(2) 로지스틱 함수

𝑥 ∈ ( -∞ ~ ∞)를 항상 (0,1)의 범위로 Mapping하는 S형 함수

 

함수의 출력값을 클래스 레이블에 대한 사후확률 𝑝( 𝑦 = 1 | 𝑥 )

𝑝( 𝑦 = 1 | 𝑥 ) ≤ 0.5   →  𝑥  𝑪₁ ( 𝑦 = 0 )

𝑝( 𝑦 = 1 | 𝑥 ) > 0.5   →  𝑥  𝑪 ( 𝑦 = 1 )

로지스틱 함수를 이용한 사후확률 추정  𝑝( 𝑦 = 1 | 𝑥 ) 

 

Odds Ratio (오즈비, 0 < odds ≤ ∞ ), 오즈비를 간단히 계산하기 위해 로그로서 로짓변환 

𝑥  𝑪₂ 이면 분자가 크며 odds > 1 

𝑥  𝑪₁ 이면 분모가 크며 odds < 1 

 

Logit Function (오즈비에 log함수를 취한것) : mx+b가 결정경계

 

- 회귀계수 m,b를 구하기 위해 베르누이 분포 이용 

 

목적함수 D에 대한 로그우도 (log likelihood) 

최대우도 추정법 (maximum likelihood estimation)

수치적 최적화 방법으로 반복적 추정을 통해 최적화하여 파라미터 m과 b의 추정후 새로운 데이터의 분류과정