728x90

UCI 대학교에서 휴대폰 데이터로 사용자 행동 인식에 대한 데이터셋을 공개하고 있다.

 

Human Activity Recognition Using Smartphones Data Set

archive.ics.uci.edu/ml/datasets/human+activity+recognition+using+smartphones

 

 

대강 훑어보면

 

데이터는 1만개, 속성수는 561개 ...,

 

분류하려는 행동 갯수는 6개로 걷기, 계단 올라가기, 계단 내려가기, 앉아있기, 서있기, 눕기 정도가 있다.

 

데이터들은 갤럭시 S2의 가속도/자이로계에서 선각속도 등 정보들을 50Hz로 받았다고 한다.

 

전체 데이터 중 70%가 훈련용, 30%는 테스트 용이라고 하내..

 

 

 

일단 속성수만 해도 장난아니게 많다..

 

csv형태도 아니다보니

 

피처명 파일이랑 데이터 파일이 별도로 나누어져 있다.

 

 

피처 목록

 

 

훈련용 데이터들

- 독립 변수 데이터들과 종속 변수 데이터도 분리되있고

 

- 피처 데이터도 장난아니게 길다. 뒤에 보니 이 데이터는 ,가 아니라 \n으로 행이 구분되있는것같다.

 

 

 

 

 

 

일단 피처명들부터 읽어야하는데

 

피처 인덱스와 피처명이 스페이스로 구분되어있고, 해더가 존재하지 않는다.

 

 

일단 이 데이터들을 읽고 보자

 

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

path = "./res/UCI HAR Dataset/features.txt"

features_df = pd.read_csv(path,sep="\s+",
                         header=None, names=["column_index", "column_name"])

features_df.head()

 

 

여기서 column_name은 피처 데이터를 읽을때 컬럼으로 필요하니 리스트로 변환하자

feature_names = features_df["column_name"].values.tolist()
print(type(feature_names))
print(feature_names)

 

 

 

 

이제 훈련, 테스트 데이터를 읽자
* 아까 본 피처 데이터들은 스페이스로 구분되어있었으니 세퍼레이터를 지정하자

+ 라벨 데이터도 읽고

path = "./res/UCI HAR Dataset/"

X_train = pd.read_csv(path+"train/X_train.txt",sep="\s+", names=feature_names)
X_test = pd.read_csv(path+"test/X_test.txt",sep="\s+", names=feature_names)


y_train = pd.read_csv(path+"train/y_train.txt", sep="\s+", header=None,
                     names="action")

y_test = pd.read_csv(path+"test/y_test.txt", sep="\s+", header=None,
                     names="action")

 

 

 

데이터도 많고 속성 갯수도 장난아니다보니, info도 평소 보던거랑 조금 다르게 나온다.

 

 

라벨 데이터는 속성이 1개 뿐이고, 대부분 행동들 갯수가 균일하게 나온다.

y_train["action"].value_counts()

 

 

일단 기본 결정트리로 학습하고 성능을 살펴보자

 

기본 설정대로 한 경우 0.857482 정도의 성능이 나온다.

 

 

이번에 그리드 탐색 교차 검증으로 최적 하이퍼 파라미터를 찾아보려고 한다.

 

이전 글에서 파람 썻던걸 참고해서 사용해보자

ref: throwexception.tistory.com/1038

 

데이터는 많지만 다음과 같이 파라미터들을 지정해서 동작시켜보면 ..

 

데이터 수도 많은데다 파라미터도 다양하게 주다보니 조금 오래걸린다.

from sklearn.model_selection import GridSearchCV

param = {
    "max_depth" : [10, 20, None],
    "min_samples_leaf" : [1, 6],
    "max_features" : [100, None]
}


gs = GridSearchCV(dt,param_grid=param,cv=5, refit=True)
gs.fit(X_train, y_train)

 

 

최적의 하이퍼 파라미터와 성능

 

 

 

다른 경우들을 비교해보면 0.84~ 0.85대 정도 나오고 있다.

