728x90
- Feature selection: 기존 features의 subset을 선택
- feature의 수가 많을 때 상대적으로 sample의 수가 적으면 모델이 overfit됨
- 필요한 feature를 골라 사용하여 성능 향상
- 제거해야 하는 feature: irrelevant, redundant features
- 어떻게 판단?
- filter methods: 하나씩 제거해서 만든 모델의 성능을 각각 평가하여 feature의 순위를 매김. feature를 개별적으로 평가.
- wrapper methods: 모든 가능한 조합에 대하여 test하여 최적의 조합을 선택. feature가 서로 독립적이지 않으므로 사용. complexity가 높음.
- embedded methods: 여러 머신러닝 모델로 training 시킨 후 그 모델을 통해 feature를 끄집어 냄.
- linear로 non-linear boundary를 만드는 방법
- MLP: perceptron을 여러 개 합침 (일종의 합성함수)
- SVM: input space를 non-linear mapping을 이용해 new space로 변환
- 앙상블
- SVM(Support Vector Machine)
- non-linear mapping 방법: cv를 통해 모두 평가한 후 결정 - complexity 문제 발생
- -> kernel trick 사용: training data만 가지고 kernel trick에 대입하면 성능 비교 가능
- Linear model:
- margin: 모델과 같은 기울기면서 가장 가까운 데이터와 만나는 양 방향의 두 직선의 거리가 같을 때 가장 큼
- support vector: margin 결정에 영향을 미치는 두 데이터 pair. margin이 가장 큰 딱 한 쌍만 존재
- 찾는 방법: 양쪽 class의 모든 instances의 pair에 대하여 cv
- 1) maximum margin (=hard margin) classifier
- margin을 최대로 하는 쪽으로 w, b를 찾음 (mathy한 방법)
- 하나의 unique한 classifier를 찾음
- local minima에 빠지지 않고 global optima를 찾음
- dimension이 큰 dataset에서 성능이 더 잘 나옴
- 2) support vector (=soft margin) classifier
- 명백하게 오류(아웃라이어)인 것은 틀렸다고 가정한(에러를 허용하는) margin
- 몇 개의 데이터로 인해 linear하게 표현하기 어려울 때 약간의 error misclassification 허용
- Non-linear model: SVM
- 데이터 모양이 non-linear할 때 input의 차원을 변경
- kernel trick: polynomial / RBF / Sigmoid
- polynomial kernel: (a1*a2+r)^d
- 차원(d) 결정은 cv로, 성능(각 pair 당 거리)는 kernel trick으로
- 적절한 kernel을 찾기 위해 support vector classifier 사용
- Ensemble(앙상블): 여러가지 모델을 조합하여 더 좋은 결정을 내리는 방법
- 위원회: 여러 모델의 판단을 종합해 결정 -> 이때 각각의 모델은 독립적인 의사결정
- 장점: 성능 증가, overfitting 감소
- 단점: 해석과 설명이 어려움
- 위원회를 어떻게 구성? 어떻게 판단을 종합?
- Bagging (=bootstrap aggregating): 가장 간단. dataset에 대하여 여러 모델을 만든 후 다수결 결정.
- 랜덤 데이터샘플링(resampling): data의 서로다른 samples에 대한 같은 종류의 모델(대표적으로 DT)을 생성
- 랜덤 파라미터: 모델을 만들 때 사용되는 feature를 고를 때 k개 feature 중 best top 3 or 5 중에 랜덤/stochastic(가중치를 준 랜덤)으로 골라서 다른 parameter가 나오도록 유도
- 대표적으로 Random forest
- Boosting: 모델 하나를 만든 후 misclassification에 대한 가중치를 부여한 후 다시 같은 종류의 모델을 생성하는 것을 반복한 후 합침. 각 모델들은 서로의 단점을 보완 가능.
- 생성한 여러 개의 모델이 비슷할 때 사용
- weighted voting을 함
- 구현 방법: Ada Boost
- 주로 DT, 가장 많이 쓰임.
- 여러 개의 Stump(=weak learners, 하나의 feature만 사용하는 DT) 생성.
- error가 큰 stump에 가중치: Amount of say = 1/2 log(1-e)/e //e가 작을수록 발언권 커짐
- 이 모델의 e와 발언권을 가지고 다음 모델의 stump를 만듦
- new sample weight = sample weight * e^(amount of say)
- weighted gini index 사용
- Hetero models의 ensemble: 다른 종류의 모델들 사용
- 3-1) Voting (Averaging - numerical data의 경우)
- 3-2) Stacking: base model의 결과 값과 데이터를 input으로 다시 학습 (meta-learner). meta-learner가 voting precedure을 대신함.
- Bagging (=bootstrap aggregating): 가장 간단. dataset에 대하여 여러 모델을 만든 후 다수결 결정.
'대학공부 > 기계학습' 카테고리의 다른 글
실습 1차시: ZeroR, OneR, Naive Bayes Classifier (0) | 2023.10.11 |
---|---|
Deep NN (0) | 2023.10.11 |
Evaluation (0) | 2023.10.11 |
Classification(2) (0) | 2023.10.10 |
Classification(1) (0) | 2023.10.10 |