学習する天然ニューラルネット

主に機械学習に関する覚書や情報の整理。競プロ水色→Kaggle Master→?

LightGBMのインストールのエラーに戸惑った話

事件の発生

LightBGMというライブラリを公式の手順に従ってインストールしようとしたらエラーメッセージが突如現れた。 github.com

またインストールするときにスムーズに行くように記録を残しておく。

環境はmacOS Sierra 10.12.6

どんなエラーが出たか

$ cmake ..
CMake Error at /usr/local/Cellar/cmake/3.11.4/share/cmake/Modules/CMakeDetermineCCompiler.cmake:48 (message):
  Could not find compiler set in environment variable CC:

  gcc-7.
Call Stack (most recent call first):
  CMakeLists.txt:9 (PROJECT)


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

gccまわりの設定がうまく行ってないみたいな?

ずいぶん前に別のマシーンにインストールしたときもこれではない別の問題でインストールに苦戦したような気もする…これだからpipだけでインストールできないやつは...

どうやって解決したか

公式の手順

git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM
export CXX=g++-7 CC=gcc-7  # replace 7 with version of gcc installed on your machine
mkdir build ; cd build
cmake ..
make -j4

これの2行目を

export CXX=g++-8 CC=gcc-8

に変えることで、無事インストールできた。コメントアウト# replace 7 with version of gcc installed on your machineって書いてくれてるし、自分のgccのバージョンに合わせれば平気そう。 2018/07/03現在、下記のコマンドを書き換えた2行目の前に入れておけば、すでに古いgccが入っていても平気なはず…?(未検証)

brew upgrade gcc

追記2018/08/03

別のマシーンでまたまたハマりました。

aotamasaki.hatenablog.com

さらに追記

condaを用いているなら、かなり楽にインストールできる

conda install -c conda-forge lightgbm 

Jupyter notebookで変数一覧を常に出す方法

  • はじめに
  • 変数一覧を出す方法
  • おわりに

はじめに

RStudioやMATLABを使ったことのある方ならわかると思うが、今扱っている変数を一望する機能がある。 RStudioならばこんな感じ。

f:id:aotamasaki:20180623131855p:plain

RStudioならGlobal Environmentと書いてあり、MATLABならばWorkspaceと書いてあるやつだ。

jupyter notebookでも%whosと打つと、変数の一覧が表示されるが自動更新はされない。いちいち%whosと打つのはめんどくさい。

めちゃくちゃぐぐると、一応Jupyter notebookでもRStudioなどと同じように変数一覧を出す拡張機能があるようで、あまり知られていないようなので、共有する。

変数一覧を出す方法

続きを読む

PythonでForward Selection (mlxtend)

  • 背景
  • Sequential Feature Selector
    • まず、forward selectionを行ってみる。
    • sequential feature algorithms (SFAs)
      • 1. Sequential Forward Selection (SFS)
      • 2. Sequential Backward Selection (SBS)
      • 3. Sequential Forward Floating Selection (SFFS)
      • 4. Sequential Backward Floating Selection (SBFS)
    • 選択手法の切り替え
    • 他の便利機能
      • feature selectionしてるときの詳細
      • 扱う特徴の数と性能のプロット
      • transform
      • GridSearch
  • さいごに

背景

前に変数選択(feature selection)をまとめたが、その中のForward Selectionはsklearnでは実装されていなかった。

aotamasaki.hatenablog.com

ググるとsklearnのissueで実装しろって突っ込まれてる。(2016年3月ってことはもう実装する気がない?)

github.com

そしたらRでやれって話なんですが、できるなら慣れたPythonでやりたい...

続きを読む

imbalanced-learnを実際に使った分析例 使わない場合と比較

  • はじめに
  • データの説明
  • 分析の流れ
  • 分析
    • 1. どういう判別器を用いたら良いか。
    • 2. 変数選択をする。
    • 3. imblearnでオーバーサンプリングとアンダーサンプリングを行う。
    • 4. インバランスを考慮しなかった場合と性能を比較する。
    • 5. 分析結果
  • まとめ
続きを読む

imbalanced-learnの機能の紹介

  • はじめに
    • imbalanced-learnとは
    • 動機
    • やること
    • 参考
  • 機能の紹介
    • インストール
    • 2.2.1 サンプルのでっち上げ(オーバーサンプリング)
      • 普通のSMOTE
      • ボーダーラインSMOTE
      • SVM SMOTE
      • ADASYN
    • 3.2.2 クリーニングアンダーサンプリングテクニック(データの削除)
      • 3.2.2.1 Tomek's link
      • 3.2.2.2. 近傍を用いたデータの編集
    • 4. オーバーサンプリングとアンダーサンプリングの組み合わせ
    • 5.2. サンプラーと推定器のアンサンブル
  • さいごに

はじめに

imbalanced-learnとは

scikit-learnと共同で利用できるPythonモジュールの一つである。不均衡データに対処する様々なテクニックが実装されている。不均衡データについてはこの記事にたどり着いた方に説明するまでもないでしょう。

続きを読む

変数選択(Feature Selection)の実装と改善の確認

  • はじめに
    • 実験設定
      • 目的
      • 用いるデータ
      • 用いる変数選択手法
      • 用いる判別器
      • 評価指標
      • 行わないこと
  • データを少し見てみる
  • すべての特徴を用いた場合
  • Filter Method
    • 目視により選択
    • sklearn.feature_selection.SelectKBestによる選択
  • Wrapper Method
    • sklearn.feature_selection.RFECVによる選択
    • Borutaによる変数選択
  • 実験結果
  • まとめ
続きを読む

目的地に案内してくれる魔法の帽子 Gogoal cap

  • 要約
  • はじめに
  • 問題意識
  • 完成品
  • システムの概要
    • 入力&音声認識
    • 目的地検索&センサーデータ取得
    • 出力
  • 実際につかってみる

要約

  • 振動で目的地の方向を教えてくれる帽子を作ったよ
  • 音声認識で場所を検索するよ
  • GPS地磁気センサーで場所と向いている方向を取得したよ
  • 実際に使ったよ
  • 機械学習は全く関係ないよ
続きを読む