gs_result_df = pd.DataFrame(gs.cv_results_)
gs_result_df[["params", "mean_test_score", "mean_train_score"]]

 

 

 

분류에서 가장 중요한 변수들을 살펴보자

best_dt = gs.best_estimator_
feature_importances = best_dt.feature_importances_
ftr_importances = pd.Series(feature_importances, index=X_train.columns)

ftr_top10 = ftr_importances.sort_values(ascending=False)[:10]

plt.title("Feature importance top 10")
sns.barplot(x=ftr_top10, y=ftr_top10.index)

300x250
728x90

분류

- 주어진 데이터가 어느 카테고리에 속하는지 판단하는 일

- 나이브 베이즈, 로지스틱 회귀, 결정 트리, SVM, 앙상블, 신경망, 최근접 등

- 영상, 음성 등 대용량 비정형 데이터 -> 딥러닝

- 정형 데이터 -> 머신러닝. 최근 앙상블 기법이 애용

 

 

앙상블

- 여러 알고리즘들의 활용(앙상블)

- 약 분류기들을 결합하여 상호 보완

- 배깅/부스팅

 

 

결정 트리 decision tree

- 데이터의 규칙을 트리 형태로 분할해 나가는 모델

- 장점 : 피처 스케일링이나 정규화 필요가 없음

- 단점 : 과적합으로 성능이 떨어짐. 트리 크기 제한 필요.

 

 

사이킷런의 결정트리

- CART Classification And Regression Tree 알고리즘 기반(ref : throwexception.tistory.com/1030?category=857655)

- DecisionTreeClassifier/Regressor 제공

- 다음 파라미터가 있음

 1. min_samples_split : 노드 분할을 위한 최소 샘플 데이터 수, 과적합 제어용. 작을수록 과적합 가능성 증가

 2. min_samples_leaf : 리프 노드가 되기위한 최소 샘플 데이터수. 과적합 제어용. 작을수록 좋음

 3. max_features : 최적 분할을 위해 다룰 최대 피터 갯수. 기본값 "None" 모든 피처 고려

 4. max_depth : 최대 깊이. 기본값 "None"는 완전 분할될때까지 분할 or 리프 노드 최소 샘플까지 분할

 

 

 

결정 트리 과적합 개선하기 

- min_samples_leaf : 리프 노드(말단 노드)가 되는 하한 데이터 갯수를 높이면 과적합 문제가 개선됨.

1. datasets 모듈의 make_classification 함수로 데이터 셋 생성

 - make_classification() : 분류를 위한 데이터 셋 생성 함수

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
import seaborn as sns
import matplotlib.pyplot as plt


X, y = make_classification(n_features=2, n_informative=2, n_redundant=0,
                          n_classes=3, n_clusters_per_class=1, random_state=0)


plt.scatter(X[:,0],X[:,1], c=y)

2. min_samples_leaf 디폴트(None) 인 상태에서의 성능

- 훈련용 데이터에는 100% 정확하나, 테스트 데이터는 85% 정확도를 보임

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

df = DecisionTreeClassifier()
df.fit(X_train, y_train)

print("train_score : {} ".format(df.score(X_train, y_train)))
print("test_score : {} ".format(df.score(X_test, y_test)))

 

 

 

 

3. min_samples_leaf=6일때 성능

- 훈련 데이터 정확도는 떨어졋으나, 테스트 정확도는 90%로 증가함

df = DecisionTreeClassifier(min_samples_split=6)
df.fit(X_train, y_train)

print("train_score : {} ".format(df.score(X_train, y_train)))
print("test_score : {} ".format(df.score(X_test, y_test)))

 

 

4. GridSearchCV로 최적 하이퍼 파라미터 찾아보기

- 결정 트리 파라미터를 다음과 같이 다양하게 주었을때, 최적 분류기의 파라미터와 성능 보기

 => 훈련 점수는 0.8875로 떨어졋으나, 테스트 점수가 1.0으로 상승했다..?

 * max_depth=4, min_samples_leaf=1, min_samples_split=2 일때,

from sklearn.model_selection import GridSearchCV

