機械学習(Machine Learning)の勉強を始めました。第3回

今回は、以下の本を読んでみて、機械学習の概要みたいなものを、少しだけ、まとめてみました。興味のある方は、以下の本の第1章を是非、読んでみてください。Pythonをこれから勉強したいと思われている方にもお勧めです。

 

Python Machine Learning: Unlock Deeper Insights into Machine Learning With This Vital Guide to Cutting-edge Predictive Analytics」

Sebastian Raschka (著)

出版社: Packt Publishing (2015/9/23)

言語: 英語

ISBN-10: 1783555130

ISBN-13: 978-1783555130

https://www.amazon.co.jp/Python-Machine-Learning-Cutting-edge-Predictive/dp/1783555130/ref=sr_1_5?s=english-books&ie=UTF8&qid=1492048659&sr=1-5&keywords=machine+learning

 

この本によれば、どうも、機械学習は、大きく以下の3タイプに分類できるようです。

 

  1. Supervised Learning
  2. Unsupervised Learning
  3. Reinforcement Learning

 

まず、Supervised Learningというのは、出力データにラベルを付けられるもので、例えば、ウイルスに感染しているか否か、スパムメールかどうか、花の種類といったように、ラベルを付けて分類できるデータを扱うものになります。あらかじめトレーニング・データ(入力データとラベル出力の組合せ)を用意しておき、このトレーニングデータを基に機械学習アルゴリズムを適用することで、「predictive Model」を作成します。そして、新しい入力データに対して、このpredictive Modelにより、ラベルを予想します。これに対して、Unsupervised Learningというのは、出力データにラベルをつけることができないもので、分析してみたら、なんとなくデータの塊(クラスター)に分類できるようなものを指すようです。Reinforcement Learningというのは、「Agent」というのが常に「Environment」の状態を見張っていて、Environmentからの「Reward」が最大になるように「Action」を行う仕組みのようです。例えば、チェスなどのゲームで、「勝つ」というRewardを最大限にするように次の一手(Action)を計算するといったようなものです。

 

Supervised Learningを例に、以下に機械学習処理の流れを説明します。

 

  1. Preprocessing
  2. Learning
  3. Evaluation
  4. Prediction

 

(1) Preprocessing

どんなに優れた機械学習アルゴリズムを用いても、入力データが適切でないと、十分な能力を発揮することができません。そこで、機械学習では、入力データが機械学習アルゴリズムに良く適合するようにデータの前処理を行う必要があります。この前処理には、以下のようなものがあります。

  • Feature Selection ( Sequential Backward Selectionなど)
  • Feature Extraction (主成分分析,LDAなど)
  • Dimension Reduction(上記以外に、kernel PCAなど)
  • Scaling( Standardization, Regulation)
  • Sampling

 

(2) Learning

  •    Model Selection
    •  どんなに優れた機械学習アルゴリズムを用いても、たった1つのモデルだけで、全ての入力データに対応することはできません。そこで、入力データの性質に合わせて、ベストなモデルを選択することが重要となります。代表的な機械学習アルゴリズムとして、Perceptron, Adaptive Linear Neuron(Adaline),Logistic regulation, Support Vector Machine(SVM),Radial Basis Function kernel(RBF kernel), Decision tree, Random forests, K-nearest neighbors(KNN)などがあります。
  •    Cross-Validation
  •    Performance Metrics
  •    Hyperparameter Optimization  

  

(3)Evaluation

  Rawデータを、そのまま全部、トレーニング・データとして用いるのではなく、Rawデータをトレーニング・データとテスト・データとにランダムに分割します。トレーニング・データとテストデータの比率は、60% : 40%, 70% : 30%,もしくは75% : 25% が一般的です。predictive Modelの作成には、Rawデータの内、このトレーニング・データだけを用いて、作成します。テスト・データはモデルの作成には使用しません。そして、評価の際に、テスト・データを用いて、評価を行います。評価の結果が良くない場合は、(2)Learningに戻って、モデルの選択の変更、各種パラメータのチューニングなどを行い、機械学習の精度を向上させます。

 

(4)Prediction

最終モデルが確定したら、全く新規の入力データを用いて、出力ラベルの予測を行います。