背景
今までこの分野から私はちょっと逃げていて、「数学苦手だしなー」とか「なんだか難しいしな」とか「pythonあんまり好きじゃないしな」とか、本当にどうでも良い理由で逃げていました。しかし、真剣に向き合わなきゃいけない事例が出てきて、これを気にちょっと真剣にがんばろうと思い立ちました。
どうでも良いことに頑張らなくて良くするために頑張ろう\(^o^)/
書いている人のアセット
- プログラムはある程度は書ける。
- Python は2 なんだか3なんだかよくわからないという理由だけで避けていた
- 機械学習を使ってすげーサービスを作ろう!! というよりは、自分の秘書みたいな、自分のサポートをしてくれるシステムを作れたら良いなーくらいのモチベーションでやっています。
- そんなに数学ができるわけではない。理論がわからなくてどうしようもなくても、実際に実装してみれば感じ取れるんじゃないか?というスタンスで行きます。
- いつも書いていることですが、備忘録です。もし間違っていること等があれば、ご指摘していただければ本当に嬉しいです。何卒、よろしくお願いします。
機械学習とは何か
wikipedia によると以下のように記述がある。
機械学習(きかいがくしゅう、英: machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。
大きく分けて以下の体系に分類できる。
- 教師あり学習(supervised learning)
- 教師なし学習 (unsupervised learning)
- 強化学習(reinforcement learning)
教師あり学習(supervised learning)
予め、データとラベルと大量に学習機に与え、予測モデルを立てる手法。入力に対して出力がいくつかに限定されており、既知のものを予測・分類するときに有効だが、未知のものを発見することは出来ない。
教師あり学習に分類されるアルゴリズムの例
- ニューラルネットワーク(neural network)
- サポートベクタマシン(suppoert vector machine)
- 決定木(decision tree)
教師なし学習(unsupervised learning)
教師あり学習と違い、何が正解かどうかが、事前にわからないときに使う。(?)
教師なし学習に分類されるアルゴリズムの例
- 主成分分析
- クラスター分析
※ 人間で言うとブレインストーミングみたいなものだろうか??? クラスタリング以外に教師なし学習のアルゴリズムってあるのだろうか??まだちょっと理解出来ていない。
強化学習(reinforcement learning)
現在の環境に対して最も有効な選択肢を選ぶためのアルゴリズム。ゲームのAIとかに利用されている???
強化学習に分類されるアルゴリズムの例
- マルコフ決定過程??
開発環境の整備
2016年9月現在、以下の構成で環境を作る
- Mac OS X El Captain
- Homebrew
- Anaconda 3-4.1.0
# pyenv のインストール
brew install pyenv
# pyenv の設定をbash_profile に書き込み
echo 'export PATH="$HOME/.pyenv/shims:$PATH"' >> ~/.bash_profile
# anaconda のインストール
pyenv install anaconda3-4.1.0
pyenv local anaconda3-4.1.0
pyenv global anaconda3-4.1.0
# anaconda のアップデート
conda update conda
conda update --all
次
- 現在勉強中