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

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

時系列データを使ってオートエンコーダー keras

はじめに

時系列でオートエンコーダーを組む練習。ネットで漁っても見当たらなくて(kerasの日本語記事)、kerasのblogでも放置されていた。

Building Autoencoders in Keras

""We won't be demonstrating that one on any specific dataset. ""

→自分でやるしかねぇ

続きを読む

メモリに乗り切れないデータをkerasで学習する

  • はじめに
  • 何を使うか
    • 方法1
    • 方法2
    • 両者の違い(私感)
  • やることの概要
  • データの説明
  • モデルの構築(飛ばしてOK)
  • HDDからバッチを読み出す
  • 訓練
  • 結果
  • まとめ
  • 追記

はじめに

こんにちは。何が起きたかから言うと、DeepLearningしようとしたらデータが270GB近くあってメモリに乗らなかった。そこで、練習がてら、batchごとにHDDからデータを読み出して、batch学習するコードを書いた。

kerasやpythonをある程度知っている前提で書き進めていく。

何を使うか

公式ドキュメントで検索すると"メモリに載らない大きさのデータを扱うには?"

FAQ - Keras Documentation

とある。これによると方法は2つあるらしい。

方法1

model.train_on_batch(x, y)を使う。

このブログではこちらを試した。

方法2

model.fit_generator(data_generator, samples_per_epoch, epochs)を使う。

この方法はこちらの記事に解説が書いてあった。

tech.wonderpla.net

続きを読む

Google流 資料作成術を読んで

ここで書くことは?

日本実業出版社から出版されている、"Google流 資料作成術"を読んだので、自分が気をつけておく点をまとめておく。

  • ここで書くことは?
  • コンテキスト(文脈,背景)を理解する
    • 心持ち
    • 資料を作り始めるまえに
  • 表現を選ぶ
  • 不必要な要素を取り除く
  • 見てほしいところに注意を引きつける
  • ストーリーを伝える
    • ストーリーは三幕構成で
      • 始まり
      • 中間
      • 終わり
    • ストーリーは繰り返す
    • 逆ストーリーボード
  • ケーススタディ
    • 濃い背景色を使う場合
    • プレゼンの図を配布資料にも使い回すとき
  • 最後に

コンテキスト(文脈,背景)を理解する

心持ち

  • 説明的分析を見せる場面で探索的分析を見せてはいけない。
    • 100パターン(失敗98パターン)のときに100パターン全部見せるのはNG
    • 相手が知りたい2パターンだけ具体的に丁寧に説明する
  • 誰に何を伝えるか
    • 考えて資料を作っていると思うが、一般化したターゲット設定はやめるべき
      • 興味を持っているすべての人とか、利害関係者とかはNG
    • 相手との関係性を考える。
      • まずは相手の信用信頼を勝ち取るほうが先だったりする
    • 相手に何をしてほしいか
      • 意外と見落としがち
      • データを示しておしまいにならないように
  • プレゼンの練習
    1. 各スライドの重要なポイントを書き出す
    2. 声に出して言いたいことを言う練習、とくにつまずきがちなスライドの移行部分の説明に慣れておくように
    3. 周りに人にプレゼンを聞いてもらう

以上のことは,誰に→何を→どのようにの順番で決めるのが良いだろう。

続きを読む

またまた、LightGBMのインストールでエラーが出た

事件の発生

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

github.com

これのmacOS Apple Clang(9.0 or higher)に従ってインストを行ったらエラーが出た。

どんなエラーがでたか

インストレイションガイドに従って

brew install --HEAD cmake
brew install libomp
git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM
mkdir build ; cd build
cmake ..
make -j4

ここまでエラーはでなかった。そして

pip install lightgbm

でインストール。いざ、使おうとしたところでエラーが出た。

>>> import lightgbm
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/__init__.py", line 8, in <module>
中略
OSError: dlopen(/Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/gcc/lib/gcc/8/libgomp.1.dylib
  Referenced from: /Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so
  Reason: image not found

どうやって解決したか

アンインストールしてから再度やってみたりいろいろしたがどうしてもimportができなかったので諦めて他の方法でインストールした。

github.com

こちらのInstallation GuideのmacOS GCC/G++のやり方に従って、インストールした

cd LightGBM #gitからクローンしたディレクトリに入ってください。
rm -r build # 上記の失敗で作ったbuildを消しておきます。

#ここからほぼ上記のリンク通り
brew install cmake
brew install gcc

export CXX=g++-8 CC=gcc-8  # 上記のリンクとは異なり、ここを8に変えておかないとエラーが出ます。
mkdir build ; cd build
cmake ..
make -j4

これで無事にインストールでき、importもできるようになった。

関係あるかわかりませんがpyenvやvirtualenvを使っている場合は、事前にactivateしておくと無難かもしれない。

それでも直らない場合

実は、他のサーバーにインストールしようとしたところまた同じエラーが出てしまった。gcc-7を使ってインストールしたため、

Library not loaded: /usr/local/opt/gcc/lib/gcc/8/libgomp.1.dylib

って怒られるのは当たり前...でも管理者権限がないのでgcc-8をインストールすることもできず。

そこでstack overflowをあさっていたら、

pip install --no-binary :all: lightgbm

でインストールするといいよと記述を見つけた。ので、早速ためしたところ無事importできるようになった。これも一回試すといいかもしれない。

余談

前も別のところでエラー履かれたしスムーズにインストールできるようになってほしい aotamasaki.hatenablog.com

追記

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

conda install -c conda-forge lightgbm 

ハンズオンUMAP

  • はじめに
  • なぜ、あとからサンプルを布置できると嬉しいのか?
  • ドキュメントにそって
    • インストール
    • データの概要
    • 訓練とテストに分割
    • 訓練データで空間を学習
    • この潜在空間で学習
    • テストデータの潜在空間への布置
    • テストデータへの汎化性能
  • まとめ

はじめに

UMAPという新しい可視化の手法が開発された。

github.com

私的に、この手法の利点は大きく2つあると考えている。

  1. t-SNEよりも高速でありながらt-SNEと同じような可視化の結果が得られる。
  2. t-SNEと違って、学習済みの空間に、あとから新規のサンプルを布置できる。

特に、2番目について言及している。ブログ記事は日本語では見つからなかった。ので、2番目の強みの紹介がこのブログの目的である。

続きを読む

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などと同じように変数一覧を出す拡張機能があるようで、あまり知られていないようなので、共有する。

変数一覧を出す方法

続きを読む