728x90

부스팅 기법

- 여러개의 약분류기를 순차 적으로 배치

- 앞의 모델에서 틀린 데이터에 가중치를 주어 이후 분류기에서 더 잘 분류할수 있게 도움

- 약 분류기의 분류 기준과 가중치들을 결합하여 강한 분류기를 만듬.

=> 아다부스트

 

 

GBM Gradient Boost Machine

- 아다부스트와 동일하나 가중치 갱신을 경사 하강법을 이용.

- 랜덤포래스트와 달리 가중치 갱신을 순차적으로 수행하여 병렬처리가 불가함

 => 좋은 성능을 보이나, 학습시 오랜 시간이 걸림.

 * 랜덤 포레스트로 우선 모델을 만들기도 함.

 

 

GBM으로 사용자 행동 인식 분류하기

 

이전과 동일하게 사용한 결과

gbm acc : 0.9379029521547336로

랜덤 포래스트보다 개선된 성능을 보임.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score
import warnings
warnings.filterwarnings("ignore")

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

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

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

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"])
                     
gbm = GradientBoostingClassifier(random_state=100)
gbm.fit(X_train, y_train)
y_pred = gbm.predict(X_test)
print("gbm acc : {}".format(accuracy_score(y_test, y_pred)))

300x250

+ Recent posts