Python 튜토리얼

Lv4 모델링 복습 - (1)

2021.08.30 09:43 3,289 조회

안녕하세요. 이번시간에는 XGBoost와 Light GBM에 대해 복습해 보는 시간을 갖도록 하겠습니다.


Boosting 🎆

성능이 높지 않은 여러개의 모델을 조합해서 사용하는 앙상블 기법 중 하나입니다.

성능이 낮은 예측 모형들의 학습 에러에 가중치를 두고, 순차적으로 다음 학습 모델에 반영하여 강한 예측모형을 만듭니다. 아래 그림은 boosting 모델의 학습 예시 입니다.

CCKorea / CC BY 


XGBoost란 🙄

XGBoost는 Extreme Gradient Boosting의 약자입니다.

Boosting 기법을 이용하여 구현한 알고리즘은 Gradient Boost 가 대표적

이 알고리즘을 병렬 학습이 지원되도록 구현한 라이브러리가 XGBoost 이다.

Regression, Classification 문제를 모두 지원하며, 성능과 자원 효율이 좋아서, 인기 있게 사용되는 알고리즘 입니다.


XGBoost의 장점

기존 boosting 모델 대비 빠른 수행시간(병렬 처리)

과적합 규제 지원(Regularization)

분류와 회귀 task 에서 높은 예측 성능

Early Stopping(조기 종료) 기능 제공.

다양한 옵션을 제공해 Customizing이 용이.

결측치를 내부적으로 처리 함.


Light GBM이란


XGBoost는 굉장히 좋은 성능을 보여주었지만 여전히 속도면에서는 조금 느리다는 단점이 존재 합니다. 👴

이러한 단점을 보완해주기위해 탄생한 것이 LightGBM(LGBM) 입니다 ! ✨✨

LGBM은 기존의 gradinet boosting 알고리즘과 다르게 동작됩니다.

기존 boosting 모델들은 트리를 level-wise 하게 늘어나는 방법을 사용한 반면, LGBM은 leaf wise(리프 중심) 트리 분할을 사용 합니다.

CCKorea / CC BY

leaf-wise 의 장점은 속도가 빠르다는 것이 가장 큰 장점입니다. 데이터 양이 많아지는 상황에서 빠른 결과를 얻는데 시간이 점점 많이 걸리고 있는데, Light GBM은 큰 사이즈의 데이터를 다룰 수 있고 실행시킬 때 적은 메모리를 차지합니다.



LGBM의 장점👩‍🏫

  1. 대용량 데이터 처리
  2. 효율적인 메모리 사용
  3. 빠른 속도
  4. GPU 지원


LGBM의 단점👩‍🌾

Light GBM은 Leaf-wise growh로 과적합의 우려가 다른 Tree 알고리즘 대비 높은 편입니다. 그러므로 데이터의 양이 적을 경우 Overfiitng(과적합)에 취약한 면이 있어 데이터 양의 적을 경우 사용을 자제하는 것이 좋습니다.


---------------------------------------------------------------------------------------------------------------------------------------------------------------------

# 데이터 확인

train.head()


# 원핫 인코딩 (pd.get_dummies())

train_one = pd.get_dummies(train)

test_one = pd.get_dummies(test)


# 모델 정의

xgb = XGBClassifier()

lgbm = LGBMClassifier()



# 모델 학습


# X 는 train에서 quality 를 제외한 모든 변수

# y 는 train의 qulity 변수


X = train_one.drop('quality',axis= 1)

y = train_one['quality']


# fit 메소드를 이용해 모델 학습

xgb.fit(X,y)

lgbm.fit(X,y)


# predict 메소드와 test_one 데이터를 이용해 품질 예측

xgb_pred = xgb.predict(test_one)

lgbm_pred = lgbm.predict(test_one)


# sample_submission.csv 파일을 불러와 예측된 값으로 채워 주기(xgb,lgbm)

submission_xgb = pd.read_csv('data/sample_submission.csv')

submission_lgbm = pd.read_csv('data/sample_submission.csv')


submission_xgb['quality'] = xgb_pred

submission_lgbm['quality'] = lgbm_pred


# 정답파일 내보내기

submission_xgb.to_csv('xgb_pred.csv',index = False)

submission_lgbm.to_csv('lgbm_pred.csv',index = False)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

[Colab 실습 링크]


↩️ 오늘의 파이썬 리스트

#데이콘_101 #AI #머신러닝 #딥러닝 #파이썬 #파이선  #데이터분석 #데이터사이언티스트 #코랩 #Python  #colab #kaggle #pandas #numpy #sckit-learn # read_csv #LGBM #XGBoost

로그인이 필요합니다
0 / 1000
Holte
2021.11.03 12:47

👩‍🏫

changhyeon
2022.01.03 18:08

done

dbnoid
2022.01.19 09:34

hijihyo
2022.01.27 14:33

acebed
2022.03.10 21:08

done

kimgugu
2022.03.28 13:59

Kdata
2022.05.03 15:20

krooner
2022.05.19 23:48

Y2J
2022.08.02 14:12