728x90
반응형
안녕하세요 늑대양입니다 :)
이제부터 본격적으로 ML 학습을 진행합니다!! 🥸
[AI 데이터 사이언티스트 취업 완성 과정]의 45일차 일과를 정리하여 안내해드리도록 하겠습니다.
Day 45 시간표:
- 머신러닝 입문
- 랜덤 조별 회고
- 머신러닝 입문 (실강)
Day 45 온라인 학습 범위:
- 7강
- 예상 학습 시간: 3:35:13
대주제(Part) | 중주제(Chapter) |
Part.4 머신러닝 with Python | CH03_06. Mini PJT. 타이타닉 생존자 예측 |
Part.4 머신러닝 with Python | CH04_01. 회귀의 정의 |
Part.4 머신러닝 with Python | CH04_02. Model1. Linear Regression |
Part.4 머신러닝 with Python | CH04_03. Model2. Lasso, Ridge |
Part.4 머신러닝 with Python | CH04_04. Model3. XGBoost |
Part.4 머신러닝 with Python | CH04_05. Model4. LightGBM |
Part.4 머신러닝 with Python | CH04_06 Mini PJT. 캘리포니아 집값 예측 |
머신러닝 입문
Linear Classifier
- 직선(분류기)을 기준으로 각 클래스를 분류
- Decision boundary (경계 결정, 분류 문제는 바운더리를 찾는 것으로 의미)
- multi-class classification
- One-vs-All
- 단점: 버림받은 영역...😭 > 랜덤 예측
Support Vector Machine
- 강력한(?) 선형 분류 모델
- 수학적 백그라운드가 탄탄함
- 가장 좋은 분류기 = 예측 성능
- 마진이 가장 크고 넓은 것의 수직이등분하는 라인 찾기! > 그 라인이 SVM
- 서포트 벡터: 서로 다른 분류의 가장 최외각에 있는 친구들
- 경계면을 찾고 가장 멀리있는 것 찾기
- 서포트 벡터 > 마진이 큰 것 찾기 > SVM 확인
- 많이 사용되었었지만(2014년 이전) 현재는 거의 안쓰임...
- 치명적인 단점:
- 엄청 느림.. > 차라리 딥러닝을 쓰자!
- XGBoost 로 대체!!
- 딱 두 가지 경우에 좋음!!
- 데이터가 안많을 때
- Linear classifier로 찾고 싶을 때
- 서로 다른 클래스에 속해 있는 데이터를 안정적으로 분류하는 직선을 찾는 것이 목표
- 분류기에 가장 가까운 데이터를 support vector 라고 하며, 서로 다른 클래스에서 하나씩 선정
- Support vector 사이에 충분한 여유를 두고 분류하는 직선을 분류기로 채택
- Kernel method까지 사용하면 비선형 분류도 가능 (kernel trick 활용)
SVM의 한계점
- 너무 느리다.. 대용량 데이터에 적합하지 않다. (10,000 > N)
- 어떤 kernel trick을 사용하느냐에 따라 성능 편차가 심하다.
- Outlier가 있는 경우 성능 제한이 생긴다.
(이를 완화하기 위해, C-SVM이 제안되었음, 사이킷런 > C-SVM + kernel-SVM)
Decision Tree
- 해석 가능한 직관적인 머신러닝 모델
- Decision Tree > Random Forest > Gradient Boosting model > XGBoost, LightGBM, CatBoost + AutoML
- Decision tree의 목표는 공간의 분할!!!
- Root node > > > leaf nodes
- Parent node, child node
- 한 번에 가지 두 개 뻗기만 가능 (최대 두 개의 child node만 갖을 수 있는 경우: binary tree)
- Depth (root node에서 얼마나 뻗어나갔는지로 결정)
- 같은 층에 있는 노드는 level로 묶음 (root node는 level 0)
CART(Classification and Regression Trees)
- 분류와 회귀 모두 가능한 Decision Tree model
How to choose best split?
Yes | No | Total | |
Sunny | 6 | 4 | 10 |
Overcast | 8 | 0 | 8 |
Rainy | 6 | 4 | 10 |
Total | 20 | 8 | 28 |
- Gini Index > Impurity (불순도) 지표가 낮을 수록 좋음!
- k = 클래스의 개수
- Gini 계수가 낮을 수록 좋은 분류!
- 계산 방법!!
CART의 학습 과정
- 모든 feature에 대해서 각 feature 마다 가능한 케이스를 모두 나열한다.
- 나열된 케이스들에 대해서 Gini Index를 계산한다.
- 가장 작은 Gini Index를 가지는 케이스를 root node로 정하고 데이터를 분할한다.
- 분할된 데이터에 대해서 1. 과정부터 반복한다. (left child > right child)
- Gini Index가 0이 되면 분할을 멈춘다.
CART의 한계점
- Overfitting (Ptrain 값은 높지만 Ptest 값은 낮은 경우) < > underfitting (아무것도 안되는 상황)
- Overfitting 을 막기 위해, regularization 을 설정
- max_depth를 제한!!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/003.gif)
긴 글 읽어주셔서 감사합니다 :)
728x90
반응형
'AI > [부트캠프] 데이터 사이언티스트 과정' 카테고리의 다른 글
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 47. (0) | 2022.10.31 |
---|---|
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 46. (0) | 2022.10.28 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 44. (2) | 2022.10.26 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 43. (0) | 2022.10.25 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 42. (0) | 2022.10.24 |