param={
    "min_samples_leaf":[1, 2, 3, 4, 5, 6, 7, 8, 9],
    "max_depth":[2, 3, 4, 5, 6, None],
    "min_samples_split":[2, 3, 4, 5, 6, 7, 8, 9, 10]
}

df = DecisionTreeClassifier()
gs = GridSearchCV(df, param_grid=param, cv=5, refit=True)

gs.fit(X, y)

df = gs.best_estimator_
print("train_score : {} ".format(df.score(X_train, y_train)))
print("test_score : {} ".format(df.score(X_test, y_test)))
print(gs.best_score_)
print(gs.best_params_)

300x250
728x90

상관 분석 correlation analysis

- 두 변수 사이의 상관 관계를 분석하는 방법

- 관계를 시각적으로 보기 위해 산점도 scatter plot를 이용

- 수치적 지표로 상관 계수 correlation coefficient가 있음.

 

피어슨의 상관계수

- 공분산을 두 변수의 표준편차로 표준화 시킨 값.

- 공분산 : Cov(x, y) = E(xy) - E(x)E(y)

- 상관계수 : Corr(x, y) = Cov(x, y)/(std(x) * std(y))

- -1에서 1사이의 값을 가지며, |corr|이 1에 가까울수록 강한 선형 관계를 가짐.

 

 

 

 

거리

- 데이터 간 차이의 정도

- 거리의 종류 : 유클리디안 거리, 맨해튼 거리, 마할라노비스 거리, 쳬비셰프거리, 민코프스키 거리 등

- 유클리디안 거리 : 일반적으로 사용하는 거리.

- 쳬비셰프 거리 : 모든 거리들 중에서 가장 큰 거리

- 맨해튼 거리 : 각 축과 평행하게 직진하여 얻은 거리

- 민코프스키 거리 : m차원 민코프스키 공간의 거리

 

 

 

 

다중공선성 multicollinearity

- 다중 회귀 분석에서 독립 변수들이 서로 상관관계를 가지는 성질

- 변수들 간에 강한 상관 관계를 갖는 경우 회귀 계수의 분산을 키워 문제가 발생

 

 

 

분산팽창지수 Variance Inflation Factor; VIF

- 다중공선성을 측정하기 위한 지표

 => 다중공선성을 일으키는 독립변수를 제거하여 개선

* R squared 는 모형의 적합도를 나타내는 결정계수

 

 

R sqaured   Coefficient of determination

- 모형이 얼마나 설명령을 잘 가지고 있는가를 나타내는 계수로 0 ~ 1값.

 

 

 

다중 공선성 문제 판단하기

- 상관관계의 유의성을 검증하여 유의성이 있다면 다중공선성 문제 의심을 해야함.

- VIF가 10이상 시 다중 공선성 문제가 있음.

 

 

300x250
728x90

확률적 표본 추출

- 확률에 근거하여 추출하는 방법

- 단순무작위, 층화표본, 집락표본, 계통표본 추줄 방법 등이 있음.

- 단순무작위 추출 방법 : 임의로 표본들을 추출

- 층화 표본 추출 방법 : 층을 나누어 독립적으로 임의 추출하는 방법. 층간 이질성을 가짐.

- 집락표본 추출 방법 : 집락으로 분할하여 무작위로 집락을 추출후 조사하는 방법. 특정 그룹위주 조사

- 계통 표본 추출 방법 : 목록에서 일정 순서, 간격대로 요소들을 추출하는 방법.

 

 

비확률 표본 추출

- 확률을 알고있음을 가정하에 다루는 표본 추출 방법

- 할당 표본, 유의 표본, 임의 표본, 누적 표본 추출 방법 등이 있음.

- 할당 표본 추출 : 층화 표본과 유사하나 비율을 고려하여 추출함.

- 유의 표본 추출 : 주관적 의도에 따라 추출하는 방법

- 임의 표본 추출 : 임의로 편하게 추출

- 누적 표본 추출 방법 : 임의로 선정한 소수의 표본들에게 추천을 받아 표본들을 선정해 추출해나가는 방법.

 

