DEVGRU

プログラミングと競馬予想について書きます

Coursera の Machine Learning course を始めた

Coursera という、無償のe-Learningがあり、そこのMachine Learning courseがかなり評判が良いので始めてみた。

www.coursera.org

現在2週目だが、ここまでの感想は以下の通り。

  • コンピュータ・サイエンスを昔やっていた身としては、復習になる部分が多いが、むしろ現役のときよりも分かりやすかったので、もっと早く出会いたかったなあと思った。
  • 当方、英語リスニングだめなので字幕必須だが、読む文にはそれほど苦にならない(ビデオ以外は英語です)ので、まあまあついていけている
  • 日本語字幕が流れるのが早いときがあるが、あんまり気にならない

まだプログラム書くとこまでたどり着いておらず、多変量の線形回帰についてのところまで来ている。 2週目でOctave書くらしいので、今晩中にはOctave書くことになるかと。


機械学習を学んでどうするかといえば、もちろん相場の予測に使う。

最近スキャルピングの本など読んだのだが、抵抗線とかを機械的に引くのはあんまり楽ではなく、 さらにその結果から次のアクションを自動的に判断するところまで作りこむのは、できなくはないが、良い物を作る自信はないし楽しそうでもない。 その他、人力で実施できる解析を機械にさせるのはいささか面倒だ。

それよりも過去の膨大なデータをガシガシ食べさせて、パターンを覚えさせるほうが楽で楽しい。

楽しんで作り、楽して稼ぐ、が一番だ。

仕事ではじめる機械学習

仕事ではじめる機械学習

  • 作者: 有賀康顕,中山心太,西林孝
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/01/16
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Machine Learning実践の極意 機械学習システム構築の勘所をつかむ! impress top gearシリーズ

Machine Learning実践の極意 機械学習システム構築の勘所をつかむ! impress top gearシリーズ

  • 作者: Henrik Brink,Joseph W. Richards,Mark Fetherolf,株式会社クイープ
  • 出版社/メーカー: インプレス
  • 発売日: 2017/11/17
  • メディア: Kindle版
  • この商品を含むブログを見る

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

  • 作者: Andreas C. Muller,Sarah Guido,中田秀基
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/05/25
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

機械学習 x トレードな記事 Qiita以外編

以前こんな記事を書いたんですが、Qiita以外のものも紹介します。

team-6.hatenablog.jp

うまくいっている様子なのはここだけですね。↓

為替を人工知能を使って紐解いてみたら投資回収率が100%を超えた! 為替予測モデル - 人工知能を使った小さな開発会社の小さな作品

驚愕のオチが。

masamunet.com

その他、感想なし。

darden.hatenablog.com

blog.takuya-andou.com

機械学習で為替予測 Deep Learning 編 | kuune.org

機械学習で為替予測 Deep Learning 編その 3 | kuune.org

ディープじゃない機械学習で為替(FX)の予測をしてみる | 人工知能ニュースメディア AINOW


トレーディングエッジ入門―利益を増やしてドローダウンを減らす方法 (ウィザードブックシリーズ138)

トレーディングエッジ入門―利益を増やしてドローダウンを減らす方法 (ウィザードブックシリーズ138)

実践 日経平均トレーディング

実践 日経平均トレーディング

今Pythonで機械学習・ディープラーニングする環境を作るならpyenv系一択だよね(※個人の感想です)

ちょっと煽ったタイトルですが、これから言いたいことを一言で言うとそういうことです。 またPython環境構築界隈の混沌が深まりそうで申し訳ないですが、自身の中ではそういう結論です。

まず、先に数件の別サイトの記事を紹介したいと思います。

qiita.com

qiita.com

ymotongpoo.hatenablog.com

上記ではpyenv不要では?という議論がされています。

斜め読みした感じだと、「Pythonのバージョンを複数インストールして切り替える需要あるか?」 という点で、pyenv不要ということらしいです。 不要なら使わないに越したことはありませんね。

