본문 바로가기
Machine Learning

[ML] GBM

by ram_ 2023. 1. 10.

GBM

- 부스팅 알고리즘은 여러개의 약한 학습기(week learner)를 순차적으로 학습-예측하면서

   잘못 예측한 데이터에 가중치를 부여하여 오류를 개선해가는 방식

- GBM은 가중치를 업데이트할 때 경사 하강법(Gradient Descent)를 이용하는 것이 큰 차이

- 일반적으로 GBM의 성능 자체는 랜덤포레스트보다 좋다고 알려져 있으나, sklearn의 GBM은 속도가 아주 느리다.

 

import pandas as pd
import matplotlib.pyplot as plt

url = "https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/features.txt"
feature_name_df = pd.read_csv(url, sep='\s+', header=None, names=['column_index', 'column_name'])

feature_name = feature_name_df.iloc[:, 1].values.tolist()

X_train_url  = "https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/train/X_train.txt"
X_test_url = "https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/test/X_test.txt"

X_train = pd.read_csv(X_train_url, sep='\s+', header=None)
X_test = pd.read_csv(X_test_url, sep='\s+', header=None)
X_train.columns = feature_name
X_test.columns  = feature_name
y_train_url = "https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/train/y_train.txt"
y_test_url = "https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/test/y_test.txt"

y_train = pd.read_csv(y_train_url, sep='\s+', header=None, names=['action'])
y_test = pd.read_csv(y_test_url, sep='\s+', header=None, names=['action'])
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score
import time
import warnings

warnings.filterwarnings('ignore')

547초가 걸렸다 .. 

지금까지 돌린 acc 중 가장 오래 걸렸다.

이 코드는 중단했다.

40분이 넘게 걸리는 이유로 강사님이 띄워주시는 결과값을 참고하기로 한다.

 

X_test 데이터에서의 성능은 93.9%가 나왔다.