本文へスキップ
ひもとくAI

分類とは何か(回帰との違い)

レッスン 1/6

「いくつ?」と「どれ?」

前の章では、勉強時間からテストの点数を、広告費から売上を予測しました。どちらも 「いくつになるか」という数値 を答える問題です。このような問題を 回帰 と呼びます。

一方で、身の回りのAIが解いている問題には、もう一つ大きな種類があります。

  • 届いたメールは、迷惑メールか、そうでないか
  • 写真に写っているのは、犬か、猫か、鳥か
  • このクレジットカードの利用は、本人によるものか、不正利用か

これらは「いくつか」ではなく、あらかじめ決まった選択肢の中から「どれに当てはまるか」 を答える問題です。このような問題を 分類 と呼びます。

回帰分類
答えの形数値(点数、売上、気温など)グループ(迷惑メール/通常のメール など)
問いの形「いくつになる?」「どれに当てはまる?」
例来月の売上を予測するメールが迷惑メールかどうか判定する

実は、実務で使われている機械学習の多くは分類です。迷惑メールフィルタ、顔認証、医療画像の診断支援、不良品の検出など、「AIが判断している」と言われる場面の多くは、この分類の問題として作られています。

「ラベル」と「境界線」

分類でも、学習の流れは回帰と同じです。入力 XX と正解 yy の組をたくさん用意して、モデルに学習させます。違うのは、正解 yy が数値ではなく グループの名前 になる点です。

分類における正解のことを ラベル と呼び、選択肢となる各グループのことを クラス と呼びます。コンピュータは文字より数値を扱う方が得意なので、ラベルは「不合格なら0、合格なら1」のように、番号に置き換えて表すのが一般的です。

import numpy as np

# 1人分のデータ = [勉強時間, 睡眠時間]
X = np.array([[1, 8], [2, 7], [3, 6], [6, 7], [7, 6], [8, 8]])

# ラベル: 0 = 不合格, 1 = 合格
y = np.array([0, 0, 0, 1, 1, 1])

このデータを、横軸を勉強時間、縦軸を睡眠時間にしてグラフに点を打つと、不合格の人の点は左側に、合格の人の点は右側に集まります。すると、2つのグループの間に「ここより右なら合格」という 境界線 を引けそうです。

分類モデルの学習とは、直感的に言えば、データからこの境界線を見つけること です。一度境界線が決まれば、新しい人のデータが来たとき「境界線のどちら側にあるか」で、その人のクラスを予測できます。

回帰では「データの点の近くを通る線」を探しました。分類では「2つのグループの点を分ける線」を探します。同じ「線を見つける」でも、目的が違うことに注目してください。

よくある誤解:「ラベルが数字なら回帰で解ける?」

ラベルを0と1で表すと、「数値なのだから、回帰で予測すればいいのでは?」と思うかもしれません。ここに分類の大事なポイントがあります。

例えば、写真に写っている動物を「犬 = 1、猫 = 2、鳥 = 3」という番号で表したとします。回帰のように数値として扱うと、次のようなおかしなことが起こります。

  • 「犬(1)と鳥(3)の平均は猫(2)」という、意味のない計算ができてしまう
  • 予測値が「2.4」のように、どのクラスにも当てはまらない値になる

ラベルの番号は ただの名前(背番号のようなもの) で、大小関係や足し算に意味はありません。だからこそ、分類には分類のための専用の考え方やモデルが必要になります。

この章では、次の流れで分類を学んでいきます。

  1. ロジスティック回帰: 前の章の一次関数を使って、分類を「確率」で考える
  2. 決定木: 「はい/いいえ」の質問を重ねて分類する
  3. モデルの評価: 作ったモデルが本当に役に立つのかを、正しく確かめる方法

特に3つ目の「評価」は、精度の高さだけに目を奪われないために、実務でとても重要になる考え方です。

演習

演習を読み込んでいます…