LightGBMのインストールでこけたのでメモ

仮想インスタンスで機械学習の環境を構築していたら、lightgbmのインストールでこけたのでメモ。
環境はDebian/Linux。Python3系。

2022/01/16間違っていた記載があったので、いろいろ修正。

#初めにやったこと

```
python3 -m pip install lightgbm
```

前に環境構築したときはこの↑のpip installでいけたような記憶があった（そこまでややこしくはなかったような記憶があった）が、このコマンドでは駄目だった。（※正確には時間がかかりすぎていた。経験上、時間がかかりすぎるのはどこかが間違っていることが多い。）
もう一つコマンドを試してみる↓。

```
sudo apt-get install python3-lightgbm
```

が、"Unable to locate package python3-lightgbm"のエラーを吐く。

いつもの手法が通用しないので、改めてどこで問題が起こっているのか考察する。

　1.一応、lightgbmはpipでインストールできるはずである。（ネットにも情報が落ちている）
　2.さきほどの”python3 -m pip install lightgbm”のコマンドを打った時、ログによるとscikit-learnの環境構築をするところで止まっていたらしかった。
　3.まずはscikit-learnをインストールしてみれば、状況が改善するかもしれない。

という訳で、scikit-learnをインストールしてみた。一応その前にlightgbmがscikit-learnのどのバージョンをインストールしようとしているのか確認しておいた（実はlightgbmではそのバージョンは使えませんでした、となったら悲しいので）。
ログを見たところ、lightgbmはscikit-learn1.0.2をインストールしようとしていたらしいので、現在の最新版を入手しようとしていたことが分かった。

なので、scikit-learn公式のDocumentに従ってインストールコマンドを打ってみる。

https://scikit-learn.org/stable/install.html

```
sudo apt-get install python3-sklearn python3-sklearn-lib python3-sklearn-doc
```

Debian/Ubuntuでは↑のコマンドでscikit-learnを入手するらしい。
するとpython3-sklearn-docが"Unable to locate package"のエラーを吐いてしまった。
なので、今度はpython3-sklearn-docだけなくして、コマンドを再実行すれば問題なくsklearnをインストールできた。

その後、もう一度lightgbmをインストールしてみた。
すると、サクッと無事にlightgbmをインストールすることに成功。
ううん、どうやらscikit-learnが悪さをしていたようだね...。
同様の問題に当たったら、まずはscikit-learnをインストールできていないかどうかを確かめるとよいかもしれません。

# Cmakeとsetup.pyを利用したインストール(非推奨)

基本的にpython3パッケージはsetup.pyコマンドを使わずにインストールしたほうが面倒がないので、以下からの手順は非推奨。
どうしてもpipでインストールできない場合に参考にしてほしい。


まずはLightGBMインストールガイドを読む。

https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html#

これによると、LinuxではまずCMakeをインストールすることから始めるらしい。

#CMakeのインストール

まずwgetをaptで入手する。まずいつものupdateから。

```
sudo apt update
sudo apt install wget
```

次に、CMakeのサイトから最新版を入手する。

https://cmake.org/download/

現在の最新版は3.22.1なので、それを入手する。

```
wget https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1.tar.gz
tar -xvzf cmake-3.22.1.tar.gz
cd cmake-3.22.1
sudo ./bootstrap
sudo make
sudo make install
```

これでOK…かと思いきや、
「Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.」
というエラーがsudo ./bootstrap中に起こる。これについて軽くググってみたところ、この↓のコマンドを実行するといいらしい。エラーが特に起きなかった人はここを飛ばしてもいい。

https://stackoverflow.com/questions/58913364/could-not-find-openssl-try-to-set-the-path-to-openssl-root-folder

```
sudo apt install libssl-dev
```

一応、インストールできているか確かめる。

```
cmake --version
```

バージョンが表示されていたらOK。
ここまで来たら、あとはようやくlightgbmをインストールする。

# lightgbm のインストール

```
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake ..
make -j4
```

このコードは公式の手順通り。なお最後の「make -j4」の「-j4」は並列処理のためのコマンドであるが、この後ろにつく数字はCPUの数×２倍にすることで最適に処理を高速化できるらしい（なおこの数字が大きすぎると逆にCPUのキャパを越える）。

それから、公式のドキュメントには載っていないが、lightgbmを使用するにはさらに以下のコマンドを実行する。

```
cd ../python-package
python3 setup.py install
```

最後に確認。

```
$ python3

---import lightgbm
```

無事にimportできたら完了。

# 参考リンク

https://qiita.com/rautaki0127/items/d0767fc5934fc36232a2

https://qiita.com/koara-local/items/9d01c6bb9dd93563b7c6

https://qiita.com/SUZUKI_Masaya/items/1fd9489e631c78e5b007

https://stackoverflow.com/questions/58913364/could-not-find-openssl-try-to-set-the-path-to-openssl-root-folder

https://oxynotes.com/?p=6846