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
'인공지능' 카테고리의 다른 글
파이썬머신러닝 - 15. LightGBM을 이용한 캐글 산탄데르 고객 만족도 예측하기 (0) | 2020.11.28 |
---|---|
파이썬머신러닝 - 14. LightGBM (0) | 2020.11.27 |
파이썬머신러닝 - 12. 랜덤 포레스트로 사용자 행동 분류하기 (0) | 2020.11.26 |
파이썬머신러닝 - 11. 보팅 분류기로 유방암 악성여부 판단하기 (0) | 2020.11.26 |
파이썬머신러닝 - 10. 앙상블 모델 개요 (0) | 2020.11.26 |