본 포스팅은 고려대학교 산업경영공학부 김성범 교수님의 유튜브 강의를 정리한 내용입니다.

유튜브 - 김성범[ 교수 / 산업경영공학부 ]

 

Least Square Estimation Algorithm (최소제곱법)

  • Cost function is convex → globally optimal solution exists(전역 최적해 존재)
  • Cost function을 최소화하는 파라미터 찾기
  • 기울기가 0인 지점 찾기
  • 비용함수를 각 베타값으로 편미분한 값이 0이 되는 두 식을 연립방적식으로 풀기
  •  

 

잔차와 확률오차

  • 잔차e는 확률오차 ε이 실제로 구현된 값
  • 확률오차 값을 직접적으로 사용하기 곤란한 경우 잔차를 많이 활용함.

 

 

결정 트리(Decision Tree)란?

  • 학습을 통해 데이터에 있는 규칙을 찾고 트리 기반의 분류 규칙을 만드는 직관적인 알고리즘
  • 장점 : 알고리즘이 쉽고 직관적임, 피처의 스케일링이나 정규화 등의 사전 가공 영향도가 크지 않음.
  • 단점 : 과적합으로 알고리즘 성능이 떨어짐. 이를 극복하기 위해 트리의 크기를 사전에 제한하는 튜닝 필요

 

사이킷런을 이용한 결정 트리 알고리즘 구현

  • 분류를 위한 DecisionTreeClassifier, 회귀를 위한 DecisionTreeRegressor 를 제공
  • CART(Classification And Regression Trees) 알고리즘을 기반으로 함.

 

결정 트리 파라미터

파라미터 명 설명
min_samples_split - 노드를 분할하기 위한 최소한의 샘플 데이터 수
- 디폴트는 2, 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가
min_samples_leaf - 분할이 될 경우 왼쪽과 오른쪽 브랜치 노드에서 가져야 할 최소한의 샘플 데이터 수
- 큰 값으로 설정될수록 노드 분할을 덜 수행함.
- 비대칭적 데이터의 경우 작게 설정 필요.
max_features - 최적의 분할을 위해 고려할 최대 피처 개수
- 디폴트는 None으로 모든 피처를 사용해 분할 수행
- int 형으로 지정하면 대상 피처의 수, float 형으로 지정하면 대상 피처의 퍼센트
- 'squrt', 'auto', 'log' 등
max_depth - 트리의 최대 깊이를 규정
- 디폴트는 None으로 다른 과적합 규제 장치가 없으면 완벽하게 클래스 결정 값이 될 때까지 분할
max_leaf_nodes - 말단 노드(Leaf)의 최대 개수

 

구현

# 필요한 모듈 다운로드
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings('ignore')

# 붓꽃 데이터 로드
iris_data = load_iris()

# train/test set 분리
x_train, x_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target, test_size = 0.2, random_state = 12)

# DecisionTree 분류기 생성
dt_clf = DecisionTreeClassifier(random_state = 123)

# 분류기 학습
dt_clf.fit(x_train, y_train)

 

피처별 중요도 확인

import seaborn as sns
import numpy as np
%matplotlib inline

# feature importance 추출
print('Feature importances: ', dt_clf.feature_importances_)

# feature별 importance 매핑
for name, value in zip(iris_data.feature_names, dt_clf.feature_importances_):
    print(f'{name} : {value}')

# feature importance를 column별로 시각화
sns.barplot(x = dt_clf.feature_importances_, y = iris_data.feature_names)

 

[OUTPUT]

Feature importances: [0.01250782 0.03001876 0.90481856 0.05265486]
sepal length (cm) : 0.012507817385866166
sepal width (cm) : 0.030018761726078806
petal length (cm) : 0.9048185603807258
petal width (cm) : 0.05265486050732925


분류의 성능 평가 지표

출처: medium.com/@danyal.wainstein1/understanding-the-confusion-matrix

  • 오차행렬(Confusion Matrix)
    • 이진 분류의 예측 오류가 얼마인지, 어떠한 유형의 예측 오류가 발생하고 있는지를 함께 나타내는 지표
  • 정확도(Accuracy)
    • 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표
    • Accuracy = (TN + TP) / (TN + FP + FN + TP)
    • 이진 분류의 경우 정확도 수치만으로 성능을 평가하면 성능이 왜곡될 수 있음.
    • 데이터가 불균형한(imbalanced) 레이블 값 분포를 가진 경우 부적합
  • 정밀도(Precision)
    • 예측을 Positive로 한 대상 중에 실제 값이 Positive로 일치한 데이터의 비율
    • Precision = TP / (FP + TP)
    • 정밀도가 상대적으로 더 중요한 지표는 실제 음성(Negative)인 데이터를 양성(Positive)으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
  • 재현율(Recall)
    • 실제값이 Positive인 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율
    • Recall = TP / (FN + TP)
    • 민감도(Sensitivity) 또는 TPR(True Positive Rate)라고도 불림.
    • 재현율이 상대적으로 더 중요한 지표는 실제 양성(Positive)인 데이터를 음성(Negative)으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우
※  정밀도와 재현율은 상호 보완적인 평가 지표이므로 트레이드오프(Trade-off) 관계에 있음.
  • F1-score
    • 정밀도와 재현율의 조화 평균
    • 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 높은 값을 가짐.

 

  • ROC 곡선(Receiver Operation Characteristic Curve)과 AUC
    • ROC 곡선 : FPR(False Positive Rate)이 변할 때 TPR(True Positive Rate)이 어떻게 변하는지 나타내는 곡선
    • 민감도(TPR) : 실제 양성(Positive)인 값이 정확하게 예측 되어야 하는 수준
    • 특이성(TNR) : 실제 음성(Negative)인 값이 정확하게 예측 되어야 하는 수준
    • FPR = FP / (FP + TN) = 1 - TNR
    • AUC (Area Under Curve) : ROC 곡선 밑의 면적을 구한 것으로서 1에 가까울수록 좋은 수

