Data Analytics/MachineLearning
[ML] 머신러닝이란? 지도학습의 분류(Classification)
Istj_eff
2022. 10. 2. 00:24
1. 머신러닝이란?
- 명시적인 프로그래밍없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야
- 머신러닝은 데이터를 통해 다양한 패턴을 감지하고, 스스로 학습할 수 있는 모델 개발에 초점
지도학습(Supervised Learning)
- 입력과 정답데이터로 모델을 학습시키고 정확한 출력을 예측하도록 하는것이 목표이다.
- 사람들의 노력과 자원이 필요하지만 높은 성능을 기대할 수 있다.
- 지도학습 알고리즘은 크게 분류와 회귀로 구분된다.
2. 분류
💡 분류는 학습 데이터로 주어진 데이터의 피처와 레이블값을 머신러닝 알고리즘으로 학습해 모델을 생성하고, 생성된 모델에 새로운 데이터 값이 주어졌을때 미지의 레이블값을 예측하는 것이다.
- 분류는 클래스가 2인 이진분류(binary classification)와, 3개 이상인 다중분류(multi-class classification)로 나뉜다.
- 분류는 예측값이 카테고리와 같은 이산형 클래스값이고, 회귀는 연속형 숫자값이다.
분류분석 종류
- 로지스틱 회귀
- 의사결정나무
- 앙상블
- 신경망 모형
- KNN, 베이즈분류 모형, SVM(서포트벡터기계), 유전자 알고리즘
3. GridSearchCV로 하이퍼 파라미터 학습과 최적화
GridSearchCV 란?
💡 사이킷런에서는 분류 알고리즘이나 회귀 알고리즘에 사용되는 하이퍼파라미터를 순차적으로 입력해 학습을 하고 측정을 하면서 가장 좋은 파라미터를 알려준다.
GridSearchCV가 없다면 max_depth 가 3일때 가장 최적의 스코어를 뽑아내는지1일때 가장 최적인 스코어를 뽑아내는지 일일이 학습을 해야 한다.
하지만 grid 파라미터 안에서 집합을 만들고 적용하면 최적화된 파라미터를 뽑아낼 수 있다.
GridSearchCV 클래스의 생성자 정리
- estimator : classifier, regressor, pipeline 등 가능
- param_grid : 튜닝을 위해 파라미터, 사용될 파라미터를 dictionary 형태로 만들어서 넣는다.
- scoring : 예측 성능을 측정할 평가 방법을 넣는다. 보통 accuracy 로 지정하여서 정확도로 성능 평가를 한다.
- cv : 교차 검증에서 몇개로 분할되는지 지정한다.
- refit : True가 디폴트로 True로 하면 최적의 하이퍼 파라미터를 찾아서 재학습 시킨다.
예제1) iris 데이터로 GridSearchCV 실습
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import accuracy_score
iris_data = load_iris()
label = iris_data.target
data = iris_data.data
X_train, X_val, y_train, y_val = train_test_split(data, label, test_size=0.2)
# GridSearchCV의 param_grid 설정
params = {
'max_depth': [2, 3],
'min_samples_split': [2, 3]
}
dtc = DecisionTreeClassifier()
grid_tree = GridSearchCV(dtc, param_grid=params, cv=3, refit=True)
grid_tree.fit(X_train, y_train)
print('best parameters : ', grid_tree.best_params_)
print('best score : ', grid_tree.best_score_)
em = grid_tree.best_estimator_
pred = em.predict(X_val)
accuracy_score(y_val, pred)
[out]
best parameters : {'max_depth': 2, 'min_samples_split': 2}
best score : 0.9416666666666668
0.9333333333333333
4. 로지스틱 회귀
- 독립변수는 연속형, 종속변수가 범주형인 경우 적용되는 회귀분석 모형
- 종속변수가 성공/실패, 사망/생존과 같이 이항변수(0,1)로 되어 있을 때 종속변수와 독립변수간의 관계식을 이용하여 두 집단 또는 그 이상의 집단을 분류하고자 할 때 사용되는 분석기법
1️⃣선형회귀
- x값의 변화에 따른 y값의 변화를 알아냄
- x가 증가할때, y는 회귀계수만큼 증가함
2️⃣로지스틱 회귀
- x값에 따른 y값의 변화량의 문제가 아님
- 회귀계수를 해석할 때 문제가 생김
일반 선형 회귀분석 | 로지스틱 회귀분석 | |
종속변수 | 연속형 변수 | 이산형(범주형) 변수 |
모형 탐색 방법 | 최소자승법(LSM,최소제곱법) | 최대우도법(MLE), 가중최소자승법 |
모형 검정 | F-test, T-test | X²test |
1) 최소자승법(최소제곱법)
- 데이터와 추정된 함수가 얼마나 잘 맞는지는 잔차들을 제곱(square)해서 구하고, 이를 잔차제곱합(RSS or SSE)이라고 한다.
- 최소제곱법은 해당식이 제곱형태이니 미분해서 0이 되는 지점을 찾기 위해 잔차제곱합을 최소화하는 계수를 구하는 방법이다.
2) 최대우도법
- 관측 값이 가정된 모집단에서 하나의 표본으로 추출된 가능성이 가장 크게 되도록 하는 회귀계수 추정방법
- 표본의 수가 클 경우에 최대우도법은 안정적이다.
3) 카이제곱 검정
- 분류 조합에 따라 특정 값에 유효한 차이가 발생하는 지를 검정하는 것으로 명목 척도로 측정된 두 속성이 서로 관련되어 있는지 분석하고 싶을 때 사용하는 통계분석법
- 독립변수와 종속변수가 모두 명목척도일 경우 적합한 통계 기법
5. 의사결정 트리(Decision Tree)
결정트리 모델이란 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 트리 (Tree)기반의 분류 규칙을 만드는것으로 이 모양이 나무를 닮아 Tree모델이다.
일반적으로 규칙을 가장 쉽게 표현하는 방법은 if/else기반으로 if/else를 자동으로 찾아내 예측을 위한 규칙을 만드는 알고리즘이다.
구조
- 루트노드(root) : 트리가 시작된 곳(뿌리)
- 규칙노드 : 규칙조건이 되는 곳
- 리프노드 : 결정된 클래스 값
- 서브트리 : 새로운 규칙 조건마다 생성
- 이 모델은 어떤 기준으로 규칙을 만들어야 가장 효율적인 분류가 될 것인가가 알고리즘의 성능을 크게 좌우한다.
- 하지만 규칙이 많다는 것은 좀 더 예측을 위한 학습이 잘된다고 말할 수 있음과 동시에 복잡하다는 의미이며 과적합으로 이어질 수 있다.
- 즉, 트리의 깊이(depth)가 깊어질 수록 예측성능이 저하될 가능성이 높기 때문에 적절한 값을 찾아야한다.
- 가장 적은 결정노드로 높은 예측을 가지려면 균일하게 나누어야한다. (분류시 최대한 많은 데이터가 포함되어야한다)
이러한 데이터셋의 균일도는 데이터를 구분하는 데 있어서 필요한 정보의 양에 영향을 미친다.
- A의 경우 상대적으로 혼잡도가 높고 균일도가 낮기 때문에 같은 조건에서 데이터를 판단하는데 있어서 더 많은 정보가 필요하다.
- 즉, 더 많은 규칙이 필요하고 그만큼의 새로운 노드들을 거쳐야 한다는 의미이다.
- 또한 노드는 균일도가 높은 데이터 세트를 먼저 선택할 수 있도록 규칙조건을 만듭니다. 즉, 첫번째 뿌리 노드가 가장 균일도가 높게 쪼갤 수 있는 조건이다.
2-1. 장단점
☑️장점
- 정보의 균일도라는 룰을 기반으로 하고 있어서 알고리즘이 쉽고 직관적이다.
- 정보의 균일도만 신경쓰면 되므로 특별한 경우를 제외하고는 각 피처의 스케일링과 정규화 같은 전처리 작업이 필요없다.
- 선형회귀 모델과 달리 특성들간의 상관관계가 많아도 트리모델은 영향을 받지않는다.
- 비선형 모델에서 또한 depth를 조절(하이퍼파라미터를 수정하여)함으로서 모델을 학습할 수 있다.
- 수치형, 범주형 데이터 모두가능하다.
- 회귀와 분류 모두 가능하다.
☑️단점
- 새로운 sample이 들어오면 속수무책이다.
- 학습정확도를 높이기 위해서는 더 복잡하게 만들어야 하는데 그러다 보면 과적합(Overfitting)에 걸리기 매우 쉽다.
👉🏻 따라서 결정트리 모델은 사전에 크기를 제한하는것이(일반화) 성능 튜닝에 도움이 된다.
2-2. 파라미터
파라미터명 | 설명 |
min_samples_split | 샘플이 최소한 몇개 이상이어야 split(하위(잎)노드로 분리)할것인가/클수록 과적합방지, 작을수록 정확하게 분리되어 과적합 |
min_samples_leaf | (잎) 노드가 되려면 가지고 있어야 할 최소 샘플의 수/ 클수록 과대적합방지, 작을수록 과적합/ min_samples_split을 만족해도 min_sample_leaf을 만족하지 않으면 leaf노드가 되지 못한다. |
max_depth | 얼마나 깊게 트리를 만들것인가/None이면 최대한 깊게(불순도가 0이 될때까지)/클수록 과적합,작을수록 과적합방지 |
max_leaf_nodes | 최대 몇개 잎 노드가 만들어 질때 까지 split(하위(잎)노드로 분리)할것인가 |
max_feature | 최적의 분할을 위해 고려할 최대 피처개수 |
2022.10.02 - [DataAnalytics/MachineLearning] - [ML] DecisionTree모델 이용해서 붓꽃 품종 예측
[ML] DecisionTree모델 이용해서 붓꽃 품종 예측
Decision Tree(결정트리) 장점 쉽다. 직관적이다. feature의 스케일링이나 정규화 등의 사전 가공 영향도가 크지 않음 단점 과적합으로 알고리즘 성능이 떨어진다. 이를 극복하기 위해 트리의 크기를
dataanalysisdot.tistory.com