Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- solvedac
- Datastructure
- 코딩테스트
- 알고리즘
- DP알고리즘
- 그래프탐색
- 정렬
- 너비우선탐색
- 코테
- 반복문
- 큐
- Baekjoon
- dp
- 그래프
- BFS
- 데이터마이닝
- 수학
- PYTHON
- 자료구조
- greedy
- 백준
- 다이나믹프로그래밍
- 문제풀이
- 그리디
- 깊이우선탐색
- 파이썬
- 문자열
- DFS
- 그리디알고리즘
- 프로그래머스
Archives
- Today
- Total
nyunu
[데이터 마이닝] 앙상블(ensemble) - Bagging, Boosting 본문
728x90
강의 출처) 2023-1 숙명여자대학교 소프트웨어학부 강의 "데이터마이닝및분석", 이기용 교수님
1. Bagging [Bootstrap aggregating]
1) 기본 과정
(1) 데이터셋으로부터 반복적으로 샘플 추출
(2) 각 bootstrap 샘플에 대해 base classifier를 학습
(3) test data를 활용하여 전체 base classifier를 예측
(4) 전체 base classifier의 예측값 중 다수결로 결과를 채택
2) 데이터셋 추출시 주의할 점 [왕왕중요]
- 복원 추출 (with replacement)
- 뽑힌 데이터는 다시 그대로 제자리에
- 매번 뽑을 때마다 전체 데이터에서 하나씩 추출
- 이 성질 때문에 하나의 샘플 데이터셋에는 같은 데이터가 여러 개 뽑힐수도 !
<-> 반대로 말하면 등장하지 않는 데이터도 있을 수 있다는 의미 !
- 모든 데이터가 뽑힐 확률은 항상 동일 (= uniform probability distribution)
- 각 bootstrap 샘플은 실제 데이터와 같은 크기를 가짐
- 만약에 데이터가 n개다
-> n번 복원 추출해서 하나의 bootstrap 샘플 데이터를 만드는 것
-> 결국 n개의 행을 복원 추출로 뽑아 하나의 데이터셋을 생성한다는 의미 - 이 과정을 base classifier 개수만큼 반복
- 만약에 데이터가 n개다
- => 평균적으로 실제 데이터에서 약 63%의 데이터만이 사용됨
- N이 충분히 크다고 가정
- 각 base classifier마다 실제 데이터 중 약 63%의 데이터만 사용
3) Bagging 특징
- bias가 높은 모델을 모아 유연한 모델처럼 사용할 수 있다
-> 근데 이건 어어엄청 특이 케이스 - base classifier의 variance를 낮춤으로써 오류를 개선
- 반대로, base classifier가 높은 bias를 가지면, bagging은 성능을 향상시키기 어려움
-> 왜냐면 ... training set이 보통 63%만 사용되니까
- 반대로, base classifier가 높은 bias를 가지면, bagging은 성능을 향상시키기 어려움
2. Boosting
1) 기본 과정
(1) 초기 가중치는 동일하게
(2) 샘플링 분포에 따라 샘플 추출
(3) 샘플 데이터를 가지고 훈련 -> original data에 대해 예측
(4) 가중치 조정
- 맞게 분류된 데이터의 가중치 -> 낮아짐
- 틀리게 분류된 데이터의 가중치 -> 높아짐
- 가중치가 높아졌다는 것은 다음 번 샘플링에서 뽑힐 확률이 높아진다는 의미
& 틀렸을 때의 패널티가 더 크게 작용한다는 의미
=> 이전에 틀렸던 데이터를 더 잘 맞추려고 노력하게 만드는 것
2) Adaboost (boosting의 한 종류 / 대표적)
(1) boosting 알고리즘들을 구분하는 기준
- 각 라운드마다 가중치가 어떻게 업데이트되는가 ?
- 각 분류기로부터 만들어진 예측은 어떻게 결합되어 최종 결과를 내는가 ?
(2) 각 base classifier마다 error 계산법
- : j번째 training example(= data object)의 가중치
(3) 각 base classifier마다 중요도 계산법
- : 번째 base classifier의 중요도
-> 결과 결정시에 어떤 base classifier의 결과에 더 가중치를 주느냐를 결정하는데 사용 - 가 큰 양수값을 갖는다 -> error_rate는 0으로
- 가 큰 음수값을 갖는다 -> error_rate는 1로
- importance & error_rate => trade-off
- 보통 뒤에 실행된 모델일수록 importance 상승
(4) 각 training example마다 가중치 업데이트 방법
- 정답을 맞췄을 때
-> 1보다 작은 값을 곱해 웨이트를 낮춰줌 - 정답을 맞췄을 때
-> 1보다 큰 값을 곱해 웨이트를 높여줌 - 중요도가 0 이상이라고 이라고 가정
-> 에러율이 50% 미만이라고 가정하는 것과 같은 의미 - : 가중치를 정규화 시켜주기 위한 값
(5) 최종 결과 생성법
- 성능이 낮을수록 낮은 중요도 -> 최종 결과에도 적게 영향을 미침
- 만약 오류율이 50% 이상이다 -> 가중치 초기화 -> 으로 돌아감
3) Boosting 특징
- Error rate가 매우 빠르게 수렴
- bias가 높은 애들을 사용해도 성능 효과가 있음
- 왜냐면 앞의 과정에서 틀린 것들을 위주로 학습하기 때문에 bias가 높다 하더라도 통함
- 모든 문제를 주는 것이 아니라 틀린 문제를 위주로 주기 때문에
- variance를 낮춘다 = 하나의 결과에 좌지우지 되지 않는다 -> variance는 항상 낮춤
- 오버피팅의 가능성
- 만약에 outlier같은 특이값이 들어왔는데 이걸 틀리게 분류했다면
- 그다음에 이걸 맞추려고 여기에 가중치를 더 주고
- 잘못된 값을 열심히 학습하게 됨
- 잘못된 데이터의 특징을 지닌 모델이 나올 수 있음
728x90
'Data mining' 카테고리의 다른 글
[데이터 마이닝] 연관 분석 (Association Analysis) - 기본 개념 (0) | 2023.07.30 |
---|---|
[데이터 마이닝] 자기조직화지도(Self-Organizing Map, SOM) - 기본 개념 (0) | 2023.07.01 |
[데이터 마이닝] 앙상블(ensemble) - Random Forest / multi class (0) | 2023.06.18 |
[데이터 마이닝] 앙상블 (ensemble) - 기본 개념 (1) | 2023.06.18 |
[데이터 마이닝] ANN (1) | 2023.06.18 |