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가 가장 균일도가 낮고, C가 가장 균일도가 높다.

이러한 데이터셋의 균일도는 데이터를 구분하는 데 있어서 필요한 정보의 양에 영향을 미친다.

  • 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