Stack Building
k-fold 교차 검증 본문
1. 다중 선형 회귀 multivariate linear regression
1-1. 개념
독립변수가 하나인 선형회귀는 단변량 선형 회귀라고 말했다. 독립변수, 즉 피처가 늘어날 수 있다. 예를 들어, 위 그림과 같은 경우는 기본 가격은 80 정도이고, 평수의 10% 가량 가격이 올라가고, ..., 지어진지 오래됐을 수록 가격이 떨어진다면 ℎΘ(x) = 80 + 0.1x1 + 0.01x2+ 3x3 - 2x4x 정도로 표현할 수 있다.
이처럼 독립변수를 여러개로 확장한 선형회귀를 '다중선형회귀'라고 한다. 일반적인 표기로 hΘ(x)=Θ0 + Θ1x1 + Θ2x2 + ... + Θn4xn 와 같이 표현할 수 있다. 이때 표기의 간편함을 위해 x0=1로 두어 hΘ(x)=Θ0x0 + Θ1x1 + Θ2x2 + ... + Θn4xn라고 쓸 수 있고, 이를 간략하게 Θ^Tx라고 표기한다.
cf. 다중multiple선형회귀의 hΘ(x)는 한 개의 스칼라 변수이다. hΘ(x)가 벡터인 경우 '다변량multivariate 선형 회귀'라고 부른다. 이런 경우를 단변량선형회귀 및 다중선형회귀와 구분하여 일반 선형 회귀라고 부른다. 통계학에서는 다중과 다변량을 구분하지만, 이 강의안의 기초가 된 Andrew Ng 교수의 수업에서는 입력 피처의 갯수가 많은 것을 variable의 갯수가 늘어나서 multivariate이라고 부르는 것 같다.
1-2. 경사 하강
이전까지는 경사하강 알고리즘의 세타가 0, 1 두 개였다면, 다변량선형회귀에서는 세타의 개수가 늘어난다. 모두 동시에 업데이트해야 한다는 점은 동일하다.
2. k-fold 교차 검증cross validation
"내가 만든 모델이 잘 동작하는가? 유효한가?"
1-1. 모델 평가 및 선택
(1) 평가 척도: 정확도
(2) 측정 방법: 정확도를 평가할 때, training set 대신 클래스 레이블이 표기된 튜플의 validation test set을 사용한다.
(3) 분류기의 정확도를 평가하는 방법
- holdout 방법, 랜덤 subsampling
- 교차 검증
- 부트스트랩
1-2. Confusion Matrix
"contingency table"
Actual Class와 Predicted Class의 값을 비교하여 해당하는 레코드의 개수를 기입한 행렬. 예를 들어 TP는 실제로도 Positive이고 예측도 Positive로 올바르게True 나온 경우이고, FP는 실제로는 Negative인데 예측이 Positive로 틀리게False나온 경우이다.
1-3. Evaluation Metrics
Accuracy = (TP + TN)/All
Error rate = (FP + FN)/All
Sensitivity = TP/P
Specificity = TN/N
Evaluation Metrics는 1-2에 측정치 sensitivity, specificity, accuracy를 같이 붙여둔 행렬이다. 1-2에서 유도할 수 있는 대표적인 측정치는 정확도accuracy, 오차율error rate, 민감도sensitivity, 특이도specificity이다. 분류기의 정확도 또는 인식률recognition rate은 올바르게 분류된 테스트 세트 튜플의 비율을 가리킨다. 오차율은 1에서 정확도를 뺀 값으로 계산해도 된다. 민감도는 True Positive의 인식율, 즉 옳은 것을 얼마나 잘 잡아내는가이고, 특이도는 True Negative의 인식율, 즉 틀린 것을 얼마나 잘 잡아내는가이다.
precision = TP/TP+FP
Recall = TP/TP+FN
F = 2*precision*recall / precision+recall
(by 2/(1/precison+1/recall))
추가로 알 수 있는 것은 정밀도Precision와 재현율Recall이 있다. 둘은 반비례 관계inverse relationship이다. 정밀도는 정확도exactness를, 재현율은 완전성completeness를 보는 지표이다. 다시 말해 정밀도는 분류기가 positive로 분류한 튜플 중 실제로 positive인 튜플의 비율을 말하는 것이고, 재현율은 민감도와 같다. F값(F1 또는 F-score)은 정밀도와 재현율의 조화평균이다. 알고리즘의 precision-recall 성능을 하나의 숫자로 표현한다.
* 조화평균: 숫자들의 역수의 산술평균을 구한 후 그것을 역수로 취한 것. 표본이 비율 또는 배수이지만 각 표본값이 독립적이고 표본끼리 곱한 값이 의미가 없을 때, 효율이나 속도처럼 역수가 의미있을 때, 각 표본의 비중이 같을 때 주로 쓰인다. 그냥 산술평균을 하면 값이 큰 쪽이 작은 쪽보다 부당하게 높은 비중을 차지하는 것을 시정하고 공정한 평균을 낼 수 있다.
* measure 간 관계
- TP보다 FN가 작을수록 민감도sensitivity가 1에 수렴하며 높게 나타난다. 그래서 민감도가 높은 경우에는 결과가 neg로 나오면 TN일 확률이 높다. pos를 놓치지 않고 pos라고 잡아내기 때문에 neg가 neg가 아닐 확률이 낮기 때문이다. 그래서 위 예시처럼 심각한 문제일수록 민감도가 높은 검사가 유리하다.
- 특이도specificity는 반대다. 특이도가 높은 검사에서 pos로 판정될 경우 TP일 확률이 높다.
1-4. 여러 가지 교차 검증
(1) 단순 empirical risk minimization 알고리즘
트레이닝 세트에 가장 fit하는 모델을 선택한다. 항상 높은 분산, 높은 차수의 다항식이 선정되어 종종 나쁜 선택이 된다.
(2) holdout cross validation
- holdout method: 주어진 데이터를 무작위로 2개의 독립적인 집합으로 분할한다.
* 학습을 위해 k%만큼, 테스트를 위해 (100-k)%만큼을 준비한다.
* 모델 구축을 위한 학습 세트는 2/3 정도, 정확도 추정을 위한 테스트 세트는 1/3 정도
- holdout cross validation (무작위 서브샘플링 사용)
* 홀드아웃의 변형
* 홀드아웃 k 번 반복
* 정확도는 k번의 검증에서 얻어진 정확도들의 평균
(3) k-fold cross validation (k-fold: k=10의 경우가 가장 많이 쓰임)
- 데이터를 상호 배타적인 k개의 subset으로 무작위 분할하되, 각각의 subset은 크기가 (거의)같은 크기여야 한다.
- i번째 반복에서 Di를 테스트 세트로 사용하고, 다른 것들은 트레이닝 세트로 사용한다.
(4) leave-one-out (k-fold에서 k가 데이터 사이즈 m이 된 경우)
- 하나의 데이터 포인트만 남기고 나머지 모든 데이터로 학습을 시켜 모델을 만드는 것. 데이터의 크기가 작을 때 사용하며, 모든 데이터로 모델링해서 bias가 적지만 실행 시간이 길어진다.
(5) Stratified cross validation
- 계층화된 교차 검증
- 파티션은 그룹 분리에 이유가 없다. A그룹에 1,2,3학년, B그룹에 2,3학년을 넣어둘 수 있다. Strata는 개념을 주고 그에 따라 나누는 것으로, 무작위 분리가 아니다. A그룹에는 1학년, B그룹에는 2학년을 두는 식이다.
3. 실습
(1) 사용하는 패키지
- sklearn.model_selection.cross_val_score
- parameters: estimator, data, target, cv
- estimator: 모델 (estimator to use to fit the data)
- cv (cross validation): k-fold의 k값 지정
- time( )을 사용하여 execution time 측정
(2) 예제 코드
4. 참고 자료
1. 명지대학교 전종훈 교수님 강의안
2. 선형회귀 개념 (위키)
3. 통계 개념 - 민감도, 특이도, 정확도 (홈페이지가 깔끔하고 보기 좋음)
4. 조화평균
5. precision, recall의 이해 (영상처리를 하시는 분이 작성하여서 예시가 재미있고 이해하기 쉬움)
8. 교차 검증 정리
9. 교차 검증 R 코드
'머신러닝' 카테고리의 다른 글
[분류] SVM (0) | 2019.06.01 |
---|---|
[분류] 로지스틱 회귀 (0) | 2019.05.26 |
선형회귀 (0) | 2019.05.26 |
[분류] 의사결정나무 (1) | 2019.05.26 |
[분류] 베이즈 분류 (0) | 2019.05.25 |