🙆‍♀️

【初心者向け】機械学習における「分類」とは?

2024/12/30に公開

1. はじめに

機械学習の世界では、大きく分けて「回帰 (Regression)」と「分類 (Classification)」という2つの主要タスクがあります。

  • 回帰: 売上や気温など、**数値(連続値)**を予測
  • 分類: メールのスパム判定や動物の種類など、**カテゴリ(ラベル)**を判定

本記事は「分類」にフォーカスし、どんなタスクなのか、どんなモデル(手法)があり、学習後にどう評価すればよいかなどを、初心者の方向けにまとめました。


2. 分類とは「カテゴリを判定」するタスク

分類 (Classification) は、入力されたデータがどのカテゴリ(ラベル)に属するかを予測するタスクです。例としては:

  • スパムメール判定: 「スパムか/スパムでないか」
  • 画像認識: 「犬か猫か」
  • 感情分析: 「写真の人物が“怒っている”か“怒っていない”か」「他の感情は何か」
  • 解約予測: 「ユーザーが近々解約しそうかどうか」
  • 不正検知: 「クレジットカードの利用が不正かどうか」

ポイント

  • 回帰とは異なり、**カテゴリ(離散的)**を予測する。
  • 2つのクラスしかない場合は二値分類(Yes/Noなど)、3つ以上ある場合は多クラス分類

「怒り」判定も分類の一種

写真や動画から「怒っているかどうか(angry or not)」を判定するタスクも分類に該当します。

  • 二値分類で「怒り/非怒り」
  • 多種の感情ラベル(怒り、喜び、悲しみ、驚き など)を扱うなら、多クラス分類となります。
    感情分析はコンピュータビジョン(画像の特徴抽出やディープラーニング)を用いて実現し、分類タスクとして広く応用されています。

3. モデル (Model) とは何か

分類の「モデル」とは、**入力(特徴量)から出力(ラベル)を導く“変換ルール”**です。

  • 学習: ラベル付きデータ (X, y) を使い、「特徴量 (X) → ラベル (y)」という対応関係をモデルが獲得する。
  • 推論: 新しいデータ(ラベル不明)に対して「この入力なら、ラベルは○○だろう」と予測する。

3.1 どんなデータが必要?

  • 特徴量 (X): メール本文や単語頻度、画像のピクセルデータ、ユーザーの属性や行動ログなど
  • 正解ラベル (y): スパム/非スパム、犬/猫、怒り/非怒り、解約/継続など

学習データ (X, y) を十分に集め、モデルに学習させて**「新しいXが来たらどのyかを推測する」**仕組みを作るのが分類の基本的な流れです。


4. 分類モデルの種類

代表的な分類モデルと、その特徴やシステム面のユースケースは以下の通りです。

モデル 概要 長所 短所 システム上のユースケース例
ロジスティック回帰
(Logistic Regression)
- 線形回帰を「確率」の形に拡張したイメージ
- 出力は 0~1 の確率で表し、閾値を超えれば「クラス1」、超えなければ「クラス0」
- シンプルで計算が軽い
- 重み(係数)を通じた解釈がしやすい
- 複雑な非線形関係は苦手
- 多数の特徴量や高度なパターンを扱うのは難しい
- スパム判定: 特定の単語が多いメールはスパム確率UP
- 解約予測: 簡易的な顧客離脱チェックなど
決定木
(Decision Tree)
- 「もし〇〇なら…」と木構造でデータを分割し、最終的にクラスを判定
- 可視化しやすく直感的に理解しやすい
- カテゴリ変数を扱いやすい
- モデル構造が意思決定フローに近い
- 過学習しやすい
- 分割境界で不連続な判定をするため、データ次第で精度が落ちる
- 製造ラインの異常検知: 温度や圧力など複数の条件を視覚化しながら「正常/異常」を判定
ランダムフォレスト
(Random Forest)
- 複数の決定木を作り、クラス投票をとる「アンサンブル学習」
- 単一の決定木より高い精度&過学習に強い
- 決定木より安定した性能
- 特徴量重要度を比較的把握しやすい
- モデル解釈がやや難しい
- 木の数が多いほど学習コストが上がる
- 顧客セグメンテーション: 多種の情報(年齢、購買履歴、頻度など)から「どのクラスの顧客になるか」を高精度に判定
勾配ブースティング
(XGBoost / LightGBM)
- 勾配ブースティングに基づく高精度手法
- ランダムフォレスト以上に細かいチューニングが可能
- 大規模データ対応&高精度
- Kaggleなどで人気が高い
- パラメータが多く初心者にはやや複雑
- 不適切な設定だと過学習を起こしやすい
- 不正検知システム: 大量ログ(IP、時刻、購入金額など)を活用し、高精度な不正クラス判定
サポートベクターマシン
(SVM)
- データを高次元空間に写し、「マージンが最大となる境界」を探す
- カーネル手法により非線形分類にも対応
- 少量データで高い性能が得られる場合あり
- 理論的な背景が豊富
- データ量が多い場合は学習コストが高い
- カーネル選択やパラメータ調整がやや難しい
- 画像の2クラス分類: 特定の部品が壊れているかどうかなど、
データがあまり多くない状況での二値判定
ニューラルネット
(Deep Learning)
- 多層構造で高次元特徴を学習し、画像・音声・自然言語など大規模データで威力を発揮 - 非線形を強力に捉える
- 特徴量を自動抽出できる場合がある
- ブラックボックス化しやすい
- GPUなどリソースが必要
- 大量データが必要なことが多い
- 画像認識(犬 or 猫 or …)
感情分析(怒り/喜び/悲しみ…)
音声認識(コマンド分類など)