ROC curve

본 포스팅은 고려대학교 산업경영공학부 김성범 교수님의 유튜브 강의를 정리한 내용입니다.

유튜브 - 김성범[ 교수 / 산업경영공학부 ]

 

변수 사이의 관계

  • 확정적 관계 : X 변수만으로 Y를 100% 표현 가능(오차항 없음)

       예) 힘 = f(질량, 가속도), 주행거리 = f(속도, 시간)

  • 확률적 관계 : X 변수와 오차항이 Y를 표현(오차항 있음)

        예) 반도체 수율 = f(설비 파라미터들의 상태, 온도, 습도) + ε

              포도주 가격 = f(강우량, 온도, 포도품종) + ε

              위조카드 여부 = f(사용시간, 사용액, 사용장소) + ε

 

선형회귀모델

선형회귀모델 : 출력변수 Y를 입력변수 X들의 선형결합으로 표현한 모델

선형결합 : 변수들을 (상수배와) 덧셈, 뺼셈 연산을 통해 결합

 

선형회귀모델링의 목적

  • X 변수와 Y 변수 사이의 관계를 수치로 설명
  • 미래의 반응변수(Y) 값을 예측

 

선형회귀모델의 분류

  • X 변수의 수에 따라 : 단순회귀모델, 다중회귀모델
  • X 변수와 Y변수의 선형성 여부에 따라 : 선형회귀모델, 비선형회귀모델

 

선형회귀모델 가정

(i= 1,…,n)

모든 i에 대해서 오차항은 평균이 0, 분산이 σ^2 인 정규분포를 따름.

 

선형회귀모델이란?

입력변수(X)와 출력변수(Y) 평균과의 관계를 설명하는 선형식을 찾는 것

  • 위 선형식에서 β 를 파라미터 (parameter)라 하고 파라미터를 찾는 것을 통계적으로 추정이라고 함.

본 포스팅은 고려대학교 산업경영공학부 김성범 교수님의 유튜브 강의를 정리한 내용입니다.

유튜브 - 김성범[ 교수 / 산업경영공학부 ]

 

모델 학습의 핵심 아이디어

X(입력 변수)와 Y(출력 변수)의 관계를 찾는 것

수식으로 표현하면 아래와 같음.

 

파라미터(parameter)

w :   파라미터, 모수, 매개변수

X, Y 데이터가 주어졌을 때 파라미터 w를 구하는 것이 머신러닝의 핵심

ε = 0 이 되는 경우가 가상 이상적

 

손실함수(Loss Function)

실제 값과 추정 값의 차이 즉, 오차를 말함.

( i = 1,2 ,...,n )

 

비용 함수(Cost Function)

개별적인 오차를 정의하는 것이 손실함수라면 손실함수를 합이나 평균의 형식으로 나타낸 것이 비용함수(사실상 엄밀하게 구분하여 사용하지는 않음)

비용함수는 단순합으로 나타낼 경우 0이 되어 사라짐.

 

위의 상황을 방지하기 위해 보통 제곱을 취한 형식을 사용

 

 

파라미터 추정

비용함수를 최소로 하는 w를 찾는 것

 

 

모델별 파라미터 추정을 위한 알고리즘

  • 다중선형회귀 모델 → Least Square Estimation Algoritm

  • 로지스틱회귀 모델   Conjugate Gradient Algorithm

  • 뉴럴네트워크 모델   Backpropagation Algorith

 

머신러닝 모델 학습 과정 요약

  • 모델 결정하기 (Y를 표현하기 위한 X들의 조합 방식 결정)
  • 모델을 구성하는 파라미터 찾기(모델의 핵심) → 가지고 있는 데이터를 이용하여 실제 데이터의 값과 최대한 같게 나오도록

본 포스팅은 고려대학교 산업경영공학부 김성범 교수님의 유튜브 강의를 정리한 내용입니다.

유튜브 - 김성범[ 교수 / 산업경영공학부 ]

예측 모델링의 분류

  • 수치 예측 : 종속 변수 Y가 연속형인 경우(Regression, 회귀)
    • 예) 중고차 가격 예측
  • 범주 예측 : 종속 변수 Y가 범주형인 경우(Classification, 분류)
    • 예) 불량 예측, 고객 이탈 예측, 보험 사기 여부 예측, 이메일/스팸 분류

본 포스팅은 고려대학교 산업경영공학부 김성범 교수님의 유튜브 강의를 정리한 내용입니다.

출처 : 유튜브 김성범[교수 / 산업경영공학부]

 

 

머신러닝이란?

인간이 개발한 알고리즘컴퓨터 언어를 통해 기계에게 학습시키는 행위

  • 알고리즘(algoritmn) : 문제를 해결하기 위한 방법들의 체계적인 모임
  • 컴퓨터 언어(computer lanquage) : 인간과 컴퓨터가 소통하기 위한 수단

 

데이터의 구조

X : 독립 변수, 예측 변수, 입력(input) 변수

Y : 종속 변수, 반응 변수, 출력(output)변수

→ 머신러닝이란 X와 Y 사이의 관계를 표현하는 함수식을 찾는 것

 

학습 데이터와 검증 데이터

Training Data(학습 데이터) : 모델 구축시 사용되는 데이터

Test Data(검증 데이터) : 구축된 모델을 검증하는데 사용되는 데이터

+ Recent posts