さて、機械学習・ディープラーニングするにはAnacondaが必須なのは異論のないところだと思いますが、 Anacondaのバージョンアップではこれに含まれるライブラリが非互換なAPI更新がちょくちょくあります。

また、バージョンアップ前後のライブラリでパフォーマンスを測りたい、とか。

すると、「Anacondaのバージョンを複数インストールして切り替える需要」が出てくるわけで。

こちらの方もそんな感じで、pyenv + Anacondaな環境をセットアップする方法を紹介しています。

qiita.com

とすると、この場合はpyenv必要じゃね?となってくるわけです。

あともう一点、Anacondaはcurlとかの割と標準にあるコマンドを自身の中に持っていて、 普通にインストールすると/usr/bin/curlではなくAnacondaのものを使わせようとしてしまう現象があります。

これはAnacondaが悪いんですが、pyenvはそこのところを面倒見てくれていて、 Anaconda以外のPythonが有効なときはきちんと/usr/bin/curlを見るようにしてくれています。

asdf-vmのPythonプラグインはそこのところを見てくれなかったので、私はpyenvに乗り換えました。 以下参照。

team-6.hatenablog.jp

また、最近のpyenvがいい(と僕が思っている)ところは、いろんなものが1つの親コマンドにまとまっていることです。

  1. インストーラ・アンインストーラ
  2. バージョンマネージャ
  3. 環境マネージャ

1.,2. はpyenv一択だと思いますが、3.は議論が別れるところでしょう。

最近は公式のvenvが出てきたので、そちらを使う向きがあるでしょうが、pyenvのほうが補完が聞いたり、 bin/activateなんて謎コマンドではなくpyenv activate hogeで済むので嬉しいです。hogeの場所はpyenvが管理してくれます。

内部では、condaがあればそれを使うようです。これもまた議論が別れるところですね。

Pythonの仮想環境構築 2017.01版 - YAMAGUCHI::weblog にて、以下のような引用がありますが、

PythonにはThe Zen of Pythonという、Python自体の考え方や、それから派生したPythonで開発する上での指標となるものがあります。見たことがない人は次のコマンドで確認してください。 (略) 今回の話につながるところでいくと、次の3つがあります。

Simple is better than complex. (シンプルなのは複雑であることよりも良い)
There should be one– and preferably only one –obvious way to do it.(1つだけ、できれば唯一、の明らかな方法があれば良い)
If the implementation is hard to explain, it’s a bad idea.(その実装の説明が難しいなら、そのアイデアは良くない)

ツールに関してもそうです。シンプルなものがあればそれを使おう、なるべくシンプルな構成にしよう、という考え方です。

単一のツールで済むというのは、上記にそれほど反しないと思います。

そんなpyenv系(pyenv + pyenv-virtualenv, ついでにAnaconda)の使い方です。

# Install pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec "$SHELL"

# Install pyenv-virtualenv
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
exec "$SHELL"

# Install Anaconda
pyenv install -l # インストール可能なバージョン一覧を表示する、pyenv install までタイプしてTABでもいい
pyenv install anaconda3-4.4.0 # めっちゃ時間かかる
pyenv local anaconda3-4.4.0 # .python-version が作成され、カレントディレクトリのPythonのバージョンが固定される

# Create new environment
pyenv virtualenv anaconda3-4.4.0 my-env
# 追加パッケージのインストールが始まる

pyenv activate my-env # my-envの有効化
pyenv deactivate # 環境の無効化

綺麗に操作がpyenvでまとまっていますね!

パッケージ管理についてはpipcondaかに分かれてしまいますが、それは致し方ないでしょう。

将来的にはどうなるかわかりませんが、“今”Pythonで“機械学習・ディープラーニングする環境”を作るならpyenv系一択だと思います(※個人の感想です)。

入門 Python 3

入門 Python 3

詳細!Python 3 入門ノート

詳細!Python 3 入門ノート

実践 Python 3

実践 Python 3

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング