본문 바로가기
Data Analytics/MachineLearning

[ML] 머신러닝이란? 지도학습의 분류(Classification)

by Istj_eff 2022. 10. 2.

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

 

댓글