3秒でわかる
人がルールを書く代わりに、大量のデータからコンピュータ自身が判断の基準を見つけ出す技術。予測や分類を自動化する土台になります。
30秒図解
もう少し詳しく
どういうものか
機械学習は、正解の付いたデータや大量の観測データを与えて、判断の基準そのものをコンピュータに作らせる方法です。従来のプログラムは「件名にこの単語が入っていたら迷惑メール」と人がルールを書きますが、機械学習では迷惑メールと通常メールを大量に見せて、どんな特徴が迷惑メールらしいかをモデル側に決めさせます。作られた基準をモデルと呼び、新しいデータを入れて予測を出す工程を推論と呼びます。
なぜ必要か
ルールで書ける問題なら、機械学習を使う必要はありません。使う価値が出るのは、ルールが多すぎて人間が書き切れない領域です。手書き数字の判別を if 文で書こうとすると、線の太さや傾きの組み合わせが無限にあり破綻します。迷惑メールも、送信側が言い回しを変えるたびにルールを追加することになります。データを入れ替えれば基準が更新される仕組みのほうが、こうした領域では現実的です。
具体例
from sklearn.linear_model import LinearRegression
# 部屋の広さ (平米) から家賃 (万円) を予測する
X = [[20], [25], [30], [40], [50]]
y = [7.0, 8.5, 10.0, 13.0, 16.0]
model = LinearRegression()
model.fit(X, y) # 学習
print(model.predict([[35]])) # 35 平米の家賃を予測似た用語との違い
| 用語 | 位置づけ |
|---|---|
| AI | 人間の知的作業を機械にさせる分野全体 |
| 機械学習 | AI の一手法。データから基準を学ぶ |
| ディープラーニング | 機械学習の一手法。多層のニューラルネットワークを使う |
| 生成 AI | ディープラーニングを使って文章や画像を作る応用 |
学習の型も分かれます。正解ラベル付きで学ぶのが教師あり学習、ラベル無しで構造を見つけるのが教師なし学習、試行と報酬で方針を改善するのが強化学習です。
つまずきやすいところ
学習に使ったデータで精度を測ると、必ず良い数字が出ます。テスト問題を事前に見て解いているのと同じで、実際の性能は分かりません。データは学習用と評価用に分け、評価用は学習に一切使わないのが原則です。
もうひとつは過学習です。学習データの細かい癖まで覚え込むと、学習データでは 99% でも新しいデータでは 60% ということが起きます。学習データと評価データの精度差が開いていたら、そこを疑います。データを増やす、特徴量を減らす、正則化を効かせるといった対処があります。
三つめは、精度という 1 つの数字で判断してしまうことです。1000 件中 5 件しか異常が無いデータでは、全部を正常と答えるだけで精度 99.5% になります。件数の偏ったデータでは、適合率と再現率を併せて見ます。