관리 메뉴

솜씨좋은장씨

[Ensemble] Colab에서 LightGBM 사용하기! 본문

머신러닝 | 딥러닝/머신러닝 | 딥러닝

[Ensemble] Colab에서 LightGBM 사용하기!

솜씨좋은장씨 2020. 2. 9. 13:39
728x90
반응형

2021년 5월 24일 내용이 수정되었습니다.👏👏

원자력 발전소 상태판단 알고리즘을 도전해보면서 머신러닝을 공부하며

Gradient Boosing알고리즘 중의 하나인 LightGBM 알고리즘을 알게되었고

DACON KB 금융문자분석경진대회에서도 수상자들이 사용했다는 것을 알게되어 저도 이번 경진대회에서 활용해보기위해

검색하여 찾아 사용해본 내용을 정리해보았습니다.

 

LGBM on Colab with GPU

My experience with LGBM to enable GPU on Google Colab!

medium.com

위의 글을 참고하여 직접실행해보며 오류가 나는 부분을 수정해보았습니다.

 

설치 방법

1. Colab 런타임 설정 중 하드웨어 가속기를 None에서 GPU로 바꾸어줍니다.

 

2. GitHub에 올라와 있는 소스코드를 git clone 명령어를 통하여 다운로드 받아줍니다.

!git clone --recursive https://github.com/Microsoft/LightGBM

3. 다운로드 받은 소스코드 파일이있는 디렉토리로 이동합니다.

%cd /content/LightGBM

4. 다음의 코드를 활용하여 설치를 진행합니다.

!mkdir build
!cmake -DUSE_GPU=1
!make -j$(nproc)
!sudo apt-get -y install python-pip
!sudo -H pip install setuptools pandas numpy scipy scikit-learn -U
%cd /content/LightGBM/python-package/
!sudo python setup.py install --precompile

5. Colab의 scikit-learn버전은 0.22.1이나

    LightGBM이 지원하는 버전은 0.21.3이므로 scikit-learn의 버전을 0.21.3 버전으로 재설치해줍니다.

( 재설치 하지 않아도 실행이 가능합니다.)

6. 다시 설치한 scikit-learn 버전을 적용하기 위해서 런타임을 재시작해줍니다.

7. 제대로 동작하는지 테스트를 수행합니다.

 

예제 코드 ( 붓꽃 품종 예측하기 )

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

import pandas as pd

# 붓꽃 데이터 세트를 로딩한다.
iris = load_iris()

# iris.data는 Iris 데이터 세트에서 피처(feature)만으로 된 데이터를 numpy로 가지고 있다. 
iris_data = iris.data

# iris.target은 붓꽃 데이터 세트에서 레이블(결정 값) 데이터를 numpy로 가지고 있다.
iris_label = iris.target
print('iris target값:', iris_label)
print('iris target명:', iris.target_names)

# 붓꽃 데이터 세트를 자세히 보기 위해 DataFrame으로 변환한다. 
iris_df = pd.DataFrame(data =  iris_data, columns = iris.feature_names)
iris_df['label'] = iris.target
X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, test_size=0.2, random_state=11)
# coding: utf-8
import pandas as pd
from sklearn.metrics import mean_squared_error
import lightgbm as lgb

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)
# specify your configurations as a dict
params = {
    'boosting_type': 'gbdt',
    'metric': {'l2', 'l1'},
    'num_leaves': 31,
    'learning_rate': 0.05,
    'feature_fraction': 0.9,
    'bagging_fraction': 0.8,
    'bagging_freq': 5,
    'verbose': 0
}
print('Starting training...')
# train
gbm = lgb.train(params,
lgb_train,
num_boost_round=20,
valid_sets=lgb_eval,
early_stopping_rounds=5)
print('Saving model...')
# save model to file
gbm.save_model('model.txt')
print('Starting predicting...')
# predict
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
# eval
print('The rmse of prediction is:', mean_squared_error(y_test, y_pred) ** 0.5)

 

 

sklearn 기초 - 붓꽃 품종 예측하기

사이킷런(scikit-learn)은 파이썬 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리다. pip install scikit-learn conda install sciket-learn import sklearn print(sklearn.__version__) pip 또는 conda로..

hun931018.tistory.com

 

 

microsoft/LightGBM

A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning ...

github.com

코드는 위의 두 페이지를 참고하였습니다.

실행해보면 정말 빠른시간 안에 결과가 나오는 것을 볼 수 있습니다.

 

읽어주셔서 감사합니다~