5. 分類に必要な数学の知識

5.1 まずはライブラリでOK

  • scikit-learn, PyTorch, TensorFlow など、実装済みのアルゴリズムが豊富
  • すべての数式を理解しなくても「データを用意して .fit() する」だけで動かせる

5.2 もう少し踏み込むなら

  • 確率・統計: ロジスティック回帰のロジット関数、決定木の情報利得、カーネルSVMの確率的解釈など
  • 線形代数: SVMのカーネルトリックやニューラルネットの行列計算
  • 微分・最適化: SGD(確率的勾配降下法)によるパラメータ更新の仕組み

5.3 学ぶメリット

  • 過学習やハイパーパラメータ調整の仕組みを理解しやすい
  • 大量データや複雑な特徴量で運用する際のトラブルシュートが楽

6. 分類モデルの評価方法と学習の流れ

「モデルを学習したが、実際どれくらい正確なの?」を判断するには評価指標 (Metrics) が欠かせません。
また、学習と評価をどう組み合わせるかの流れが重要です。

6.1 主な評価指標

  1. 正解率 (Accuracy)

    • 全体の予測のうち、正しく当てた割合
    • 分かりやすいが、不均衡データだと当てにならないケースも(例: 99% 非スパムなら常に非スパム判定で Accuracy = 99%)
  2. 適合率 (Precision) と 再現率 (Recall)

    • 適合率 (Precision): 予測をポジティブ(1)と判定したもののうち、どれくらいが実際にポジティブだったか
    • 再現率 (Recall): 実際にポジティブなものを、どれだけ見逃さず捉えたか
    • スパムメールや医療診断など、「間違いの種類」でコストが大きく変わる場合に重要
  3. F1スコア

    • 適合率・再現率の調和平均
    • 両方をバランスよく重視したい場合に用いる
  4. ROC曲線 / AUC

    • さまざまな閾値で真陽性率(TPR)と偽陽性率(FPR)をプロット
    • AUC(Area Under the Curve)が1に近いほど判別性能が高い

6.2 学習とのつながり (具体例)

: 「写真で人物が怒っているかどうか」を二値分類するとき

  1. データ準備

    • 顔画像データ+「怒っている or 怒っていない」のラベル
    • 80%を学習用、20%をテスト用に分割
  2. モデル選択&学習

    • まずはロジスティック回帰で学習 → テストデータのAccuracyをチェック
    • 怒りの表情を見逃しが多いなら、再現率(Recall) も確認 → 不足なら別のモデル(決定木やNN)を検討
  3. 指標を比較し、採用or改良

    • F1スコアが思ったより低い → 学習データを増やす、ハイパーパラメータを再調整 etc.
    • AUCも参考に、モデルのポテンシャルを把握
  4. 運用 & モニタリング

    • システムが実際に「怒りあり/なし」を予測 → 時々ラベル付きデータで精度を再チェック
    • 精度が落ちたり、表情のバリエーションが変われば、モデルをアップデート

こうして、学習 → 評価指標で精度チェック → 改良 → 運用 → 再評価というサイクルを回し、実務で使える精度を目指します。


7. まとめ

  1. 分類とは?

    • カテゴリ(離散ラベル)を予測する機械学習タスク。スパム判定、画像認識、感情分析など幅広く応用できる。
  2. モデルの種類

    • ロジスティック回帰: シンプルかつ解釈しやすい
    • 決定木 / ランダムフォレスト: 木構造で直感的、非線形にも対応
    • XGBoost / LightGBM: 大規模データ・高精度
    • SVM: 少量データでも高性能な場合、カーネルトリック
    • ニューラルネット: 画像や音声など大量データで強力
  3. 数学はどこまで?

    • まずはライブラリを使えばOK。必要に応じて確率・統計、線形代数、微分などを学ぶと深い理解が得られる。
  4. 評価指標と学習の流れ

    • 学習 → テストデータで Accuracy / Precision / Recall / F1 / AUC を算出 → 良ければ採用、悪ければ別モデルorチューニング
    • 不均衡データにも注意。
    • 運用後も定期的に精度をモニタリングし、必要なら再学習。

結論: 分類は、メールのスパム判定から画像認識(怒り判定などの感情分析)、解約予測、不正検知に至るまで、非常に幅広い分野で使われる機械学習タスクです。

  • まずはロジスティック回帰や決定木など簡単なモデルで結果を見てみる → その後、データ規模や精度要求に応じてランダムフォレストやXGBoost、ニューラルネットなどを検討するのがおすすめ。
  • 数学の詳細は徐々に学び、評価指標での結果を解釈できるようになると、プロジェクトでの成果がさらに上がります。

初心者の方も、ぜひ分類にチャレンジしてみてください。うまくいけば、写真から「怒っているかどうか」を判定したり、スパムを自動仕分けしたり、ビジネス上の意思決定を効率化したりと、多くの可能性が広がります。

Discussion