1. 앙상블 (emsemble learning)
선형 분류기와 같은 간단한 학습기로 학습을 수행하지만, 복수의 학습기를 결합함으로써
더 좋은 성능을 가진 학습기를 만드는 방법 (학습기 결합)
1) 앙상블 학습의 개념
(1) 학습기의 선택과 결합
① 학습 알고리즘 차별화 : 접근 방법이 다른 모델을 결합
- 베이즈 분류기 & K-NN, 신경명 & SVM
② 모델선택과 관련된 파라미터 차별화 : 한 종류의 모델에서 파라미터를 달리 하여 결합
- K-NN분류 알고리즘 적용시 K값이 서로 다른 복수의 K-NN 사용
- 은닉층 뉴런수가 다른 복수의 MLP
③ 학습데이터 차별화 : 같은 모델을 사용하되, 학습 데이터 집합을 달리하여 복수개의 학습기를 생성
(2) 학습기 결합방법
① 병렬적 결합 : 각 학습기의 결과를 한번에 모두 고려하여 하나의 최종결과 생성
② 순차적 결합 : 각 학습기의 결과를 단계별로 결합 ( 앞 단계의 학습결과가 뒷단계 학습기에 영향)
(3) 학습 데이터 생성방법
- 여러 학습기의 출력을 연결하여 출력
i번째 학습기를 𝒉ᵢ(𝑥) = 𝒉(𝑥, 𝜃ᵢ) (데이터 동일, 학습 파라미터 상이) ▶ M개의 학습기 결합
- 출력 f(x)와 원하는 출력 t의 오차 e(x)를 정의 ( 시스템간의 오차정의 )
전체 입력에 대한 일반화 오차(Egen)는 e(x) : 확률분포 p(x)에 대해 적분한 값으로 정의(기대치)
① 필터링(filtering)에 의한 방법 - 초기 부스팅 방법, 캐스캐이딩 방법 (학습 특성을 결합에도 적용)
각 학습기 학습마다 새로운 데이터 생성(바로 적용X) ▶ 학습이 완료된 학습기에 적용
▶제대로 처리되지 못하는 데이터들만 필터링하여 학습
② 리샘플링 (filtering)에 의한 방법 - 배깅방법, MadaBoost방법
주어진 학습데이터로부터 일부 집합을 추출하여 각 학습기를 학습
(각 학습기 학습마다 새 데이터를 생성X)
단순 샘플링(Bagging), 학습이 잘 되지 않은 자주 선택 (Madaboost,Modification of AdaBoost)
③ 가중치 조정(reweighting) - AdaBoost방법
각 데이터에 가중치를 주어 학습영향도 조정 (모든 학습기에 동일 학습데이터를 사용)
2) Bagging & Voting (학습기 선택, 학습기의 결과를 결합)
- Bagging은 학습기의 선택, Voting은 학습기의 결합
(1) Bagging (Bootstrap aggregating의 약어)
부트스트랩 : 제한된 데이터를 이용하여 시스템의 학습과 평가를 동시에 수행하기 위한 리샘플링기법
① 학습과정 (M개의 서로 다른 학습기)
N개의 데이터로 이루어진 학습데이터 집합 X를 준비
▶ 학습기 모델을 정의
▶ M개의 학습기를 각각 학습시키기 위해 사용될 데이터 집합의 크기 Ñ ( Ñ ≤ N ) 정의
▶ i번째 학습기 𝒉ᵢ(𝑥)모델의 파라미터를 초기화 + Ñ개 데이터를 랜덤 선택 데이터집합 Xᵢ를 만듬
(복원추출 - 중복선출가능)
▶ 학습을 수행하여 최적화된 파라미터 θᵢ를 찾아 i번째 학습기를 위한 판별함수 𝒉(𝑥, 𝜃ᵢ)를 얻음
▶ 위의 과정을 M번 반복해 서로 다른 M개의 학습기 생성후 결합하여 최종판별함수 f(𝒉₁,𝒉₂,...,𝒉ₘ)
② 고려사항
데이터 집합의 크기 Ñ
- 주어진 전체학습 데이터 집합 X의 크기 N이 충분히 크지 않으면 Ñ은 N을 같은 값
( 복원추출을 사용하므로 매 단계마다 생성되는 데이터 집합은 동일 X )
학습에 사용될 학습기 모델
- 학습기에 의해 찾아지는 판별함수가 데이터 집합의 변화에 민감한 모델을 선택
예) 다층 퍼셉트론, 최근접 이웃분류기 등
(2) 보팅 ( 최종 결과를 도출하기 위한 데이터 결합)
① Committee machine (단순 평균법)
- M개의 학습기 결과를 모두 동일한 정도로 반영하여 평균한 결과를 얻는 방법
f(x) = f(𝒉1(x),𝒉2(x),..., 𝒉m(x)) = 1/M 𝚺 𝒉i(x)
- 연속된 실수값을 내야하는 함수근사문제에 적합
( 분류문제: 결합결과로 최종분류결과를 결정하는 처리과정 필요)
(3) 효과
- 학습기 결합을 통해 개별 분류기의 표현능력을 능가하는 새로운 모델의 표현이 가능
(4) 배깅과 보팅에 의한 오차
- 수식에 따르면 일반 학습기 오차의 1/M으로 감소 (학습기별 오차가 독립적인 경우)
학습기의 성능이 학습기의 갯수 M에 비례
** 실제적으로 학습기의 오차가 독립적이지 않고 양의 상관관계를 가지므로, 이론과 달리
일반화 오차가 1/M만큼 감소하는 효과는 기대하기 어려움
3) 부스팅
- 간단한 학습기들이 상호 보완적 역할을 할수 있도록 단계적으로 학습을 수행하여 결합함으로써 성능증폭
- 먼저 학습된 학습기 결과가 다음 학습기의 학습에 정보를 제공하여 이전 학습기의 결점을 보완
(1) 필터링에 의한 부스팅 (가장 먼제 제안된 부스팅 방법)
- 각 학습기별로 새로운 데이터 생성
- 생성된 학습데이터를 이전 학습기의 학습된 결과에 반영하여 바른데이터와 잘못된 데이터 구분, 학습에 이용
- 학습 데이터를 일부만 사용하므로, 학습을 위해 데이터의 규모가 매우 커야 함
① 학습과정
h1학습 : 새로운 데이터 X1으로 h1으로 학습진행
▶ h2학습 : 새로운 데이터 X2로 h1을 거치며 잘못된 결과와 바른 결과의 데이터의 비율로 1:1추출, 학습
▶ h3학습 : 새로운 데이터 X3로 h1과 h2학습, h1과 h2의 결과가 일치하지 않는 데이터로 h3로 학습
▶추론과정 : h1과 h2의 결과가 일치하면 해당 결과가 최종 결과, 그렇지 않으면 h3의 결과가 최종결과
(2) AdaBoost알고리즘 (데이터 규모의 문제해결 ), 학습과 결합 모두 고려, 2개 클래스 분류에 적절
- 같은 데이터 집합을 반복 사용, 학습할때마다 각 데이터의 가중치를 조정하여 학습의 변화를 꾀함
- 데이터의 중요도가 적응적으로 변화(Adaptive + Boost)
- 조정된 가중치 (𝛂ᵢ) 로 각 분류기를 단계적으로 학습 (분류기 차별성 증가- 보팅에 가중치)
분류기의 중요도 - 각 학습기의 결합과정에서 결합계수로 사용 (𝛂ᵢ)
① 학습과정
- 이전 단계의 학습결과에 따라 가중치 (오차가 적을수록 높음)가 수정
학습기 자체의 오분류율이 최종판별함수 생성에서 결합중요도로 활용
N개의 입출력쌍으로 이루어진 데이터 X준비, 각 데이터에 대한 가중치 초기화 (1/N)
▶ 학습 : 목표출력, 오분류율, 가중치를 적용하면서 M개의 분류기 학습
▶ 각 학습 데이터의 가중치가 적용된 오분류율 정의 ( εᵢ 감소시 𝛂ᵢ 증가 )
(학습을 통해 오분류 최소화하는 판별함수 𝒉ᵢ(𝑥)를 얻고 이를 이용해 중요도 𝛂ᵢ 계산)
▶ 데이터에 대한 가중치를 수정 ( 계산식은 전체 가중치 합이 1이 되도록 Z설정)
▶ M개의 분류기의 학습이 완료되면 각 분류기 중요도 값으로 결합한 최종 판별함수를 구성
③ 분류기의 학습과 분류 (함수적 해석)
③ 단순한 보팅법에 가중치를 적용한 결합 방법
④ 특징 :
- 이전단계 분류기 학습결과로 다음단계 학습에 사용될 데이터에 가중치 부여
- 분류기 간 차별성 부여
- 각각의 간단한 분류기의 오분류율이 0.5보다 작은 조건 만족시,
분류기 결합으로 학습데이터의 오차를 기하급수적으로 감소시킬수 있음
- 최적화된 결합가중치를 찾아 분류기들을 결합
- 두개의 클래스에 대한 분류문제에 적합한 방법
4) 결합방법 : 평균법, 보팅법(투표법)
(1) 평균, 보팅, 별도의 결합기를 사용하여 결합
① 평균법 : 학습기의 출력이 수치형일때 적합
- 단수평균과 가중평균
② 보팅법 ( 분류 문제에 주로 사용 )
- 특정 레이블이 클래스 출력(argmax), 최다 요소를 레이블이 출력 (과반을 넘지 못하면 미출력 설정가능)
- 하드보팅 (0,1등의 이산값으로 구분 ), 소프트 보팅 (0~1사이의 확률값으로 구분)
③ 결합기 사용 ( 기본 학습기의 결과를 결합하는 또 하나의 학습기)
- 결합기를 위한 학습 데이터 구성, 학습에 사용된 데이터를 결합기에 사용하면 과다적합 우려
새로운 학습 데이터 집합을 준비 (과다적합 회피를 위함)
새로운 학습 데이터 (𝑥ᵢ , 𝑦ᵢ)에 대해 기본학습기 𝒉ᵢ의 출력값 zᵢⱼ (i번째 데이터에 대한 j학습기의 출력)
M개의 결합기에 대해 각 𝑥에 대해 학습데이터( (zᵢ₁, zᵢ₂,..., zᵢₘ ), 𝑦ᵢ )로 학습을 통해 결합기 생성
(2) Cascading
- 여러 복잡도를 가진 학습기의 순차적으로 결합
- 처리에 많은 계산비용이 요구되는 문제에서 계산 효율을 높이면서 안정적인 성능을 얻음
( 계산시간을 줄이면서 성능 보장 )
실행 방법
① 성능은 낮지만 계산비용이 낮은 간단한 학습기로 오류가 일정 수준이상의 데이터 탐색
(학습기 신뢰도도 측정하여 수준이 낮은 데이터 포함 )
② 신뢰도 낮은 데이터는 다음 단계의 학습에 사용 (높은 단계에서 성능이 좋은 학습기 사용이 권장)
③ 학습 완료 후 추론단계에서 단계적 처리
- 새로운 데이터에 첫번째 학습기를 통과시켜 오류/신뢰도 계산으로 충분하면 결과로 도출
- 신뢰도 낮은 경우 다음 단계의 학습기로 진행
(3) 전문가 혼합 (mixture of experts)
- 복수개의 학습기를 가중합하여 최종학습기를 만드는 결합 방법 (가중합의 계수가 함수로 주어짐)
예) AdaBoost방법을 이용한 퍼셉트론 분류기의 결합 (데이터 400개)
선형분류가 아니며 퍼셉트론의 시행불가 → 여러개의 퍼셉트론을 AdaBoost로(앙상블)로 결합하여 성능향상
** 전문가 : 입력공간을 복수개로 나누어 학습기가 특정 영역을 중점적으로 담당하도록 학습, 가중치도 결정
(전문가: 입력공간의 특정영역을 담당), 데이터간 상관이 줄거나 음의 상관관계로 의존성이 줄고 일반화
2. 결정트리
1) 개요
- 주어진 문제에 대해 결정을 내리는 함수를 트리형태로 구성
- 분류 문제를 위해 개발되었으나 회귀문제로 확장 , CART(Classification And Regression Trees)
- 뛰어난 설명력 제공 : 트리구조에 각 입력요소의 역할이 잘 표현되어 학습 결과를 설명
- 과다적합 문제 : 복잡한 함수의 표현과정에서 데이터의 노이즈에 민감 (앙상블 기법을 결합 '랜덤포레스트'등장)
세탁기 동작여부를 결정하는 결정트리 : 속성(판단을 내리는 데 사용하는 결정요인 ) - 날씨, 습도, 세탁량
(1) 학습과정
루트노드에 적절한 속성을 선택
▶ 가지를 만들고 클래스 레이블 할당, 클래스 레이블 혼합이 있으면 분할
▶ 레이블에 속성이 모두 같은 리프 노드에서 분할중단
(2) 노드의 속성 결정(결정요인을 배정할 것인가)
- 부모 노드에 속성 배정에 따라 데이터그룹의 형태가 상이해지며, 적절한 경우 과정이 간소해 짐
- 속성 결정은 가급적 최대한의 데이터가 리프노드로 분리 (추가적인 작업 불필요, 불순도 낮음)
- 지니불순도, Information gain (정보이득), Reduction in Variance (분산 감소량), Chi-Square
① Gini Impurity (지니 불순도)
각 노드에 할당된 클래스 레이블이 얼마나 다른지 혼합도를 측정
지니 평가계수 G(Ra) (Gini Criterion) : 속성 a를 가진 부모노드 Ra의 자식노드들의 지니불순도의 가중합
② Information gain (정보이득)
- 데이터 집합의 분할 전후의 엔트로피의 차이
엔트로피 : 데이터의 혼잡도, 혼잡도가 낮으면 데이터 순도가 높음
분류 문제에 주로 사용
③ Reduction in Variance (분산 감소량)
- 모든 노드에 대한 분산의 가중 평균
분산 : 데이터의 동질성을 표시 ( 데이터가 완전히 같으면 분산은 0 )
회귀 문제에 주로 사용
④ Chi-Square
부모노드와 하위 노드간 통계적 유의성 활용
분류 문제에 주로 사용
2) 2차원 데이터 분류 (결정트리)
2차원 데이터 𝑥₁, 𝑥₂ ∈ ( 0, 1 )
- 학습이 종료되었으나 실제 결정경계와 같지 않으며 깊이설정에 따라 과다 적합 발생가능성
- 결정경계가 계단형으로 주어져 불연속성이 뚜렷하고, 다양한 형태의 결정경계 표현 불가
3) 회귀를 위한 결정트리
2차원 데이터 𝑥₁, 𝑥₂ ∈ ( 0, 1 )
- 트리의 구성은 분류와 같으며 최종 출력값이 실수 (클래스 레이블이 아님)
- 학습이 종료되었으나 실제 결정경계와 같지 않음 ( 깊이설정에 따라 과다 적합 발생가능성 있음 )
- 과다적합 : 모든 학습데이터에 대한 완벽한 학습
간단한 해결책
조기종료(Early Stopping) : 데이터를 더 분할해도 성능이 향상되지 않을때 노드의 분할을 종료
가지치기(Prunning) : 전체 트리를 만든 후 불필요한 노드제거
발전된 해결책 : random forest
3. Random Forest
- 결정트리와 앙상블 학습기법을 결합한 방법
배깅 방법으로 데이터를 리샘플링하여 M개의 학습기와 결합하는 방법
결합방법 : 주로 보팅법 (분류문제), 출력값의 평균(회귀문제)
- 포레스트 : M개의 서로다른 결정트리의 결합
랜덤 : 결정트리간의 차이가 랜덤으로 추출된 데이터 샘플에 기인
장점 : 간단한 학습기의 결합으로 복잡한 함수 표현 및 일반화 성능 향상
높은 학습력, 빠른 학습
① Random Forest 학습
▶ N개의 데이터로 이루어진 학습 데이터집합 𝐗ᵢ, 각 결정트리의 학습의 데이터 집합의 Ñ을크기 정함 (Ñ≤𝐍)
i 번째 결정트리를 학습하기 위한 트리의 깊이를 결정
▶ 학습 데이터 집합으로부터 Ñ개를 Random sample하여 데이터 집합 𝐗ᵢ 구성 (복원추출)
▶ 데이터 집합 𝐗ᵢ로 결정트리를 학습하여 i번째 판별함수(또는 회귀함수)𝒉ᵢ(𝑥)를 얻음
▶ 위의 과정을 M번 반복하여 서로 다른 M개의 결정 트리를 생성하고, 결합하여 최종판별함수 𝑓(𝑥)= 𝑓(𝒉₁(𝑥),𝒉₂(𝑥),..., 𝒉ₘ(𝑥))
4. SVM (Support Vector Machine, 최대 마진 분류기)
- 과다적합을 피하고 일반화 오차를 줄이기 위해 학습 시스템의 복잡도를 적절히 조정
- SVM : 일반화 오차를 최소화할수 있는 방향으로 학습이 이루어지도록 설계된 선형 분류기
예) 과다적합 (비선형 함수)
1) 선형 초평면 분류기
- 학습을 통해 주어진 데이터들이 적절히 분류되도록 g(x)최적화
입력 𝑥에 대한 선형 초평면 판별함수 𝑔(𝑥) = 𝑤𝑥 + 𝑤₀ = 𝑤ᵀ𝑥 + 𝑤₀ = 𝚺 𝑤ᵀ𝑥ᵢ + 𝑤₀
결정 규칙 𝑓(𝑥)= sign(𝑔(𝑥)) , 𝑓(𝑥) = 1 → 𝑥 ∈ C₁ , 𝑓(𝑥) = -1 → 𝑥 ∈ C₂
2) 최대마진 분류기
(1) margin
- 학습 데이터중 결정경계에 가장 가까운 데이터로부터 결정 경계까지의 거리
support vector : 결정경계에 가장 가까운 곳에 위치한 데이터 (margin을 최대로 하는 vector)
SVM : 선형결정경계 중 일반화 오차를 최소로 하는 최적경계를 얻기 위해 마진을 도입하여 목적함수 정의
① 선형 판별함수
- 최대마진을 가진 선형 결정경계(초평면)을 얻기 위한 선형 판별함수
𝑔(𝑥) = 𝑤ᵀ𝑥 + 𝑤₀ = 𝚺 𝑤ᵢ𝑥ᵢ + 𝑤₀ = 0 (𝑤는 법선 벡터, 𝑤₀는 원점에서 직선까지의 거리)
② SVM의 학습의 원리
- 서포트 벡터를 𝝌(카이)로 설정하여 결정경계에 대해 𝝌로 연산할시 +1,-1이 나오도록 조건을 설정
{ (𝑥ᵢ , 𝑦ᵢ) }ᵢ₌ ₁,₂,...,៷ 𝑦ᵢ = 1 → 𝑥 ∈ C₁ , 𝑦ᵢ = -1 → 𝑥 ∈ C₂
추정 파라미터 𝑤, 𝑤₀이 만족해야 할 조건
𝑤ᵀ𝑥 + 𝑤₀ ≥ +1 for 𝑦ᵢ = +1
𝑤ᵀ𝑥 + 𝑤₀ ≤ -1 for 𝑦ᵢ = -1
이렇게 조건이 되도록 설정해야 함
-----> 𝑦ᵢ ( 𝑤ᵀ𝑥ᵢ + 𝑤₀ ) - 1 ≥ 0
따라서 마진 M은 최소화할 목적함수 ----> J(𝑤) = ||𝑤||² / 2
③ 두 조건을 만족하는 목적함수를 찾기 위해 라그랑쥬 승수를 적용한 라그랑쥬 함수적용
( 𝛂ᵢ ≥ 0 , i = 1,2, ... N )
⇒ 판별함수 𝑔(𝑥) = 𝑤ᵀ𝑥 + 𝑤₀ =𝚺𝑤ᵀ𝑥ᵢ+ 𝑤₀ = 0 ( 전체 N이 아닌 서포트 벡터 집합에 적용 )
④ SVM의 학습과 인식단계
▶ N개의 입출력쌍 학습 데이터집합 X={(𝑥ᵢ , 𝑦ᵢ)}ᵢ₌ ₁,₂,...,៷, , 목표출력 𝑦ᵢ∈{-1,1}( i = 1,..,N)
▶ 학습데이터로 파라미터 추정을 위한 목적함수 정의 𝘘(𝛂)를 정의,
▶ 주어진 조건을 만족하면서 𝘘(𝛂)를 최대화하는 추정치 𝛂ᵢ를 이차 계획법으로 찾음
▶ 서프트 벡터의 𝛂i ≠ 0이 되는 서포트 벡터의 𝑤₀계산 , 벡터집합과 파라미터 벡터, 𝑤₀저장
⑤ 다중 클래스 분류문제에 적용
가장 보편적인 방법 : k개의 개별적인 SVM분류기 사용 (근본적으로 SVM은 이진분류기)
( k번째 SVM은 k번째 클래스와 나머지 k-1개 클래스 분류 )
각 SVM에 대해
- 클래스 Ck에 해당하는 데이터 +1, 나머지 -1)
- 실제의 문제 : 애매모호한 결정영역(1개만 1, 나머지 -1이 되지 않음), 학습 데이터 집합크기가 불균형적
⑥ 1:1 방법 ( 가능한 모든 클래스의 쌍에 대해 분류 수행 )
가능한 모든 클래스의 쌍에 대한 서로다른 k(k-1)/2개의 SVM과 보팅
예)1,2,3 이면 1-2, 1-3, 2-3보팅
- 실제의 문제 : 애매모호한 결정영역, 학습/테스트를 위한 높은 계산비용
3) 슬랙변수를 가진 SVM
- 학습을 위해 주어지는 모든 데이터가 선형분리되지는 않으므로 오분류에 대한 처리방법
𝞷 도입하여 (약간의 오분류를 허용)하여 조정
※ 슬랙변수 𝞷(크사이) : 오분류된 데이터로부터 해당 클래스 결정경계까지의 거리 (커질수록 오분류 허용)
𝛂ᵢ < c (슬랙변수가 너무 커지지 않게 하는 상수)적용을 제외하면, 최종결과는 슬랙변수가 없는 경우와 동일
4) 커널법
- 비선형 분류 문제를 해결하기 위해 저차원 입력을 고차원 값으로 매핑 𝝓(x)
( 고차원으로 선형화하면 간단한 선형 분류기로 가능, 예)2차원의 점을 3차원에 매핑)
- 커널 매서드 : 고차원 매핑을 처리하는 커널함수로서 선형화시 증가하는 계산량을 처리
주로 내적함수 이용, k(x,y)를 𝝓(x)· 𝝓(x)
- 선형커널(내적), 다항식커널, 시그모이드 커널(tanh 사용), 가우시안 커널
5) 슬랙변수와 커널을 가진 SVM
{ (𝑥ᵢ , 𝑦ᵢ) }ᵢ₌ ₁,₂,...,៷ , 하이퍼 파라미터 c, 커널 함수 k(𝑥ᵢ , 𝑥ⱼ),
목표 출력값 𝑦ᵢ∈{-1,1}( i = 1,..,N), 학습데이터로 파라미터 추정을 위한 목적함수 𝘘(𝛂) 정의
▶ 학습 데이터를 이용해 파라미터 추정을 위한 목표함수 Q(𝛂) 정의
▶ 주어진 조건을 만족하면서 𝘘(𝛂)를 최대화하는 추정치 𝛂ᵢ를 이차계획법으로 찾음, 서포트벡터 찾음
▶ 𝛂ᵢ ≠ 0이 되는 서포트 벡터를 찾아 집합 Xs생성 , 𝛂ᵢ와 서프토벡터로 𝑤₀계산
▶ 새로운 데이터가 주어지면 저장해 둔 서포트 벡터와 파라미터로 분류 수행
추정치 𝛂ᵢ를 이차계획법으로 찾음, 서포트벡터 찾음
새로운 x에 대해 서포트 벡터와 파라미터를 이용하여 판별함수로 분류를 수행
예) 비선형 결정경계를 가진 이진 분류
- 다항식 커널, 가우시안 커널 적용
'스터디 > Machine Learn' 카테고리의 다른 글
6. Deep Learning (0) | 2024.08.28 |
---|---|
5. 신경망 (0) | 2024.08.27 |
3. 비지도 학습_ 군집화와 특징추출 (0) | 2024.08.19 |
2. 지도학습- 분류와 회귀 (0) | 2024.08.01 |
1. 머신런 개요 _ 행렬연산 (0) | 2024.06.09 |