[머신러닝] 기본 알고리즘 2

XIXI·2022년 9월 5일
0

KT 에이블

목록 보기
7/10
post-thumbnail

🌱 Decision Tree

✏️ 내용

결정 트리
특정 변수에 대해 나무 가지가 뻗는 형태로 분류해 나감
분류와 회귀 모두 사용되는 지도학습 알고리즘
분석 과정이 직관적, 이해와 설명이 쉬움
스케일링, 정규화 등 전처리 영향도가 크지 않음
분석 과정을 실제 눈으로 확인 가능 -> 화이트박스 모델
의미있는 질문 중요

과적합으로 인한 모델 성능 저하 유의할 필요 있음

✏️ 분류, 회귀

- 분류 알고리즘일 경우
시간에 따른 점수를 A, B, C 등급으로 분류할 경우
지니 불순도가 0일 경우 분류 완료, 아닐 경우 추가 분류

- 회귀 알고리즘일 경우
시간에 따라 등급이 분류되는 점수를 도출할 경우
MSE값을 기준으로 트리 노드 추가 생성

✏️ 불순도(Impurity)

순도의 반대말
순도100%

불순도를 수치화할 수 있는 지표

  • 지니 불순도(Gini Impurity)
  • 엔트로피(Entropy)

✏️ 불순도(Impurity)

지니 불순도 = 1 - (양성 클래스 비율² + 음성 클래스 비율²)

  • 평가하는 지표

  • 지니 불순도 특징

  1. 이진 분류로 나뉠 때 사용됨
  2. 낮을수록 순도가 높음
  3. 0 ~ 0.5 사이값(완벽하게 분류: 0, 완벽하게 섞: 0.5)
  4. 지니 불순도가 낮은 속성으로 의사결정 트리 노드 결정함

✏️ 정보 이득(Imformation Gain)

우리에게 필요한 정보는 어떤 속성이 얼마나 많은 정보를 제공하는가

  • 정보 이득 공식

    Gain(T, X) = Entropy(T) - Entropy(T, X)

정보 이득이 크다 -> 어떤 속성으로 분할할 때 불순도가 줄어든다.
분할한 후 정보 이득 계산, 정보 이득이 가장 큰 속성부터 분할

✏️ 가지치기

학습 데이터에는 매우 잘 맞음, 하지만 평가 데이터에는 맞지 않음
-> 과대적합, 일반화 되지 못하는 현상

  • 하이퍼파라미터 값을 조정(max_depth)
  • 학습 데이터에 대한 성능은 낮아지나, 평가 데이터에 대한 성능을 높일 수 있다.
  • 적절한 파라미터 값을 찾도록 노력해야 함

✏️ 주요 하이퍼파라미터

파라미터설명
max_depth- 트리 최대 깊이(기본값: None)
min_samples_split- 노드를 분할하기 위한 최소한의 샘플 개수(기본값: 2)
min_samples_leaf- 리프 노드가 되기 위한 최소한의 샘플 수(기본값: 1)
max_feature- 최선의 분할을 위해 고려할 Feature 수(기본값: None)
max_leat_node- 리프 노드 최대 개수

✏️ 트리 시각화

from sklearn.tree import plot_tree

plt.figure(figsize=(30,20))
plot_tree(model,
		filled=True,
        feature_names=x.columns,
        class_names=y.unique(),
        fontsize=10)
plt.show()
  • 불순도가 낮을 수록 진한 배경색

✏️ 변수 중요도 시각화

plt.figure(figsize=(6, 8))
plt.barh(list(x), model.feature_importances_)
plt.ylabel("Features")
plt.xlabel("Importances")
plt.show()
  • 값이 클 수록 Feature 중요도가 높음
  • 트리 구성에 중요한 변수를 시각화 확인 가능

🌱 Logistic Regression

확률 문제를 선형회귀로 모델링

학습을 통해 로지스틱 함수에 의해 반환되는 값을 확률로 간주하여 분류.
확률이 0과 1사이 값이 된다.

✏️ 로지스틱 함수

시그모이드(sigmoid) 함수라고도 함
확률 값 p 는 선형 판별식이 커지면 1, 작아지면 0에 가까운 값
결과로 (0, 1) 범위 확률 값을 얻게 됨
확률 값 0.5 기준으로 이진 분류 가능

💐 느낌점

분류와 회귀를 다양한 알고리즘으로 학습시킬 수 있다는 것을 알았다.
그럼 어떤 분류 알고리즘, 회귀 알고리즘이 해당 데이터에 최적의 알고리즘인지 궁금한 생각이 든다. 이 경우 테스트를 여러번 진행 후 정확도의 평균을 내는 방식으로 최적의 알고리즘을 찾는다고 하는데 내일 수업에서 알 수 있을 것 같다. 머신러닝 알고리즘이 수학과 관련되어 낯설고 어렵지만 실습을 통해 적용해볼 수 있으니 재밌는 것 같다.

profile
Life is experience:)

0개의 댓글