본문 바로가기
학습노트/통계

[통계학습] 부스팅과 주성분 분석

by kime2 2024. 6. 25.

범위 : 부스팅 ~ 주성분분석

용어정리

  • 앙상블: 여러 모델들의 집합을 통해 예측 결과를 만들어 내는 것
  • 부스팅 : 연속된 라운드마다 잔차가 큰 레코들에가중치는 높여 일련의 모델들을 생성하는 일반기법
  • 에이다브스트 : 잔차에 따라 데이터의 가중치를 조절하는 부스팅의 초기 버전
  • 그레디언트 부스팅 : 비용함수를 최소화하는 방향으로 부스팅을 활용하는 좀 더 일반적인 형태
  • 확률적 그레이디언트 부스팅 : 각 라운드마다 레고드와 열을 제표본추출하는 것을 포함하는 부스팅의 가장 일반적인 형태
  • 정규화 : 비용함수에 모델의 파라미터 개수에 해당하는 벌점 항을 추가해 오버피팅을 피하는 방법
  • 하이퍼파라미터 : 알고리즘을 피팅하기 전에 미리 세팅을 해야 하는 파라미터

1) 부스팅 알고리즘

잘못 분류된 관측 데이터에 가중치 증가 

> 현재 성능이 제일 떨어지는 데이터에 대해 더 집중학습

> 모델의 오차가 낮을수록 더 큰 가중치 부여

그레이디언트 부스팅은 에이다부스팅과 거의 비슷하지만 비용함수를 최적화하는 접근법을 사용한 점에 차이가 있다

> 그레이디언트 부스팅에서는 가중치를 조정하는 대신에 모델이 유사잔차를 학습하도록 함

> 자차가 큰 데이터를 더 집중적으로 학습하는 효과

 

2) 오버피팅의 문제

xgboost함수를 무작정 사용할 경우, 학습데이터에 오버피팅될 수 있음

 

< 오버피팅의 문제점 >

  • 학습데이터에 없는 새로운 데이터에 대한 모델의 정확도 감소
  • 모델의 예측 결과에 변동이 매우 심하고 불한정한 결과
  • 손실함수가 필요 이상으로 작아짐 *손실함수 = 예측한 값(yi)실제값의 차이를 측정하는 함수

 

방법1. 정규화 파라미터 : alpha(맨하튼거리, L1 정규화), lambda(유클리드 거리, L2정규화)

> 정규화 파라미터들을 크게하면, 모델이 복잡해질수록 더 많은 벌점을 부여하고 결과적으로 트리의 크기가 작아진다

https://www.cloudskillsboost.google/course_templates/12/video/487664?locale=ko

 

 

즉, 모델의 손실함수에가중치 크기를 줄이는 항을 추가하여

가중치가 너무 커지지 않도록 데약하는 것

1) L1 정규화(lasso) 

https://huidea.tistory.com/154

손실함수에 가중치 절댓값의 합(패널티)을 더하주는 것

W 벡터의 크기 =  a와b의 맨하튼 거리인 c

 

> 이때 가중치는 벡터의 요소들이 맨하튼 거리에 해당하는 방식으로 가중치의 절댓값의 합(패널티)이 최소화하도록 부여

> 가중치가 너무 작은 경우 상수 값에 의해 0이 되버림(0으로 수렴)

> 결과적으로 많은 가중치들이 0이 되도록 유도하여 모델을 단순화

>> 모델을 단순하게 만들어서 과적합을 감소

 

L2정규화 (Ridge)

벡터의 크기 =  a와b의 유클리드 거리인 c

 

손실함수에 가중치 제곱의 합을 더해주는 것

가중치 벡터의 유클리드 거리를 최소하하는 것 > 모델의 복잡성 감소

>> 모델의 가중치를 감소시켜서 과적합 감소

단, 제곱하는 방법이기 때문에 이상치에 민감

 

 

3)  하이퍼파라미터와 교차타당성검사