300x250
728x90

탐색적 데이터 분석 EDA Explorary Data Analysis

- 수집된 데이터를 다양한 관점에서 살펴보고 의미를 이해하는 과정

 

데이터 통계 분석 방법들

1. 종속 변수 갯수에 따른 분류

- 단변량 분석

- 다변량 분석

2. 종속관계에 대한 분석들

- 카이 제곱

- 분산 분석

- 판별 분석

- 회귀 분석

3. 상호 관계에 대한 분석

- 요인 분석

- 군집 분석

ref : fullofjoy1108.tistory.com/24

 

 

 

 

빈도 분석 frequency analysis

- 카이 제곱 검정 이용

- 데이터들이 도수 분포표 상에서 어떤 분포 특성을 가지는지 파악에 사용

 => ex. 다음 가정 검증에 사용 : 한달간 여행을 가는 사람 수는 지역에 따라 차이가 있다.

 

교차 분석 crosstab analysis

- 교차표를 이용하여 변수간 독립성과 관련성 분석

- 카이 제곱 검정

=> 성별과 전공 선택 문항 간의 관계

 

분산 분석 Analysis of Variance

- 두 이상 집단을 분석하는 경우, 분산의 비로 만든 F 분포로 가설검정 하는 방법

- 각 집단의 모분산/모평균 차이가 유의한지 검정.

 

평균 분석 T-Test

- 표본 평균/표본평균의 차가 유의미한지 등을 검증 하는 방법

ex. 어느 생물의 평균 체온은 27.3도이다. 

 

판별 분석 discriminants analysis

- 판별식을 이용하여 종속 변수를 판별하는 분석 방법

 

회귀분석 regression analsysis

- 독립 변수와 종속 변수 사이 영향력을 파악하여, 새 데이터가 주어질때 종속변수를 예상하는 분석

 

상관관계 분석 correlation anlaysis

- 변수들 사이에 상관성을 분석하는 기법

- 상관 계수로 선형적 상관관계가 존재하는지 파악.

 

 

요인 분석 factor analysis

- 서로 연관성이 있는 변수들을 묶어 요인이라는 새로운 변수로 만들어 축소시키는 분석기법

 

주성분 분석 primary component analysis

- 요인 분석과 마찬가지로 변수의 수를 효과적으로 줄이는 방법

- 요인 분석은 연관성 있는 변수들을 묶어 요인으로 만들었으나 주성분 분석은 다름

- 주성분 분석은 변수 값들의 분산을 직교성을 이용하여 최대한 보존하도록 하여 차원을 축소시킴.

 

 

군집 분석 cluster analysis

- 어떤 대상들을 군집들로 분할하여 다루는 방법

 

시계열 분석 time series analysis

- 시간 흐름에 따라 데이터가 어떤 변화 추이를 보이는지 다루는 분석방법

300x250
728x90

통계량 추정

- 점 추정 : 모수에 대한 추정

- 구간 추정 : 모수에 대한 추정과 모수를 포함하고 있을것이라 신뢰 할수 있는 범위에 대한 추정

 

 

신뢰 구간 추정

- 표본수가 많은 경우와 표본수가 적은 경우로 구분해서 볼수 있음.

- 모평균 mu에 대하여 100(1- alpha) % 신뢰구간 추정은 아래와 같이 할수 있다.

 

1. 표본 수가 많은 경우 

- 모집단이 정규분포를 따르고 모분산을 알때

 

- 모집단이 정규분포를 따르지 않으나 모분산을 알때,

 -> 표본이 많으므로 중심극한정리에 따라 정규분포를 따름.

 

2. 표본이 적은 경우

- 표본 평균 bar_x에 대한 구간 추정

- 표본 분포가 적을때, 표본 평균을 표준화하면 t분포를 따르게 됨.

 

 

 

 

 

 

 

 

 

 

평균 검정

- 평균과 관련한 귀무가설과 대립가설이 주어질때, 귀무가설의 기각 채택여부를 다루는 검정

 => t검정이라고도 부름,  검정 통계량을 구하여, 기각역에 부합하는지 다룸

