분류
업데이트:
분류
- 일반적으로 binary class를 구분하는 문제
- 일반적인 분류 문제 접근 순서
- 레코드가 속할 것이라고 생각되는 관심 클래스에 대한 컷오프 확률을 정한다.
- 레코드가 관심 클래스에 속할 확률을 추정한다.
- 그 확률이 컷오프 확률 이상이면 관심 크래스에 이 레코드를 할당한다.
- 컷오프가 높을수록 1로 분류되는 레코드가 적어진다.
- 클래스가 두 개 이상일 때에는
- 복수개의 클래스를 이진 문제로 변환하고
- 나눈 결과를 다시 분류하는 방식으로 해결할 수 있다.
목차
나이브 베이즈
용어 정리
- 조건부확률(conditional probability): 어떤 사건이 주어졌을 때, 해당 사건을 과찰할 확률
- 사전확률(posterior probability): 예측 정보를 통합한 후 결과의 확률 (사전확률에서는 예측변수에 대한 정보를 고려하지 않음)
- 나이브 베이즈 알고리즘은
- 주어진 결과에 대해 예측변수 값을 관찰할 확률을 사용하여,
- 예측변수가 주어졌을 때, 결과 Y = i를 관찰할 확률을 추정
- 나이브하지 않은 베이지언 분류는 아래와 같을것이다.
- 예측변수 프로파일이 동일한 ( 예측변수 값이 동일한) 모든 레코드를 찾음
- 해당 레코드들이 가장 많이 속한 (가능성이 가장 많은)클래스를 정함
- 새 레코드에 해당 클래스를 지정
- 모든 예측변수들이 동일하다면 같은 클래스에 할당될 가능성 높음
- 표본에서 새로 들어온 레코드와 일치하는 데이터를 찾는 것에 중점
나이브하지 않은 베이지언 분류는 왜 현실성이 없을까?
- 데이터가 많으면 서로 완전히 일치하는 경우가 거의 없다.
- 나이브 베이즈는 베이지언 통계의 방법으로 간주되지 않는다.
- 통계 지식이 거의 필요 없는 데이터 중심의 경험적 방법이다.
- 단지, 베이즈 규칙과 비슷한 예측 계산이 들어가서 이름이 ‘나이브 베이즈’라고 지어짐.
나이브한 해법
- 나이브 베이즈는 위의 방법과 달리, 전체 데이터를 활용함.
- 공식 설명: p.202, 이해 안 됨…
- 나이브 베이지언 분류기는 편향된 추정 결과를 예측하는 것으로 알려져있음
- Y=1인 확률에 따라 레코드들에 순위를 매기는 것이 목적
- 확률의 비편향된 추정치를 구할 필요가 없다면, 나이브 베이즈도 성능 우수 -
수치형 예측변수
- 베이지언 분류기는 예측변수들이 범주형인 경우 적합
- 수치형 변수에 나이브 베이즈를 적욯하기 위해서는 두 가지 접근법 중 하나를 따라야 함.
- 수치형 예측변수를 binning하여 범주형 변환 후 알고리즘 적용
- 조건부확률을 추정하기 위해 정규분포같은 확률모형 사용
주요 개념
- 나이브 베이즈는 예측변수와 결과변수 모두 범주형이어야함
- 각 출력 카테고리 안에서, 어떤 예측변수의 카테고리가 가장 가능성이 높은가?
- 이 정보는 주어진 예측변수 값에 대해 결과 카테고리의 확률을 추정하는 것으로 바뀜
판별분석 (discrminant analysis)
용어 정리
- 공분산(covariance): 하나의 변수가 다른 변수와 함께 변화하는 정도(크기, 방향)를 측정하는 지표
- 판별함수(discriminent function): 예측변수에 적용했을 때, 클래스 구분을 최대화하는 함수
- 판별 가중치(discriminant weight): 판별함수를 적용하여 얻은 점수, 어떤 클래스에 속할 확률을 추정할 때에 사용
- 가장 일반적으로 사용되는 판별분석은, 선형판별분석(LDA, linear discriminant analysis)
- 트리, 로지스틱회귀 등 더 정교한 기법이 나온 후로는 잘 사용되지 않음
- 하지만, 주성분분석 등에서 연결되어 사용
- 예측변수들의 중요성 측정이나, 효과적으로 특징을 선택하는 방법으로도 사용
공분산행렬
- 공분산이란, 두 변수 x와 z사이의 관계를 의미하는 지표
- 수식: (Σ(x 오차)(z 오차)) / n-1
- 상관관계와 마찬가지로, 양수는 양의 관계, 음수는 음의 관계
- 범위는 공분산은 변수 x와 z에서 사용하는 척도와 동일한 척도에서 정의됨
- (상관관계는 -1~1)
- 범위는 공분산은 변수 x와 z에서 사용하는 척도와 동일한 척도에서 정의됨
- 공분산행렬 Σ는 [[x의 분산, x,z의 공분산], [x,z의 공분산, z의 분산]] 형태
- 대각 행렬에 변수 x의 분산, z의 분산, 비대각 행렬에 x, z의 공분산
피셔의 선형판별
- 그룹 안의 편차와 다른 그룹 간의 편차를 구분
- 레코드를 두 클래스로 나누는 방법을 찾기 위해,
- LDA는 ‘내부’제곱합 SS내부 (그룹 안 변동 측정)에 대한 ‘사이’제곱합 SS사이(두 그룹 사이의 편차 측정)의 비율을 최대화하는 것을 목표로 함
- 두 그룹은, y=0에 대해 (x0, z0), y=1에 대해 (x1, z1)으로 나뉘게 됨
- 이 방법은 SS사이 / SS내부 비율을 최대화하는 선형 결합 w(x)x + w(z)z를 찾음
- 사이 제곱합의 각 값은 두 그룹 평균 사이의 거리 제곱
- 내부 제곱합의 각 값은 각 그룹 내의 평균을 주변으로 퍼져있는 정도
- SS사이 를 최대화하고, SS내부 를 최소화하는 것이 두 그룹 사이를 가장 명확히 나누는 방법임
주요 개념
- 판별분석은 예측변수나 결과변수가 범주/연속에 구애받지 않고 잘 동작
- 공분산행렬을 사용하여 각 클래스를 구분하는 선형판별함수를 계산할 수 있음.
- 이 함수를 통해 각 레코드가 어떤 클래스에 속할 가중치 혹은 점수를 구함
로지스틱회귀
용어 정리
- 로짓(logit), 로그 오즈: +-무한대 범위에서 어떤 클래스에 속할 확률을 결정하는 함수
- 오즈(odds): 실패(0)에 대한 성공(1)의 비율
- 로그 오즈(log odds): 변환 모델의 응답변수, 이 값을 통해 확률을 구함
- 나이브 베이즈 모델이나 KNN 모델과는 다르게, 데이터 위주의 접근 방식이 아닌 구조화된 모델 접근 방식
- 빠른 계산 속도, 빠른 점수 산정의 장점이 있음
로지스틱 반응 함수와 로짓
- 이 문제를 결과변수를 이진값으로 생각하지 말고,
- 라벨이 1이 될 확률 p로 생각
- p = b0 + b1x1 + b2x2 … bqxq로 모델링 시, p가 0과 1 사이로 딱 떨어지지 않을 수 있음, 더 이상 확률이라고 할 수 없게 됨
- 대신, 예측변수에 로지스틱 반응 혹은 역 로짓 함수를 적용하여 p를 모델링
- 위 변환을 통해 p는 항상 0과 1 사이에 온다.
- 위 식에서 분모의 지수를 구하려면 오즈비를 이용
- 오즈비: 성공 확률 / 실패 확률(=1-성공 확률)
- 역 오즈비 함수를 통해, 확률값을 구할 수 있다.
- p = 오즈 / 1+오즈
- 오즈 수식을 로지스틱 반응 함수에 적용 후, 양 변에 로그함수를 취하면, 예측변수에 대한 선형 함수를 얻을 수 있다.
- 그 함수를 통해, 컷오프 기준을 이용, 그 값보다 큰 확률값이 나오면 1로 분류 가능
일반화선형모델 (GLM, generalized linear model)
- 다음 두 가지 주요 구성 요소로 특징지어짐
- 확률분포 또는 분포 (로지스틱 회귀는 이항분포)
- 응답을 예측변수에 매핑하는 연결 함수 (로지스틱 회귀의 경우 로짓)
- 푸아송 분포
- 일반적으로 카운트 데이터 (유저가 일정 시간 동안 웹 페이지를 방문한 수)
- 음이항분포, 감마 분포
- 고장 시간과 같은 경과 시간을 모델링하는 데 사용
- 위 모델들을 GLM에 적용하는 것은 더 미묘한 차이를 발생시키므로, 주의 필요!
사실, 잘 이해 안 됨…p. 214
로지스틱 회귀의 예측값
- 로지스틱 회귀에서 예측하는 값은 로그 오즈에 관한 값이다.
- 예측된 확률은 로지스틱 반응 함수에 의해 주어진다.
- 근데 예측된 값들이 클래스0인지 클래스1인지 말해주는 것은 아니다.
- 0.5보다 크면 클래스 1, 작으면 0으로 하는 등의 기준이 있어야하고,
- 희귀한 클래스에 속한 데이터를 확인하는 것이 목표라면 기준값을 엄격하게 두는 것도 하나의 방법이다.
계수와 오즈비 해석
- 오즈비를 이해하는 것이 가장 중요.
- 이진 분류 문제일 때 오즈비가 2이면, Y=1의 오즈가 Y=0일 때 보다 두 배 더 높다는 것.
- 왜 오즈비를 사용하나?
- 로지스틱 회귀분석에서 계수 B는 X에 대한 오즈비의 로그값이기 때문
부분적으로 이해 잘 안 됨 → p.216
선형회귀와 로지스틱 회귀: 유사점과 차이점
- 두 가지 모두 예측변수와 응답변수를 선형 관계로 가정한다는 점 등 유사점이 많지만,
- 두 가지 근본적인 차이점이 있다.
- 모델 피팅 방식 (최소제곱 사용할 수 없다.)
- 모델에서의 잔차와 특징의 분석
- 모델 피팅
- 선형회귀
- 모델 피팅을 위해 최소제곱을 사용
- RMSE와 R²를 사용하여 성능 평가
- 로지스틱 회귀
- 최대우도측정(MLE, maximum likelihood estimation)을 사용하여 피팅
- 우리가 보고 있는 데이터를 생성했을 때, 가능성이 가장 큰 모델을 찾는 프로세스
- 로지스틱 회귀식에서 응답변수는 0, 1이 아닌, Y=1인 로그 오즈비의 추정치
- MLE는 예상 로그 오즈비가 관찰된 결과를 가장 잘 설명하는 모델을 찾는다.
- 최대우도측정(MLE, maximum likelihood estimation)을 사용하여 피팅
- 어느정도 이해만 하고 넘어가자!
- 대신 MLE가 무엇인지는 알고 넘어가자!
- 선형회귀
모델 평가
- 얼마나 정확하게 분류하는가를 기준으로 평가
- p값을 해석할 때, 통계적인 유의성을 측정하는 지표로 보기보다는,
- 변수의 중요성을 나타내는 상대적인 지표로 봐야 함.
- 이진 응답변수가 있는 로지스틱 회귀모형은, RMSE나 R²가 있을 수 없다.
- 편잔차는 회귀에서보다는 덜 중요하지만,
- 비선형성을 검증하고 영향력이 큰 레코드들을 확인하는 데 여전히 유용
주요 개념
- 로지스틱 회귀는 이진변수 출력이라는 점을 제외하면, 선형 회귀와 매우 비슷
- 다만 선형 모형과 비슷한 형태로 만들기 위해, 오즈비의 로그값을 사용하는 등의 변환 필요
- 선형모형을 피팅하고 나면, 로그 오즈비는 다시 확률값p로 변환
- 계산이 빠르고, 새로운 데이터에 대해 빠르게 결과를 알 수 있다는 장점으로 인해 자주 쓰임.
분류 모델 평가
용어 정리
- 정확도(accuracy): 정확히 분류된 비율
- 혼동행렬(confusion matrix): 예측된 결과와 실제 결과에 대한 레코드 개수를 표시한 R*C
- 재현율(recall)=민감도(sensitivity): 정확히 분류된 1의 비율
- 특이도(specificity): 정확히 분류된 0의 비율
- 정밀도(precision): 정확히 1이라고 예측된 1의 비율
- ROC곡선: 재현율과 특이성을 표시한 그림
- 리프트(lift): 모델이 다른 컷오프에 대해 1을 얼마나 잘 분류하는지 나타내는 측정 지표
- 대부분의 분류 알고리즘에서는 각 데이터에 대해 1이 될 확률값을 추정하여 할당
- 가장 기본적인 컷오프값은 0.5
- 정확도 = (참 양성 + 참 음성) / 표본크기
혼동행렬
- 분류 결과를 나타내는 가장 대표적인 행렬
- 행렬의 (1,1), (2,2)가 참 결과값을 나타냄.
- 클래스1이 희박할 때에, 거짓 양성 비율이 높아질 수 있는데,
- 이럴 경우 클래스는 1로 분류되었지만 실제로는 0일 확률이 더 높음
희귀 클래스 문제
- 현실에서의 많은 문제들은 희귀 클래스 분류 문제가 많음
- [방문자, 구매자] 등과 같은 문제들 등
- 알고싶은 (희귀한) 클래스가 1이라고 할 때,
- 분류기가 모든 레코드를 0이라고 예측하면 정확도는 올라가지만,
- 실제로는 쓸모가 없음.
- 오히려 정확도가 비교적 떨어지더라도, 재현율이 높은 모델이 효과적일 수 있음
정밀도, 재현율, 특이도
- 정확도 외에 분류 모델 성능을 표현하기 위해 다양한 지표들이 있음
- 정밀도
- 양성(클래스1)으로 분류한 레코드 중 진짜 양성
- TP / (TP+FP)
- 재현율, 민감도
- 양성 데이터에 대해 정확히 양싱이라고 예측하는 결과의 비율
- TP / (TP+FN)
- 특이도
- 음성 결과를 정확히 예측하는 능력
- TN / (TN+FP)
ROC곡선
- 재현율과 특이도 사이에는 트레이드오프 관계가 있음.
- 양성을 잘 잡아내면, 그만큼 0을 1로 잘못 분류할 가능성이 높아지는 것을 의미하기도 하기 떄문
- 이 관계를 잘 표현하기 위한 지표가 ‘수신자 조작 특성’ 곡선 (Receiver Operating Characteristic)
- ROC곡선
- 2차 세계대전 중 레이더 신호를 정확히 분류해, 적기 출현을 방위 부대에 미리 알리기 위한 목적으로 수신국의 성능을 올리는 데에 처음 사용되었다고 한다.
- x축의 특이도에 대한 y축의 재현율을 표시
- 계산 과정
- 1로 예측할 확률에 따라 가장 1이 되기 쉬운 것부터 1이 되기 어려운 순으로 레코드 정렬
- 정렬된 순서대로 점증적으로 특이도와 재현율 계산
AUC
- ROC 곡선 자체로도 모델 성능을 확인할 수 있지만, 하나의 지표로 나타내주지는 못한다.
- ROC 곡선 아래 면적 (Area Underearth the Curve)라는 지표를 통해 지표를 구할 수 있다.
- AUC
- AUC값이 높을수록 더 좋은 분류기
- 값이 1이면, 거짓 양성, 거짓 음성으로 예측하는 일 없이 완벽하게 분류해내는 분류기
- 최악의 경우, 0.5인 경우
리프트
- 모델의 확률 컷오프를 기본값인 0.5가 아닌, 0.4나 0.3 등으로 낮춰, 희귀 케이스 문제를 해결할 수 있다.
- 최적의 컷오프는 무엇일까?
- 상위 10% 레코드를 1로 분류하는 알고리즘과 무작위로 1로 분류한 알고리즘을 비교해보자.
- 무작위: 0.1% 정확도, 상위10%에서 0.3%의 정확도를 가질 때,
- 이 알고리즘은 상위 10%에서 3의 리프트(혹은 이득(gain))를 갖는다고 할 수 있다.
- 이 값은 매 십분위수마다 혹은 데이터 범위에서 연속적인 값을 따라 얻을 수 있다.
- 레코드를 1로 분류하기 위해 적합한 컷오프 값을 결정하기 위한 중간 단계로 활용 가능
주요 개념
- 분류기의 기본적인 평가 지표는 정확도
- 재현율, 특이도, 정밀도는 더 세부적인 성능을 보여준다.
- 희귀한 데이터들에 대해 적합하다.
- AUC는 모델의 1과 0을 구분하는 능력을 보여주기 위해 가장 보편적으로 사용되는 지표
- 리프트는 모델이 얼마나 1일 효과적으로 분류하는지 측정한다.
- 가장 1로 분류될 가능성이 높은 것부터 매 십분위마다 이를 계산한다.
불균형 데이터 다루기
용어 정리
- 과소표본(undersample, downsample): 분류 모델에서 개수가 많은 클래스 데이터 중 일부 소수만 사용
- 과잉표본(oversample, upsample): 분류 모델에서 희귀 클래스 데이터를 중복해서, 필요하면 부트스트랩하여 사용하는 것
- 상향 가중치, 하향 가중치 (up, down weight): 모델에서 희귀(혹은 다수) 클래스에 높은(낮은) 가중치를 주는 것
- 데이터 생성(data generation): 부트스트랩과 비슷하게, 다시 샘플링한 레코드를 빼고 원본과 살짝 다르게 데이터를 생성하는 것
- z-점수(z-score): 표준화 결과
과소표본추출(다운샘플링)
- 데이터 수가 충분하다면, 다운샘플링을 통해 0과 1의 데이터 수의 균형을 맞출 수 있음
- 이 아이디어는 다수 클래스에 속한 데이터 중 중복 레코드가 많을 것이라는 사실에서 시작
- 작지만 균형잡힌 데이터는 모델 성능에 영향을 주고, 모델링 과정에서도 도움을 준다.
- 어느 정도의 데이터가 ‘충분’한가?
- 도메인마다 다르지만, 보통 소수 클래스 데이터가 수만 개 정도 있으면 충분하다고 가정한다.
과잉표본추출(업샘플링)과 상향/하향 가중치
- 다운샘플링은 버려지는 데이터가 생겨서, 전체 데이터를 활용하지 못한다는 단점이 있음
- 위의 원인으로 인해 다수 클래스에 대한 유용한 정보까지 손실될 위험이 있다면,
- 복원추출 방식(부트스트래핑)으로 희귀 클래스 데이터를 업샘플링해야한다.
- 데이터에 가중치를 적용하는 방식으로 이와 비슷한 효과를 얻을 수 있다.
데이터 생성
- 업샘플링의 변형으로, 원본 데이터를 살짝 바꿔 새 레코드를 바꾸는 데이터 생성 방법이 있음
- 이 방법의 배경엔, 데이터의 수가 제한적이기 때문에, 알고리즘을 통해 분류 ‘규칙’을 세우기에는 정보가 불충분하다는 직관이 깔려있음
- 비슷하지만 기존의 데이터와 다른 데이터를 생성하여, 보다 로버스트한 규칙을 학습할 수 있도록 하는 것
- 부스팅, 배깅 등에 담긴 개념과 매우 비슷
- SMOTE알고리즘 (Synthetic Minority Oversampling Technique)
- 업샘플링된 레코드와 비슷한 레코드를 찾고
- 원래 레코드와 이웃 레코드의 랜덤 가중평균으로 새로운 합성 레코드를 생성
- 여기에 각각 예측변수에 대해 개별적으로 가중치 생성
- 새로 합성된 업샘플 레코드의 수는 데이터 균형을 맞추기 위해 필요한 업샘플링 비율에 따라 달라짐
비용 기반 분류
- 실무적으로, 정확도, AUC등의 지표가 불충분할 수 있다.
- 실제 예측될 결과들이 어떤 비용들을 가져오는지(금전적인) 고려하는 것도 좋은 방법이다.
주요 개념
- 데이터의 불균형 (다수 레코드 클래스 vs 희소 데이터 클래스)은 분류 알고리즘에서 문제가 될 수 있음
- 다운샘플링을 통해 다수의 데이터를 줄이거나,
- 업샘플링을 통해 희소한 데이터를 생성하여 균형을 맞출 수 있음
- 갖고있는 1의 데이터를 모두 사용해도 그 수가 너무 작으면,
- 희귀한 데이터에 부트스트랩 방식을 사용하거나,
- 기존 데이터와 유사한 합성 데이터를 만들기 위해 SMOTE 사용
- 불균형이 존재하면, 보통 클래스1을 정확히 분류하는 것에 더 높은 점수를 주게 되어 있으며
- 이러한 가치 비율이 평가 지표에 반영되어야함
댓글남기기