機械学習とは、すべてのルールを人が手作業で書かなくても、データを使って予測したりパターンを見つけたりする方法です。教師あり学習では、学習データに正解が含まれています。教師なし学習では正解が含まれていないため、グループ分けや変動の主な方向のような構造を見つけることが目的になります。
これが、機械学習の基本の中心となる考え方です。まずデータを用意し、モデルを選び、例を使って学習させ、その後で、すでに見たデータだけでなく新しいデータでもうまく働くかを確かめます。
機械学習は何をするのか
機械学習モデルは、入力を出力やパターンに対応づけます。入力は、家の広さ、試験の点数、顧客の行動、画像のピクセル値などさまざまです。出力はタスクによって異なります。
- 価格のような数値を予測する
- スパムかどうかのようなラベルを予測する
- ラベルなしで似た項目をグループ化する
- ありそうな選択肢を順位付けしたり推薦したりする
これが「学習」と呼ばれるのは、モデルのパラメータがプログラマによって完全に固定されるのではなく、データから調整されるからです。
教師あり学習と教師なし学習の違い
教師あり学習:既知の目標を予測する
教師あり学習では、 の形をした例を使います。ここで は入力、 は既知の目標値です。
が数値なら、このタスクは 回帰 と呼ばれることが多いです。 がカテゴリなら、通常は 分類 と呼ばれます。
代表的な教師あり学習アルゴリズムには、線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、サポートベクターマシン、ニューラルネットワークがあります。どの状況でも常に最良の手法が一つあるわけではありません。適切な選択は、データ量、ノイズの大きさ、特徴量の種類、どの程度の解釈しやすさが必要かによって決まります。
教師なし学習:ラベルなしで構造を見つける
教師なし学習では、目標ラベルのない入力 を使います。
ここでの目的は、通常、データの中にもともと存在する構造を見つけることです。k-means のようなクラスタリング手法は、似た観測を同じグループにまとめようとします。主成分分析のような次元削減手法は、より少ない方向で変動を要約しようとします。
教師なし学習は、探索、圧縮、異常検知、前処理に役立つことがあります。その結果は、データをどう表現するか、また手法の中にどのような類似性の考え方が組み込まれているかに強く左右されます。
シンプルな考え方
機械学習は、不確実性のある状況で曲線当てはめやパターン当てはめを行うものだと考えるとわかりやすいです。
まず、直線、決定木、多層のニューラルネットワークなど、モデルの種類を選びます。次に学習では、損失関数に従って予測が学習データにできるだけよく合うようにモデルを調整します。モデルの汎化性能が高ければ、まだ見たことのない新しいデータに対してもよい性能を示します。
この最後の条件が重要です。学習データをただ丸暗記しただけのモデルは、通常あまり役に立ちません。
例題:線形回帰で家賃を予測する
床面積からアパートの家賃を予測したいとします。単純な教師あり学習モデルは次のように書けます。
ここで、 は面積、 は予測家賃、 は切片、 は傾きです。
学習済みモデルが次を与えたとします。
家賃はドル、面積は平方フィートで測るとします。
もしアパートの面積が なら、予測は
となります。
したがって、このモデルは家賃を と予測します。
ここでは3つの点が重要です。モデルは、面積と家賃に正解ラベルが付いた例から学習しています。予測は推定値であって、保証ではありません。また、この式が意味を持つのは、関心のある範囲でおおよそ線形な関係が妥当な近似になっている場合だけです。
この例は意図的に単純化していますが、教師あり学習の基本的な流れをよく表しています。つまり、ラベル付きデータを使い、パラメータを当てはめ、新しい入力に対する目標値を予測するという流れです。
主要な機械学習アルゴリズムと使いどころ
線形回帰
数値を予測したいときに使います。直線による近似が最初のモデルとして妥当そうな場合に向いています。
ロジスティック回帰
分類に使います。はい・いいえのようなカテゴリを予測する際に、比較的単純で解釈しやすい基準モデルが欲しいときに適しています。
決定木とランダムフォレスト
関係が非線形だったり、特徴量どうしの相互作用があったりする場合に使います。特に表形式データで有効です。ランダムフォレストは、解釈しやすさをやや犠牲にする代わりに、より安定した予測性能を得られることが多いです。
k-means クラスタリング
教師なし学習で、観測を 個のクラスタに分けたいときに使います。使っている特徴量に対して「クラスタの中心」という考え方が意味を持つ場合に特にうまく働きます。
ニューラルネットワーク
入力と出力の関係が非常に複雑なときに使います。特に画像、音声、言語のタスクでよく使われます。単純なモデルに比べて、より多くのデータや調整が必要になることがよくあります。
機械学習の基本でよくある間違い
予測と説明を混同する
モデルが高い予測性能を持っていても、そのパターンの本当の原因を説明できるとは限りません。
学習とテストの違いを無視する
学習データでの高い正解率は、新しいデータでもうまくいくことを意味しません。汎化性能は別のデータで確認する必要があります。
間違った評価指標を使う
不均衡な分類問題では、正解率だけでは誤解を招くことがあります。タスクによっては、適合率、再現率、平均絶対誤差、あるいは別の指標のほうが重要です。
アルゴリズム名を保証だと思い込む
「ニューラルネットワーク」や「ランダムフォレスト」という名前自体が品質を保証するわけではありません。データの質、特徴量設計、評価方法、問題設定は、アルゴリズム名と同じくらい、あるいはそれ以上に重要です。
機械学習が役立つ場面
機械学習は、少数の固定ルールでは扱いきれないほどパターンが複雑で、しかも例から学べるだけの十分なデータがあるときに役立ちます。代表的な用途には、推薦システム、不正検知、医療画像支援ツール、ランキング、予測、文書分類などがあります。
ただし、いつでも最適な手段とは限りません。ルールが単純で安定しており、しかも完全にわかっているなら、通常の数式や決定論的なプログラムのほうが適していることもあります。
似た問題に挑戦してみよう
小さなデータセットを一つ用意して、「入力は何か」「目標は何か」という2つの問いを立ててみましょう。両方に答えられるなら、線形回帰や分類のような教師ありモデルを試してみてください。答えられないなら、教師なし手法でデータが自然にグループを作るかを調べてみましょう。
さらに一歩進みたいなら、まず単純なモデルで似た問題を解き、その後でもっと柔軟なモデルと比べてみてください。いきなり最先端のアルゴリズムに飛びつくより、そのほうがたいてい学びやすいです。