패턴인식 특론
청주대학교 대학원 전자공학과 한철수
제3장 분류 문제
목차
2
• 분류 문제
• 첫 분류기
• 학습 데이터와 테스트 데이터
• 분류기 성능 평가
• 여러 가지 분류기
• 마무리
머신 러닝을 둘러싼 환경
3
• 머신 러닝에서 분류 문제는 지도 학습의 하나로 자리매김하였 음.
• 지도 학습 데이터(정답이 있는 데이터, 교사 데이터)를 학습하 고, 미지의 데이터를 분류하는 것을 목표로 함.
• 예‒ 색상과 크기로 과일을 분류
첫 분류기
4
• scikit-learn을 사용해 실제로 분류기를 만들어 봅시다.
• digits 데이터셋
‒ scikit-learn에 포함된 손으로 쓴 숫자 데이터셋
‒ 0~9까지 손으로 쓴 숫자 이미지 데이터로 구성
‒ 이미지 데이터는 8x8 픽셀 흑백 이미지로, 1797장이 들어 있음.
이미지 데이터 읽기
5
• 3과 8을 분류하는 분류기를 만들어 봅시다.
분류기 만들고 학습
6
• 전체 숫자 이미지 데이터의 60%만 학습에 사용
분류기 성능 평가
7
• 분류기 성능 평가에는 학습에 사용하지 않은 나머지 40%의 데이터를 사용
• 정답률 결과
질문
8
Q&A
학습 데이터와 테스트 데이터
9
• 학습 데이터와 테스트 데이터를 분리하고 사용해야 함.
‒ 학습 데이터
• 학습에 사용하는 데이터
‒ 테스트 데이터
• 학습 결과로 얻은 분류기를 평가하는데 사용하는 데이터
• 주의 사항
‒ 학습 데이터의 분포가 한쪽으로 치우쳐 있다면, 데이터 전체에 대한 성 능 높은 분류기를 얻을 수 없음.
‒ 테스트 데이터의 분포가 한쪽으로 치우쳐 있다면, 분류기의 성능을 올 바르게 평가할 수 없음.
‒ 학습 데이터를 테스트 데이터로서 사용하면 안됨.
• 미지의 데이터를 분류하는 능력(일반화 성능)이 떨어지게 됨.
홀드 아웃과 교차 검증
10
• 홀드 아웃 검증
‒ 전체 데이터 중에서 테스트 데이터를 분리하고, 나머지를 학습 데이터 로 사용하는 방법
• k-분할 교차 검증
‒ 전체 데이터를 k개로 분할하고 그중 1개를 테스트 데이터, 나머지 k-1 개를 학습 데이터로 학습하는 방법
‒ 이 때, 테스트 데이터를 변경하면서 학습과 검증을 k번 반복함.
‒ k번 검증한 결과를 평균하여 사용하는 경우가 많음.
분류기 성능 평가 (1/2)
11
• 혼동 행렬(confusion matrix)
• 분류기의 주요 성능 지표
분류기 성능 평가 (2/2)
12
• 정답률(Accuracy)
‒ 전체 예측 중에서 정답이 차지하는 비율
‒ 분류기 단위의 지표
• 적합률(Precision)
‒ 분류기가 Positive로 예측했을 때 진짜로 Positive한 비율
‒ 레이블 단위의 지표
• 재현율(Recall)
‒ 실제로 Positive인 것을 얼마나 Positive로 예측했는지 나타내는 비율
‒ 레이블 단위의 지표
• F 값(F-measure)
‒ 적합률과 재현율의 조화 평균으로, 지표 2개를 종합적으로 볼 수 있음.
손으로 쓴 숫자 이미지 분류기의 성능
13
예측
“3” “8”
실제
“3” 62 13
“8” 4 64
성능 지표의 성질과 관계
14
• 정답률
‒ 분류기 단위의 지표
‒ 대략적인 분류기 성능을 보는데 적합함.
‒ 레이블간 샘플 개수에 큰 차이가 있으면 잘못된 값이 나오기도 함.
• 적합률과 재현율은 트레이드 오프 관계에 있음.
‒ 확실한 값만 분류하고자 하면 재현율이 낮아짐.
‒ 애매한 값도 포함시키면 적합률이 낮아짐.
• 적합률과 재현율은 의미가 다르므로 과제에 따라 어느 것을 중 시해야 할지 고민해야 함.
‒ 종합적인 분류 성능을 판단하고 싶을 때는 F 값을 사용함.
질문
15
Q&A
여러 가지 분류기
16
• 결정 트리
• 랜덤 포레스트
• 에이다 부스트
• 서포트 벡터 머신
결정 트리 (1/2)
17
• 결정 트리는 트리 구조를 이용해 데이터를 여러 등급으로 분류 하는 지도 학습 알고리즘의 하나임.
• 예
<동물의 종류>
<트리 모델>
결정 트리 (2/2)
18
• 트리 모델은 분류를 위한 분기 처리의 모임임.
‒ 각 분기에서는 분류 대상의 데이터 속성에 따라서 분류함.
• 결정 트리의 학습에서는 학습 데이터를 이용해 트리 모델을 생 성함.
• 분기의 기준에 따른 결정 트리의 분류 방법
‒ CART
• 집합의 불순도
‒ C4.5/C5.0
• 정보량(엔트로피)
결정 트리의 장단점
19
• 결정 트리의 장점
‒ 분류 규칙을 트리 모델로 가시화할 수 있어서 분류 결과의 해석이 비교 적 쉬움.
‒ 생성한 분류 규칙도 편집할 수 있음.
‒ 학습을 위한 계산 비용이 작음.
• 결정 트리의 단점
‒ 과적합하는 경향이 있음.
‒ 취급하는 데이터 특성에 따라서는 트리 모델을 생성하기 어려울 때도 있음.
분류기 생성
20
• 결정 트리를 이용해 손으로 쓴 숫자 3과 8의 이미지 데이터를 분류하는 분류기를 만들어 봅시다.
• 파라미터 지정
‒ max_depth
• 트리 모델의 최대 깊이
‒ criterion
• 분기의 기준 (기본 값: “gini”)
분류기 성능 평가
21
트리 모델의 예
22
결정 트리 마무리
23
• 결정 트리는 트리 모델을 이용해 분류하기 때문에 분류 방법을 해석하기가 비교적 쉬움.
• 그러나 결정 트리는 과적합하는 경향이 있어서, 결정 트리만 단독으로 이용하지 않고, 앙상블 학습을 조합해 사용할 때가 많음.
랜덤 포레스트
24
• 랜덤 포레스트는 앙상블 학습법의 하나임.
• 앙상블 학습
‒ 몇 가지 성능이 낮은 분류기(약한 학습기)를 조합해 성능이 높은 분류 기를 만드는 방법임.
‒ 약한 학습기 알고리즘은 정해진 것이 없으므로 적절히 선택해야 함.
‒ 앙상블 학습 결과는 약한 학습기의 결과 값 중 다수결로 결정함.
‒ 약한 학습기의 생성 방법에 따른 분류
• 배깅
‒ 랜덤 포레스트
• 부스팅
‒ 에이다 부스트
배깅
25
• 학습 데이터를 중복이나 누락을 허용해 여러 개의 그룹으로 분 할하고, 그룹마다 약한 학습기를 각각 생성하는 방법임.
• 분류할 때는 각각의 약한 학습기의 출력 결과를 다수결로 취합 함.
• 즉, 일부 학습 데이터 그룹에 특화된 약한 학습기를 조합해 성 능 좋은 분류기를 만듦.
부스팅
26
• 약한 학습기를 여러 개 준비하고 가중치가 있는 다수결로 분류 하는 방법임.
• 가중치도 학습에 따라 결정함.
• 난이도가 높은 학습 데이터를 올바르게 분류할 수 있는 약한 학습기의 판별 결과를 중시하도록 가중치를 업데이트해 나감.
분류하기 쉬운 데이터와 난이도가 높은 데이터
27
랜덤 포레스트
28
• 앙상블 학습의 배깅으로 분류됨.
• 전체 학습 데이터 중에서 중복이나 누락을 허용하고 학습 데이 터셋을 여러 개 추출하여 여러 개의 결정 트리(약한 학습기)를 생성함.
• 장점‒ 학습과 판별을 빠르게 처리함.
‒ 학습 데이터의 노이즈에 강함.
‒ 분류 외에도 회귀나 클러스터링에 사용할 수 있음.
• 단점‒ 학습 데이터의 개수가 적을 경우 과적합되기도 함.
분류기 생성
29
• 랜덤 포레스트를 이용해 손으로 쓴 숫자 3과 8의 이미지 데이 터를 분류하는 분류기를 만들어 봅시다.
• 파라미터 지정
‒ n_estimators
• 약한 학습기 개수 (기본 값: 10)
‒ max_depth
• 트리 모델의 최대 깊이
‒ criterion
• 분기의 기준 (기본 값: “gini”)
분류기 성능 평가
30
랜덤 포레스트 마무리
31
• 랜덤 포레스트는 앙상블 학습의 배깅으로 분류됨.
• scikit-learn을 사용하면 분류기 생성 알고리즘을 쉽게 변경할 수 있음.
에이다 부스트
32
• 앙상블 학습의 부스팅으로 분류됨.
• 에이다 부스트의 약한 학습기 알고리즘은 정해져 있지 않으므 로 적절히 선택해야 함.
• 에이다 부스트에서는 난이도가 높은 데이터를 제대로 분류할 수 있는 약한 학습기(weak learner)의 분류 결과를 중시하고 가중치를 더 줌.
• 장점‒ 분류 정밀도가 높음.
• 단점‒ 학습 데이터의 노이즈에 쉽게 영향을 받음.
분할 난이도
33
분류기 생성
34
• 에이다 부스트를 이용해 손으로 쓴 숫자 3과 8의 이미지 데이 터를 분류하는 분류기를 만들어 봅시다.
• 이번에는 약한 학습기로 결정 트리를 이용함.
• 파라미터 지정
‒ base_estimator
• 약한 학습기를 지정
‒ n_estimators
• 약한 학습기 개수 (기본 값: 50)
분류기 성능 평가
35
에이다 부스트 마무리
36
• 에이다 부스트는 앙상블 학습의 부스팅으로 분류됨.
서포트 벡터 머신
37
• 서포트 벡터 머신(Support Vector Machine, SVM)은 분류에 도 회귀를 사용할 수 있는 뛰어난 지도 학습 알고리즘임.
• 예‒ 데이터를 2개로 분리하는 직선은 여러 개 선택할 수 있음.
‒ 서포트 벡터 머신에서는 분할선으로부터 근접 샘플 데이터까지 마진의 합을 최대로하는 직선을 가장 좋은 분할선으로 생각함.
<분할 직선> <마진>
서포트 벡터 머신의 장단점
38
• 장점‒ 학습 데이터의 노이즈에 강함.
‒ 분류 성능이 매우 좋음.
‒ 다른 알고리즘과 비교하여 학습 데이터의 개수도 많이 필요하지 않음.
• 단점‒ 다른 알고리즘과 비교했을 때 분류 속도가 느림.
‒ 기본적으로 두 클래스의 분류가 되므로, 많은 클래스를 분류하려면 서 포트 벡터 머신 분류기를 여러 개 조합해야 함.
분류기 생성
39
• 서포트 벡터 머신을 이용해 손으로 쓴 숫자 3과 8의 이미지 데 이터를 분류하는 분류기를 만들어 봅시다.
• 파라미터 지정
‒ C
• 페널티 파라미터로서 어느 정도 잘못된 분류를 허용할지 지정함.
• 기본 값: 1.0
‒ gamma
• 큰 값을 설정하면 복잡한 분리 곡면을 지정할 수 있음.
• 거의 평면(0.001)을 지정함.
분류기 성능 평가
40
서포트 벡터 머신 마무리
41
• 서포트 벡터 머신은 뛰어난 분류 성능을 보임.
‒ 정밀하게 작업해야 할 때 많이 사용함.
• 처리에 시간이 걸림.
• 정확도보다 처리 속도가 중요하다면 랜덤 포레스트처럼 가볍 고 빠른 알고리즘을 사용하는 편이 좋음.
마무리
42
• scikit-learn을 사용해 과제를 풀어 보면서 분류 문제를 배웠음.
• scikit-learn으로 분류기를 쉽게 만들 수 있음.
‒ 분류기의 머신 러닝 알고리즘도 쉽게 변경할 수 있음.
• scikit-learn은 분류기 성능을 평가하는 라이브러리를 갖추고 있어서 평가도 쉽게 할 수 있음.
• scikit-learn은 손으로 쓴 숫자 이미지 데이터셋 외에도 몇 가 지 샘플 데이터셋을 더 포함하고 있음.
질문
43