하이퍼파라미터들의 선택기준 : 교차타당성검사

  1. 교차타당성검사를 위하 데이터를 k개의 서로 다른 그룹(폴드)로 랜덤하게 나눈다
  2. 각 폴드마다 해당 폴드에 속한 데이터를 제외한 나머지 데이터를 가지고 모델을 학습한다
  3. 폴드에 속한 데이터를 이용해 모델을 평가한다 > 표본 밖 데이터에 대한 모델의 성능
  4. 설정한 하이터 파라미터 조합마다 폴드에 대한 오차의 평균을 계산해서 전체적으로 낮은 오차를 갖는 최적의 하이퍼퍼라미터 조합을 찾는다

주요개념

  • 부스팅 방법은 일련의 모델들을 피팅할 때 이전 라운드에서 오차가 컸던 레코드들에 가중치를 더하는 방식을 사용하는 앙상블 모델의 한 부류
  • 확률적 그레이디언트 부스팅 가운데에서 가장 일반적으로 사용되며 가장 좋은 성능을 보인다. 확률적 그레이ㅣ언트 부스팅의 가장 일반적인 형태는 트리모델을 사용한다
  • XG부스트는 확률적 스레이디언트 부스팅을 사용하기 위한 가장 유명한 소프트웨어 패키지로 데이터과학에서 활용되는 대부분의 언어 지원한다
  • 부스팅은 데이터에 오버피팅되기 쉽다. 이를 피하기 위해 하이퍼파라미터를 잘 설정해야 한다
  • 정규화는 파라미터 개수에 관한 벌점 항목을 모델링에 포함하여 모버피팅을 피하는 방법이다.
  • 부스팅에서 여러 개의 하이퍼파라미터들의 조합을 찾아야 할 때 교차타당성검사는 아주 중요하다

7. 비지도학습

비지도 학습 : 레이블이 달린 데이터를 이용해 모델을 학습하는 과정없이 데이터로부터 의미를 이끌어내는 통계적 기법

> 응답변수와 예측변수 사이의 구분이 없다

비지도 학습 + 예측 : 레이블이 없는 데이터에 대래 분류를 예측하고 싶은 경우

모델을 훈련시킬 수 있는 응답변수가 없으므로 클러스터링을 통해 공통적인 패턴을 식별하고 분류

 

 

7.1 주성분분석 : Principal component (for 수치형 변수)

용어정리

  • 주성분 : 예측변수들의 선형결합 (전체 변수들의 변동성을 거의 대부분 설명할 수 있는 소수 변수들의 집합)
  • 부하loading : 예측변수들을 성분으로 변형할 때 사용되는 가중치
  • 스크리그래프 : 성분들의 변동을 표시한 그림, 설면된 분산 혹은 설명된 분산의 비율을 이용하여 성분들의 상대적인 중요도를 보여준다

1) 목표 

다차원 데이터의 분포를 가장 잘 설명해주는 성분들을 찾아 데이터의 분산을 최대한 보존하는 축을 통해 차원을 축소

 

2) 원리

평균이동 : 데이터의 평균을 구한 다음, 모든 데이터에서 평균을 빼서 데이터의 평균을 0인 상태로 만든다

공분산 행렬 계산 *공분산행렬 = 데이터의 분산과 공분산을 요약한 행렬

고유값과 고유벡터 계산

*고유값 = 공분산 행렬의 분산(고유벡터의 방향으로 얼마만큼의 크기로 벡터공간을 늘렸는가)

*고유벡터 = 공분산행렬의 방향

주성분 선택 : 고유값이 큰 순서대로 고유 벡터를 정렬한 후, 가장 큰 값이 제 1 주성분

공분산행렬 고유벡터
https://angeloyeo.github.io/2019/07/27/PCA.html

 

3) 좀더 쉽게

 

데이터의 분포를 가장 잘 설명하는 축을 찾는 것

그림 상 > 3번

 

찾는 방법은 각 축과 데이터의 거리가 직각으로 맞닿는 지점과 (0,0)의 거리가 최대가 되는 축

> 즉, 직각으로 맞닿는 지점의 분포가 가장 넓게 퍼진 축

> (0,0)으로부터 각 데이터의 지점까지의 거리의 합이 가장 큰 축 =  주성분

이때 피타고라스 정리에 의해 축과 데이터의 거리의 합은 최소가 됨

 

데이터의 분포를 가장 잘 설명하는 축과 직교를 이루는 선이 제 2 주성분이 된다

 

 

예시) 셰브런(CVX)과 엑슨모빌(XOM)의 주가 수익 데이터의 PCA