- 단일 표본에서의 모평균에 대한 검정 -> ex. 체온의 평균에 대한 가설이 주어질때 주장할수 있는지.

- 두 독립 표본에 대한 평균 검정 -> ex. 두 약성분의 효과에 차이가 존재하는지 비교.

- 대응된 표본에서의 평균 검정 -> ex. 앞다리 평균, 뒷다리 평균에 차이가 존재한다라는 가설

 

 

 

 

 

 

 

 

 

단일 표본 평균 검정의 예시

1. 표본이 큰경우 : 기각역은 표준정규분포를 따르며, 검정 통계량 z0를 사용.

- 다음의 귀무 가설과 대립 가설, 그리고 49개 표본으로 부터 표본 평균이 주어질때

- 위 통계량으로 구한 검정 통계량

- 유의수준 5%에서 기각역

- 검정 통계량이 기각역을 초과하므로 귀무가설 H0에 대한 검정통계량이 기각역에 포함되므로 

 귀무가설은 기각.

 

 

 

2. 표본이 작은 경우 : 기각역은 t분포를 따르며, 검정통계량 t0를 사용.

- 다음의 귀무가설과 대립가설, 그리고 9개의 표본으로 구한 통계량이 주어질때

- 검정통계량 t0는 다음과 같다.

- 유의 수준 alpha = 0.05에서 기각역은 다음과 같다.

 => 검정 통계량 t0는 기각역에 포함되므로 본 귀무가설은 기각된다.

 

 

 

 

 

'

 

두 표본이 주어질때 차이에 대한 평균 검정(두 집단의 표본 평균이 같은가)

- 두 표본의 차에 대한 표준화된 분포는 아래와 같다.

 * Sp는 공통 표준 편차

 

 

 

- 다음의 귀무가설과 대립가설, 그리고 통계량들이 주어질때,

- 표본이 많은 경우 검정 통계량 z0

- 유의 수준 alpha = 0.05에서 기각역

 => 검정 통계량이 기각역에 속하므로 본 귀무가설은 기각한다.

 => 두 집단의 표본 평균에는 유의미한 차이가 존재한다.

 

 

300x250
728x90

통계학의 분류

1. 데이터 활용 방안에 따른 분류

- 기술 통계학 descriptive statistics :  데이터를 통계적으로 어떻게 표현할 것인가에 대한 학문

- 추론 통계학 inference statistics : 데이터로 부터 의미있는 사실을 추론해 나가는 방법에 대한 학문

 

2. 모수의 여부에 따른 분류

- 모수 통계학 parameter statistics : 모집단의 분포 성질을 따르는 표본들로 부터 모수를 추정해나가는 학문

- 비모수 통계학 nonparameteric statistics : 모집단의 분포 성질을 모르는 표본들로부터 모집단의 특성을 추정하는 학문

 

 

통계학 기본 용어

- 모집단 population : 알고자 하는 전체 집단으로 관심 대상.

- 표본집단 sample : 모집단을 추론하기 위해 구한 부분집합

- 모수 parameter : 모집단의 성질을 나타낸 수치

- 통계량 statistics : 표본 집단에 대한 함수로 대표적으로 표본 평균과 표본 분산 등이 있음.

 

 

 

변수의 종류들

1. 기능에 따른 분류

- 독립 변수 independent variable : 설명 변수라고도하며, 종속변수에 영향을 주는 변수

- 종속 변수 dependent variable : 반응 변수라고도 하며, 우리가 알고자하는 변수

2. 성질에 따른 분류

- 연속 변수 continusous variable : 연속된 값을 갖는 변수

- 이산 변수 discrete variable : 이산 값을 가지는 변수

- 가변수 dummy variable : 카테고리형 변수를 독립 변수로 사용시 원핫 인코딩 방식으로 변환한 변수

 

 

 

 

이상치 판단 방법

- 이상치 : 데이터 분포로부터 일정 범위를 벗어난 데이터

