プログラミング大学生のつぶやき

プログラミングを通して学んだこと、感じたことを共有します。

機械学習(1)基礎知識

はじめに

大学の研究で機械学習を勉強しているのですが、配られた教科書がめちゃくちゃ難しいので、かみ砕いてまとめます。

 

3種類の機械学習

教師あり学習

機械学習において分かりやすい例の一つとしてデータの分類というのがあるので、この分類を用いて説明していきます。

分類というのは、簡単に言えば「A・B・Cで分けるならお前はA、お前はC、お前は…」というようにデータを一つ一つ分けていくことです。

 

教師あり学習では、正解の分類先が分かっている状態で機械学習アルゴリズムにデータを入れて分類をさせてみるのです。

それで出てきた予測が答えと間違っていたら、アルゴリズムを修正するというのを繰り返して制度の高いシステムを目指す学習です。

問題集の問題を解いては答え合わせをして学力アップを図る受験生のようなものですね。ここでいう問題集の答えが「教師」になります。本書では「ラベル」と表しています。

強化学習

教師あり学習と似ているので先に強化学習についてまとめます。

エージェントと呼ばれる機械学習システムが、環境と呼ばれる対象に何かしらのアクションを起こします。それに対して環境がエージェントに報酬を与えます。エージェントがより多くの報酬を求めて、状況に応じたアクションを取っていくことで制度の高いシステムが完成していきます。

強化あり学習との違いは、ラベル(答え)のようなはっきりしたもので評価をしないという部分です。道徳みたいな感じでしょうか。すみません、忘れてください…。

分かりやすい例としては、チェスがあります。エージェントがチェス盤という環境でコマを動かし、「勝ち」や「負け」といった報酬が与えられてエージェントはどんどん強くなります

教師なし学習

教師あり学習での説明を読むと分かるのですが、教師なし学習はその名の通り、答え合わせをするための答え(教師)がありません

教師なし学習が使われる例として、クラスタリングというものがあります。

クラスタリングは、大量の情報を意味のあるグループに分けて構造化する手法です。特徴が近いデータをまとめて、線引きしていくのです。この線引きされたグループのことを本書では「クラスタ」と呼んでいます。

例えばマーケティングにおいて、顧客のタイプを分けて構造化することができるでしょう。

クラスタリングと分類の違い

クラスタリングでは分けるためのグループを最初から用意しません。ただの「線引き」と考えればいいですね。

機械学習の用語

訓練データ

データセットを表すテーブルの行(レコード)。

顧客リストが訓練データの場合、顧客一人一人のことを指します。

訓練

モデルのパラメータを調節し、モデルを適合させること。

つまり機械学習を通してシステムの制度を上げていくことですね。

モデル

ちなみに補足ですが、モデルというのはシステムそのものの仕組みを指します。

例えば「顧客リストをタイプ別に分類するモデル」とかです。

特徴量

データテーブルの列(カラム)。xで表す。

顧客リストであれば、「名前」「年齢」「性別」などです。

目的変数

予測したい変数。yで表す。

例えば「この顧客の性別を予測したい!」というときは目的変数は「性別」となります

損失関数

誤差関数とも呼ばれ、コスト関数と同義で使われることが多い。

詳しくは後ほど出てきたときに。

機械学習システム構築手順

  1. 前処理(データ整形)
  2. 予測モデルの訓練と選択
  3. 予測モデルの評価と未知のインスタンス予測

1では、どの特徴量を使うかなどを決めて意味のあるデータを用意します。

2では、正解率などの指標を基に、どのモデルが最も適しているかを検証し、選びます。

3では、選んだモデルの性能に納得がいけばいよいよデータを予測します。

まとめ

言葉だけで簡単に説明できるのはここまででしょうか。

今は第4次産業革命の最中なので、AIに通じる機械学習という激熱の分野をマスターし、最前線で活躍できるようになりたいです。

次回からは実践的なところを勉強していきます。