첫번째 주성분 :  셰브런과 엑슨모빌에 대한 가중치는 각각 -0.747, 0.665

> 두 석유 회사 사이의 상관관계를 반영하는 CVX와 XOM의 평균을 의미

두번째 주성분 : 셰브런과 엑슨모빌에 대한 가중치는 각각 -0.665, 0.747

> CVX와 XOM의 주가가 달라지는 지점을 반영

 

 

pc1(제 1주성분)축은 데이터 퍼짐이 가장 커기는 방향으로 설정

pc2(제 2주성분)축은 pc1과 수직방향

 

각 축에 있는 정보는 데이터 퍼짐으로 나타냄

pc1방향으로 거리(데이터의 퍼짐)가 멀다는 것(점선이 길게 분포)은 pc1에 많은 정보가 있다는 뜻

pc2에는 pc1으로 나타낼 수 없는 나머지 소량의 정보가 포함

 

 

 

2) 해석 및 활용

출처 : http://unibranding.tistory.com/211

출처 : https://rpubs.com/Evan_Jung/pca

  • 면 : 면발에 대한 점수
  • 그룻 : 라면그릇 크기에 대한 점수
  • 국물 : 국물맛에 대한 점수

    100명을 대상으로 만족도 설문조사 결과

 목표 1) 각 라면에 대한 면, 그릇, 국물이 맛에 까지는 영향에 정도는 ?

*기준 점수가 높을수록 맛있는것

 

목표 2) 면, 그릇, 국물이 끼치는 영향을 수치화해서 맛에 대한 방정식을 만든다면?

* 큰 영향을 끼치는 고유치 값을 2개 선정 (주성분 2개) 

 

(1) 표준화하기 (x - mean(x)) / sd(x)

 

(2) 상관관계 구하기

 

(3) 주성분 구하기

 

첫번째 주성분의 기여율은 약 54%로 가장 크다

* 기여율 = 각 주성분이 가진 정보(분산)

> 분석 대상의 데이터가 어느정도 집약되어 있는지 파악 가능

 

pc1은 면, 그릇, 국물에 모두 상관관계를 보이며(비율도 비슷)

pc2는 특히 그릇과 강한 상관관계를 보임, 면과는 음의 상관관계를 보임

 

목표 2) 면, 그릇, 국물이 끼치는 영향을 수치화해서 맛에 대한 방정식을 만든다면?

z1(제1 주성분) = 0.57 x u1 + 0.52 x u2 + 0.65 x u3

z2(제2 주성분) = -0.68 x u1 + 0.73 x u2 + 0.02 x u3

*u1: 면의 표준점수 / u2: 그릇의 표준점수 / u3: 국물의 표준점수

 

(4)  제1주성분, 제2 주성분의 점수 구하기

  • pc1이 높다는 것은 면, 그릇, 국물의 전반적인 점수가 높은 것
  • pc2가 높다는 것은 그릇에 대한 평가 점수가 높은 것

 

(5) 주성분 점수를 가지고 행렬도 그리기

목표 1) 각 라면에 대한 면, 그릇, 국물이 맛에 까지는 영향에 정도는 ?

  • 해물라면이 '그릇'의 평가에 가장 많은 영향을 받음

> 그릇을 가장 잘 설명하는 제 2 주성분에 가장 높은 점수를 받음

주성분 주성분 점수

 

  • 얼큰라면은 면의 영향을 많이 받음

> pc1에는 상대적 높은 점수를 받았으나 pc2에서는 가장 낮은 점수를 받음

 

 

 

면, 국물, 그릇의 종합평가의 순위는 짬뽕라면 > 김치라면 순

 

주요개념

  • 주성분은 (수치형)예측변수들의 선형결합니다
  • 주성분들은 서로 간의 상관관계까 최소화되며 중복성이 줄어들도록 한다
  • 제한된 개수의 주성분들로도 결과변수에서 대부분의 변동을 설명할 수 있다
  • 제한된 개수의 주성분들은 원래의 예측변수를 대신하여 차원이 감소된 형태로 사용할 수 있다
  • 대응분석은 번주형 데이터에 대해 표면적으로 유사한 기술이지만 빅데이터에서는 유용하지 않다