- 상자 그림으로 쉽게 확인 가능

- 이상치 범위는 하한 Q1 - 1.5 x IQR, 상한 Q3 + 1.5 x IQR, IQR = Q3 - Q1

 

 

기초 통계량 

- 평균 mean : 데이터 총합/데이터 갯수

- 중위수 median : 데이터의 중앙에 위치한 값

- 4분위수 Quartile : 데이터의 25%, 50%, 75%, 100%에 위치한 값

- 4분위수 범위 IQR InterQuartile Range : Q3 - Q1

- 최빈수 mode : 가장 많은 빈도를 가진 값

- 분산 variable : 데이터의 퍼진 정도

- 표준편차 standard deviation : 분산에 제곱근을 씌운값

- 변동계수 CV coefficient of variance : 표본 평균에 대해 흩어진 정도. CV = 100 * S/bar_x

https://m.blog.naver.com/moses3650/220880815585

 

300x250
728x90

이전부터 정보이론을 공부해야지 알기는 했지만

 

제대로 해볼 엄두가 잘 나지를 않았다.

 

답답한건 어쩔수 없지만 

 

가장 자주나오는 샤논의 정보이론 내용만이라도 조금 정리해보려고 한다.

 

 

 

 

이 내용에 대해서

 

이광근 교수님 강의가 유튜브에 올라와 있더라

 

 

www.youtube.com/watch?v=UwUR7vl4VgQ

 

 

 

 

메시지의 정보량

- 메시지 겉모습에 대한 양

- 자주 나오는 것은 정보량이 적고, 많지않은것은 정보량이 많다.

- 엔트로피 : 정보의 예측 불허한 정도

- 불필요한 내용이 들어가면 정보량이 줄어듬

 

 

 

샤논이 정의한 메시지의 정보량

- x : 메시지에 나오는 단어

- p(x) : x가 메시지에서 나올 확률

- 확률에 로그를 취하면 음수가 되므로 앞에 -를 붙임

=> 셔넌 엔트로피 : 모든 사건 정보에 대한 기대값

 

 

 

정보량의 예시

- 메시지에 "가", "나"가 절반을 차지하는 경우

=> 두 단어가 차지하는 메시지의 정보량 = 1

- 불규칙성이 줄어들수록 정보량이 줄어든다.

 

300x250
728x90

앙상블 모델

- 서로 다른 여러개의 모델들을 생성 후. 모델의 결과를 조합하여 최종 결과를 얻는 방법

- 주로 다수결 voting이 사용되었었음.

- 단순 다수결 : 배깅, 랜덤 포레스트

- 가중 다수결 : 성능이 우수한 분류기에 가중치를 추가 부여. 부스팅

 

 

 

앙상블 모델의 장점

- 분류기들이 다양함

- 부트스트랩 : 반복 확률 랜덤 추출. 기존의 훈련 데이터를 임의 추출하여 훈련용으로 사용. 모델에 학습 후 집계

                   -> 배깅에 사용, 서로 다른 데이터 집합으로 모델을 학습하는 효과

- 트리 모델을 학습 시 분할 방법을 다르게 하여 다양한 모델을 만들 수 있음.

- 후보 분할 임계치를 임의의 부분 변수들을 선정하여 분할 개선도를 최대화 시킴(랜덤 포래스트)

 

 

배깅 bagging

- bootstrap aggregation의 약어

- 부트 스트랩 데이터를 여러개 생성. 각 분류기에 학습하여 결과를 앙상블 함.

- 트리 모델의 단점 : 최초에 선정된 변수에 따라서 불완정성이 존재. -> 이후 모형이 완전히 달라질수 있음.

- 앙상블, 배깅은 트리 모델의 불안정성을 크개 개선시킴.

 

 

 

부스팅 boosting

- 1997년 프로인드와 샤파이어가 개발한 앙상블 기법

- 배깅과 마찬가지로 여러개의 분류기 생성, 결과 결합을 하나 분류기 생성과 결과 결합방식이 다름.