728x90
반응형
13 Comments
  • 프로필사진 BlogIcon 커딩왕 2020.03.25 10:22 신고 한번만 다운로드하면 앞으로 계속 GPU로 사용할 수 있는 것인가요??
    아니면 매번 COLAB을 사용할 떄마다 다시 다운을 진행해야하나요??
  • 프로필사진 BlogIcon 솜씨좋은장씨 2020.03.25 11:46 신고 매번 colab을 사용할때마다 다시 해주셔야하는 것으로 알고있습니다!
  • 프로필사진 BlogIcon J.daje 2021.08.20 09:11 신고 !sudo python setup.py install --precompile

    이 명령어를 치면, 아래와 같이 파일이 없다는 에러가 뜨는데요... 혹시.. 왜 그런지 아실까요?

    running install
    running build
    running build_py
    INFO:root:Generating grammar tables from /usr/lib/python3.7/lib2to3/Grammar.txt
    INFO:root:Generating grammar tables from /usr/lib/python3.7/lib2to3/PatternGrammar.txt
    running egg_info
    writing lightgbm.egg-info/PKG-INFO
    writing dependency_links to lightgbm.egg-info/dependency_links.txt
    writing requirements to lightgbm.egg-info/requires.txt
    writing top-level names to lightgbm.egg-info/top_level.txt
    reading manifest template 'MANIFEST.in'
    no previously-included directories found matching 'build'
    warning: no files found matching 'LICENSE'
    warning: no files found matching '*.txt'
    warning: no files found matching '*.so' under directory 'lightgbm'
    warning: no files found matching 'compile/CMakeLists.txt'
    warning: no files found matching 'compile/cmake/IntegratedOpenCL.cmake'
    warning: no files found matching '*.so' under directory 'compile'
    warning: no files found matching '*.dll' under directory 'compile/Release'
    warning: no files found matching 'compile/external_libs/compute/CMakeLists.txt'
    warning: no files found matching '*' under directory 'compile/external_libs/compute/cmake'
    warning: no files found matching '*' under directory 'compile/external_libs/compute/include'
    warning: no files found matching '*' under directory 'compile/external_libs/compute/meta'
    warning: no files found matching 'compile/external_libs/eigen/CMakeLists.txt'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/Cholesky'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/Core'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/Dense'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/Eigenvalues'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/Geometry'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/Householder'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/Jacobi'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/LU'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/QR'
    warning: no files found matching 'compile/external_libs/eigen/Eigen/SVD'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/Cholesky'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/Core'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/Eigenvalues'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/Geometry'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/Householder'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/Jacobi'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/LU'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/misc'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/plugins'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/QR'
    warning: no files found matching '*' under directory 'compile/external_libs/eigen/Eigen/src/SVD'
    warning: no files found matching 'compile/external_libs/fast_double_parser/CMakeLists.txt'
    warning: no files found matching 'compile/external_libs/fast_double_parser/LICENSE'
    warning: no files found matching 'compile/external_libs/fast_double_parser/LICENSE.BSL'
    warning: no files found matching '*' under directory 'compile/external_libs/fast_double_parser/include'
    warning: no files found matching 'compile/external_libs/fmt/CMakeLists.txt'
    warning: no files found matching 'compile/external_libs/fmt/LICENSE.rst'
    warning: no files found matching '*' under directory 'compile/external_libs/fmt/include'
    warning: no files found matching '*' under directory 'compile/include'
    warning: no files found matching '*' under directory 'compile/src'
    warning: no files found matching 'LightGBM.sln' under directory 'compile/windows'
    warning: no files found matching 'LightGBM.vcxproj' under directory 'compile/windows'
    warning: no files found matching '*.dll' under directory 'compile/windows/x64/DLL'
    warning: no previously-included files matching '*.py[co]' found anywhere in distribution
    warning: no previously-included files found matching 'compile/external_libs/compute/.git'
    writing manifest file 'lightgbm.egg-info/SOURCES.txt'
    copying lightgbm/VERSION.txt -> build/lib/lightgbm
  • 프로필사진 BlogIcon 솜씨좋은장씨 2021.08.20 16:16 신고 안녕하세요. 직접 포스팅을 보면서 다시 진행해본 결과
    질문해주신 분 말대로 같은 문구가 출력되지만
    설치 후 LightGBM을 활용하여 예제 코드를 동작하는데에는 일단 문제가 없었습니다.

    조금 더 찾아보고 문제가 있는 부분이 있다면 포스팅 수정 후 다시 말씀 드리겠습니다~

    감사합니다.
  • 프로필사진 param 2020.04.04 19:20 param쪽에 'device' : 'gpu' 설정을 따로 해주지 않아도 자동으로 gpu사용이 되는건가요?
  • 프로필사진 BlogIcon 솜씨좋은장씨 2020.04.04 23:03 신고 "device":"gpu" 설정해주어야합니다!
    알려주신 덕분에 수정할 수 있었습니다.
    감사합니다!
  • 프로필사진 param 2020.04.05 17:55 윗 댓글 쓴사람입니다.

    저는 classifier이 아닌 regression model에 사용하고 있어서 params 안에 'device' : 'gpu' 설정을 해줬는데,
    LightGBMError: GPU Tree Learner was not enabled in this build.
    Please recompile with CMake option -DUSE_GPU=1

    라는 오류메시지가 출력되면서 사용되지 않네요 ㅠㅠ

    혹시 해결 방법을 아시는지 궁금하여 여쭤봅니다 !
  • 프로필사진 BlogIcon 솜씨좋은장씨 2020.04.05 18:46 신고 혹시 설치하신 후에 런타임 재시작을 해주셨는지 궁금합니다.
  • 프로필사진 param 2020.04.06 10:55 네 했는데도 안되네용 ... ㅠ.ㅠ
    import sklearn하고
    sklearn.__version__ 해서 0.21.3 나오는것 까지 확인했습니다
  • 프로필사진 BlogIcon 솜씨좋은장씨 2020.04.06 16:49 신고 해당 Colab 파일 공유해주시면 한번 확인해보겠습니다!
  • 프로필사진 돼지창자 2021.05.17 16:51 위에분거 해결 됬나요 .,,,, 저도 똑같은 오류가 뜨네요 ㅠㅠ
  • 프로필사진 BlogIcon 솜씨좋은장씨 2021.05.18 11:24 신고 오늘 저녁에 테스트 해보고 답변 드리겠습니다.
  • 프로필사진 BlogIcon 솜씨좋은장씨 2021.05.24 19:42 신고 안녕하세요. 오류 나지 않는 버전으로 업데이트 하였습니다~ 알려주셔서 감사합니다!
댓글쓰기 폼