機械学習とは
機械学習(きかいがくしゅう、英: machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。
(Wikipediaより)
https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92
機械学習は「教師あり学習」と「教師なし学習」に分類できる
教師あり学習
- 教師データという既知のデータを解析して、分析、予測する
教師なし学習
- 教師データなしに、分析、予測する
機械学習が分析、予測可能な問題
- 回帰分析
- 分類
- クラスタリング
- 相関分析
回帰分析
- 教師あり学習
- 過去の数値データから未来の数値データを予測する問題
- 交通渋滞予測
- 天気予測
- etc
分類
- 教師あり学習
- 与えられたデータが事前に定義された種別のどこに分類されるのか判定する問題
- 例えば、画像データを解析し、動物なのか、植物なのか、天象なのか、さらにその中の何に細分されるのか判定する。
クラスタリング
- 教師なし学習
- 2つ以上有る与えられたデータをグルーピングする問題
- 「分類」に似ているが、「分類」は事前に定義された種別のどこに分類されるか判別するが、「クラスタリング」は「事前に定義された種別」という概念が無く、与えられたデータの中から、共通点を見つけて、グルーピングする。
相関分析
- 教師なし学習
- 2つ以上与えられたデータの関係を分析する
機械学習のプログラミング言語として何が有るか
- Python
- 現在(2018年10月時点)では、Pythonが使われることが多い。
- 理由としては、機械学習用のライブラリが他言語と比べて充実している感が有るからではないかと推測しています。
- R
- 一昔前、Pythonのライブラリが充実するまでは、Rが機械学習の主流であった。
- Pythonでも、Rと同じ事が出来るようになってから、Pythonにシェアを奪われるようになってきた。
- C++
- TensorFlow、Caffe、Dlibといったライブラリを利用できる。
- スクリプト言語と比べると実行速度が速いという長所が有る。
- Julia
- JITコンパイラで実行されるので、Pythonと比べて実行速度が早い
- ライブラリが少ないが、外部ライブラリ連携でR、Python等の関数を呼び出すことも出来る。
- 今後、より大量のデータを解析する事が予測されます。実行速度が早いJuliaが主流となるかもしれません。
- その他
- Java、GNU Octave、Scala
Pythonライブラリ
- TensorFlow(テンソルフロー)
- オープンソース(Apache License 2.0)
- Googleが開発したライブラリ。
- ドイツ・ハノーバーで開かれた「CeBIT 2017」で、「から揚げ配膳ロボット」、「きゅうり仕分けロボット」、「ドローンで撮影した写真の解析」が展示された。
- scikit-learn(サイキット・ラーン)
- オープンソース(BSD license)
- 機械学習のほぼ全てのジャンルを抑えたライブラリツール
- Theano(テアノ)
- 2017/9 開発中止がアナウンスされた。引き続き、利用は可能だが、新規開発は無い。
- オープンソース(BSD license)
- 数値計算ライブラリ
- C++/CUDAにコンパイルさせることで高速に動作する。
- Chainer(チェイナー)
- オープンソース(MIT Licence)
- Python2.x系および3.x系から利用可能
- 「エッジヘビーコンピューティング」を提唱している日本のベンチャー企業(Preferred Networks)が開発したライブラリで有る。
- 日本を中心に利用されている。
- Pytorch
- FaceBookが主導している
- Torch7とChainerをベースにして開発された。
- Define by Runの特徴を持つ
- Pyevolve
- 遺伝的アルゴリズム/ニューラルネットワーク
- Deap
- 遺伝的アルゴリズム
- Stan
- 確率的プログラミング
-
Edward
- 確率的プログラミング
-
Matplotlib
- グラフ描画のライブラリ
-
NumPy
- 数値計算ライブラリ
-
Pandas -
- 様々な形式のデータの入出力ライブラリ
-
OpenCV
- 画像処理ライブラリ
番外編
- Jupyter Notebook
- Webブラウザ上で、Python及びPythonライブラリのコードを実行し、結果を確認できる。