- 분류기를 시퀀스 형태로 배치. 오분류 데이터에 가중치를 높게 선정

 -> 다음 분류기는 가중치 높은 값의 오분류를 줄이도록 학습

 -> 계속 오분류 되는 데이터들은 큰 관심을 가지고 분류할수 있게 됨. 

=> 잘 분류되지 않은 부분을 계속 개선시켜나가는 방법이라 할수 있음.

  *  아다부스트(AdaBoost: adaptive boosting)가 많이 사용됨

 

 

랜덤포레스트 random forest

- 배깅, 부스팅보다 예측력이 좋음

- 트리 모델 생성 시, 임의성을 높이기 위해 부트스트랩과 입력변수를 임의 추출하여 결합한 방법

 

 

 

 

300x250
728x90

트리 모델

- 데이터 분석 과정을 트리로 구조화하여 분류/회귀 분석하는 기법

- 타겟 변수(목표 변수)가 카테고리형(범주형)인경우 분류기

- 목표 변수가 확률, 수인경우 회귀 모델 이용

-> 트리로 많은 양의 데이터를 분석할수 있음

 

 

트리

- 개요 : 데이터에 기반하여 노드들을 분할해나감. 분리 규칙을 구할지 판단.

- 사용 목표 : 분류, 변수 선택, 변수간 상관성 탐색 용도로 사용 가능

 

 

트리 모델의 역사

- 변수간 연관성 탐색하는 방법으로서 개발

- AID 1964

- THAID 1973, CHAID Squared Automatic Interaction Detection 1980

- CART Classfication And Regressions Trees 1984년도에 완성된 트리 모델

- C4.5 1983

- FACT 1988

- Quest 1997 : 이진 분할 + 나무모형 가지치기 수행

- Cruise 2001 : 다중 분할 나무모형

 

 

트리 모델 장점

- 독립 변수의 형태에 상관없이 사용

- 이해, 해석이 간편

- 변수간 상관성 쉽게 찾을수 있음

- 결측치 처리가 용이

- 새로운 데이터에 대해 쉽게 예측 가능

 

트리 모델 단점

- 단순함과 분리를 하는 만큼 타 모델보다 성능이 떨어질수 있음

- 학습 데이터가 적은 경우, 쉽게 변할 수 있음

 

 

CART 모델

- 불순도를 낮추도록 이진 분할 수행

- 불순도는 지니계수 함수로 계산

- 분할 임계치 선정과 분할을 재귀적으로 수행하여 트리 모델 완성

 

 

C4.5 트리모델

- CART 모델과 동일하나 엔트로피를 이용하여 불순도 계산

 * 엔트로피 : 정보의 불확실성 정도.

 ref: hyunw.kim/blog/2017/10/14/Entropy.html

 

CHAID Chi squared Automatic Interaction Detection 트리모델

- 카이제곱 검정을 이용하여 분할 임계점을 결정함

 

QUEST Quick Unbiased Effcient Statistical Tree 모델

- CART 모델의 변수 선택 편향성을 개선하기 위한 모델

 * CART 모델은 특정 분류값이 많을 수록 해당 변수 위주로 분할

- 변수 선택 : 일원배치 분산분석과 카이제곱검정이용

- 분할 임계치 선정 : CART의 임계치 선정 법과 2차 판별분석을 혼용

- 장점 : 연산 속도가 빠르며, CART의 편향성을 개선

 

 

CRUISE 트리 모델

- QUEST의 변수 선택 방법을 개선. 변수간 상관성을 더 반영

- 변수 선택 : 카이제곱 분할표 검정 이용

- 분할 임계치 선택 : 박스-콕스 변환후, CART의 방법과 선형 판별분석 수행

- 장점 : 다중 분할/ 선형 결합 분할 가능

 

 

트리 모델 크기 조절 방법

- 분할 정지 split 방법 : 통계적 유의성을 이용하여 분할을 해나갈지 평가

- 가치지기 pruning 방법 : 분할해 나간후. 적절하지 않은 일부 가지를 제거

 

 

300x250

+ Recent posts