多クラス分類とは?機械学習で3つ以上に分ける仕組みを徹底解説

AI

スマートフォンで写真を撮ると、自動的に「人物」「風景」「食べ物」「ペット」などのカテゴリーに分類されることがありますよね。

また、手書きの数字を読み取るとき、AIは「0」から「9」までの10種類の中から正しい数字を判断しています。

このように、3つ以上のカテゴリー(クラス)の中から正解を選ぶ問題多クラス分類(Multi-class Classification)と呼びます。

例えるなら、じゃんけんで「グー」「チョキ」「パー」の3つから選ぶような感じです。2択ではなく、複数の選択肢から1つを選ぶんですね。

多クラス分類は、機械学習の中でも特に実用的な技術で、画像認識、音声認識、テキスト分類など、私たちの身の回りで広く使われています。

この記事では、多クラス分類の基礎から、実際の応用例、使われるアルゴリズムまで、初心者の方にも分かりやすく解説していきます。


スポンサーリンク
  1. 分類問題の基礎知識
    1. 機械学習における分類とは
    2. 二値分類と多クラス分類の違い
    3. 多クラス分類の特徴
  2. 多クラス分類の具体例
    1. 1. 手書き数字認識(MNIST)
    2. 2. 画像分類
    3. 3. テキスト分類
    4. 4. 音声認識
    5. 5. 医療診断支援
  3. 多クラス分類のアルゴリズム
    1. 1. ロジスティック回帰(拡張版)
    2. 2. サポートベクターマシン(SVM)
    3. 3. 決定木とランダムフォレスト
    4. 4. ニューラルネットワーク
    5. 5. k近傍法(k-NN)
  4. 多クラス分類の評価指標
    1. 1. 正解率(Accuracy)
    2. 2. 混同行列(Confusion Matrix)
    3. 3. 適合率と再現率
    4. 4. マクロ平均とマイクロ平均
    5. 5. 対数損失(Log Loss)
  5. 多クラス分類の実装手順
    1. ステップ1:データの準備
    2. ステップ2:前処理
    3. ステップ3:モデルの選択と構築
    4. ステップ4:モデルの学習
    5. ステップ5:評価と改善
    6. ステップ6:テストと実運用
  6. 多クラス分類のよくある課題と対策
    1. 課題1:クラスの不均衡
    2. 課題2:似たクラス同士の混同
    3. 課題3:過学習
    4. 課題4:クラス数が多い場合の計算量
    5. 課題5:新しいクラスの追加
  7. 実際の応用例:画像分類プロジェクト
    1. プロジェクト:果物の種類を判定するAI
  8. よくある疑問:多クラス分類について
    1. Q1:二値分類と多クラス分類、どちらが難しい?
    2. Q2:クラス数が多い場合、どう対処すれば良い?
    3. Q3:多ラベル分類との違いは?
    4. Q4:正解率90%は良い結果?
    5. Q5:ニューラルネットワーク以外でも高精度は出せる?
  9. まとめ:多クラス分類は実用的なAI技術

分類問題の基礎知識

機械学習における分類とは

分類(Classification)とは、データを複数のカテゴリーに振り分ける問題のことです。

機械学習では、コンピュータに大量の例を見せて、新しいデータがどのカテゴリーに属するかを予測できるように学習させます。

分類問題の例:

  • 画像を見て、それが「犬」か「猫」かを判断する
  • メールを読んで、「迷惑メール」か「普通のメール」かを判断する
  • 花の写真から、その種類を特定する

二値分類と多クラス分類の違い

分類問題は、選択肢の数によって種類が分かれます。

二値分類(Binary Classification):

  • 選択肢が2つだけの分類問題
  • 「YES か NO」「0 か 1」のような二択
  • 例:迷惑メール判定、病気の有無判定、商品の良品・不良品判定

多クラス分類(Multi-class Classification):

  • 選択肢が3つ以上の分類問題
  • 複数の選択肢から1つを選ぶ
  • 例:手書き数字認識(0〜9の10種類)、動物の種類判定、ニュース記事のカテゴリ分類

比較表:

項目二値分類多クラス分類
クラス数2つ3つ以上
出力0または10〜N(クラス数による)
迷惑メール判定手書き数字認識
難易度比較的シンプルより複雑

多クラス分類の特徴

1. 排他的な選択

基本的に、1つのデータは1つのクラスにのみ属します。

例えば、ある画像は「犬」または「猫」または「鳥」のいずれか1つに分類されます。複数のクラスに同時に属することはありません。

注意: 複数のクラスに同時に属する問題は「多ラベル分類」と呼ばれ、多クラス分類とは区別されます。

2. クラス間の関係性

クラス同士に順序関係がない場合が多いです。

「犬」「猫」「鳥」の間に優劣や順序はありませんよね。このような分類を名義分類と呼びます。

一方、「低」「中」「高」のように順序がある場合は順序分類と呼ばれ、特別な扱いをすることもあります。

**3. クラス数の多さ

クラス数が多いほど、問題は複雑になります。

  • 3クラス:比較的簡単
  • 10クラス:中程度の難易度
  • 100クラス以上:かなり難しい

多クラス分類の具体例

実際にどのような場面で使われているか見てみましょう。

1. 手書き数字認識(MNIST)

最も有名な多クラス分類の例です。

問題:
手書きで書かれた数字の画像を見て、0〜9のどの数字かを判定する

クラス数: 10(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

データ例:

  • 28×28ピクセルの白黒画像
  • 各画像には1つの数字が書かれている
  • 正解ラベル(0〜9)が付いている

用途:

  • 郵便番号の自動読み取り
  • 銀行の小切手処理
  • フォーム入力の自動化

2. 画像分類

身近な例が多い分野です。

問題:
写真を見て、何が写っているかを判定する

例:

動物分類:

  • クラス:犬、猫、鳥、魚、馬、牛など
  • 用途:写真アプリの自動整理

食べ物分類:

  • クラス:ラーメン、寿司、カレー、パスタなど
  • 用途:レシピアプリ、カロリー計算アプリ

風景分類:

  • クラス:海、山、都市、森、砂漠など
  • 用途:旅行写真の整理

3. テキスト分類

文章を分類する問題です。

ニュース記事の分類:

  • クラス:政治、経済、スポーツ、エンタメ、国際、社会、科学など
  • 用途:ニュースサイトの自動カテゴリ振り分け

商品レビューの感情分析:

  • クラス:非常に良い、良い、普通、悪い、非常に悪い
  • 用途:顧客満足度の分析

問い合わせの自動振り分け:

  • クラス:技術サポート、請求、返品、一般問い合わせなど
  • 用途:カスタマーサポートの効率化

4. 音声認識

音声から情報を識別する問題です。

音素認識:

  • クラス:「あ」「い」「う」「え」「お」など、音の単位
  • 用途:音声入力システム

話者識別:

  • クラス:話者A、話者B、話者C…
  • 用途:声紋認証、会議録音の話者特定

音楽ジャンル分類:

  • クラス:ロック、ポップ、ジャズ、クラシック、ヒップホップなど
  • 用途:音楽ストリーミングサービスのレコメンド

5. 医療診断支援

医療分野での応用です。

病気の分類:

  • クラス:健康、疾患A、疾患B、疾患Cなど
  • 用途:画像診断の補助、早期発見システム

注意: 実際の医療現場では、AIの判断は参考情報として使われ、最終的な診断は医師が行います。


多クラス分類のアルゴリズム

どのような手法が使われるか見ていきましょう。

1. ロジスティック回帰(拡張版)

シンプルで理解しやすい手法です。

ソフトマックス回帰(Softmax Regression):

二値分類で使われるロジスティック回帰を、多クラスに拡張したものです。

仕組み:

  1. 各クラスに対して、そのクラスである確率を計算
  2. すべてのクラスの確率を合計すると1(100%)になる
  3. 最も確率が高いクラスを選択

確率の例:

  • 犬:70%
  • 猫:25%
  • 鳥:5%

→ 「犬」と判定

メリット:

  • シンプルで理解しやすい
  • 計算が速い
  • 確率が出力されるので解釈しやすい

デメリット:

  • 複雑なパターンには対応しにくい
  • 線形分離可能な問題に限定される

2. サポートベクターマシン(SVM)

強力な分類手法です。

多クラス対応の方法:

SVMは本来、二値分類用の手法です。多クラス分類には、次のような拡張が使われます。

One-vs-Rest(OvR):

  • 各クラスについて「そのクラス vs それ以外すべて」の二値分類器を作る
  • クラス数分の分類器を用意
  • すべての分類器で予測し、最も確信度が高いクラスを選ぶ

One-vs-One(OvO):

  • すべてのクラスペアについて二値分類器を作る
  • クラス数が N なら、N×(N-1)/2 個の分類器が必要
  • 多数決で最終的なクラスを決定

メリット:

  • 高い精度を出せる
  • 非線形な境界にも対応可能

デメリット:

  • クラス数が多いと計算量が増大
  • 学習に時間がかかる

3. 決定木とランダムフォレスト

視覚的に理解しやすい手法です。

決定木(Decision Tree):

フローチャートのように、条件分岐を繰り返してクラスを決定します。

例:動物分類

足の数は4本?
├─ はい → 尻尾が長い?
│         ├─ はい → 猫
│         └─ いいえ → 犬
└─ いいえ → 羽がある?
          ├─ はい → 鳥
          └─ いいえ → 魚

ランダムフォレスト(Random Forest):

複数の決定木を組み合わせた手法。より高い精度を実現します。

メリット:

  • 解釈しやすい
  • 非線形な関係も扱える
  • 特徴の重要度が分かる

デメリット:

  • 過学習しやすい(特に決定木単体)
  • 大量のデータが必要

4. ニューラルネットワーク

現代の多クラス分類の主流です。

仕組み:

  1. 入力層でデータを受け取る
  2. 複数の隠れ層で特徴を抽出
  3. 出力層でクラス数分のニューロンが確率を出力
  4. ソフトマックス関数で確率を正規化

深層学習(ディープラーニング):

多層のニューラルネットワークを使った手法。

代表的なアーキテクチャ:

  • CNN(畳み込みニューラルネットワーク):画像分類に強い
  • RNN(リカレントニューラルネットワーク):テキスト分類に強い
  • Transformer:最新の自然言語処理に使用

メリット:

  • 非常に高い精度
  • 複雑なパターンを学習できる
  • 画像、音声、テキストなど幅広く対応

デメリット:

  • 大量のデータと計算資源が必要
  • 学習に時間がかかる
  • ブラックボックス化しやすい

5. k近傍法(k-NN)

シンプルで直感的な手法です。

仕組み:

  1. 新しいデータに最も近い k 個のデータを探す
  2. その k 個の多数決でクラスを決定

例(k=5の場合):

  • 最も近い5つのデータのうち、3つが「犬」、2つが「猫」
  • → 「犬」と判定

メリット:

  • アルゴリズムが非常にシンプル
  • 学習が不要(データを保存するだけ)

デメリット:

  • 予測時の計算が遅い
  • メモリを大量に使う
  • 次元の呪いに弱い

多クラス分類の評価指標

分類モデルの性能をどう測るか見ていきましょう。

1. 正解率(Accuracy)

最も基本的な指標です。

計算式:

正解率 = 正しく分類できた数 / 全データ数

例:

  • 100枚の画像のうち、85枚を正しく分類
  • 正解率 = 85 / 100 = 0.85(85%)

メリット:

  • 分かりやすい
  • 全体的な性能を一目で把握できる

デメリット:

  • クラスの不均衡がある場合、誤解を招く

不均衡の例:

  • 全100個のデータ:クラスA が95個、クラスB が5個
  • すべて「クラスA」と予測しても、正解率95%になってしまう

2. 混同行列(Confusion Matrix)

詳細な分類結果を可視化する表です。

3クラス分類の例:

予測:犬予測:猫予測:鳥
実際:犬4532
実際:猫4388
実際:鳥1742

読み方:

  • 対角線上の数字:正しく分類された数
  • それ以外:誤分類された数
  • 「実際:猫」で「予測:鳥」が8:猫を鳥と間違えたケースが8つ

分かること:

  • どのクラスが正しく分類できているか
  • どのクラス間で混同が起きやすいか
  • 改善すべきポイント

3. 適合率と再現率

クラスごとの性能を詳しく見る指標です。

適合率(Precision):

適合率 = そのクラスと予測した中で、実際に正しかった割合

「犬」と予測したもののうち、本当に犬だった割合。

再現率(Recall):

再現率 = 実際にそのクラスだったもののうち、正しく予測できた割合

実際の犬のうち、ちゃんと「犬」と予測できた割合。

F1スコア:

適合率と再現率の調和平均。両者のバランスを取った指標です。

F1スコア = 2 × (適合率 × 再現率) / (適合率 + 再現率)

4. マクロ平均とマイクロ平均

複数クラスの性能を総合評価する方法です。

マクロ平均(Macro Average):

  • 各クラスの指標を単純平均
  • すべてのクラスを平等に扱う

マイクロ平均(Micro Average):

  • 全データを一括して計算
  • データ数の多いクラスの影響が大きい

使い分け:

  • クラスの重要度が同じ → マクロ平均
  • データ数に応じた評価 → マイクロ平均

5. 対数損失(Log Loss)

確率的な予測の精度を測る指標です。

モデルが出力した確率と、実際の正解との差を測ります。

特徴:

  • 値が小さいほど良い
  • 確率の精度まで考慮できる
  • ニューラルネットワークの学習でよく使われる

多クラス分類の実装手順

実際にどう実装するか、流れを見ていきましょう。

ステップ1:データの準備

データ収集:

分類したいデータと、その正解ラベルを集めます。

データの形式:

  • 画像分類:画像ファイル + ラベル
  • テキスト分類:文章 + カテゴリ
  • 表形式データ:特徴量の値 + クラス

データ分割:

  • 訓練データ(70-80%):モデルの学習に使用
  • 検証データ(10-15%):モデルの調整に使用
  • テストデータ(10-15%):最終的な性能評価に使用

ステップ2:前処理

データの整形:

画像の場合:

  • サイズの統一(例:224×224ピクセル)
  • 正規化(ピクセル値を0〜1に変換)
  • データ拡張(回転、反転など)

テキストの場合:

  • トークン化(単語に分割)
  • ストップワード除去
  • ベクトル化(単語を数値に変換)

数値データの場合:

  • 欠損値の処理
  • 標準化(平均0、分散1に変換)
  • 外れ値の処理

ステップ3:モデルの選択と構築

使用するアルゴリズムを選びます。

選択基準:

  • データの種類(画像、テキスト、数値など)
  • データ量
  • 精度の要求水準
  • 計算資源
  • 解釈可能性の必要性

例:

  • 小規模データ → ロジスティック回帰、SVM
  • 大規模データ + 高精度 → ニューラルネットワーク
  • 解釈重視 → 決定木

ステップ4:モデルの学習

訓練データを使ってモデルを学習させます。

学習の流れ:

  1. モデルに訓練データを入力
  2. 予測結果と正解を比較
  3. 誤差を計算
  4. パラメータを調整(誤差が小さくなるように)
  5. 1〜4を繰り返す

ハイパーパラメータの調整:

  • 学習率
  • 層の数(ニューラルネットワークの場合)
  • 木の深さ(決定木の場合)
  • 正則化の強さ

ステップ5:評価と改善

検証データで性能を確認します。

評価項目:

  • 正解率
  • 混同行列
  • クラスごとのF1スコア

改善方法:

精度が低い場合:

  • より複雑なモデルを試す
  • データを増やす
  • 特徴量を追加・改善

過学習している場合:

  • 正則化を強める
  • データ拡張を行う
  • モデルを単純化

ステップ6:テストと実運用

テストデータで最終評価を行います。

確認事項:

  • 想定した精度が出ているか
  • 特定のクラスで極端に性能が低くないか
  • 実用上問題ないか

実運用での注意:

  • 定期的な再学習
  • 予測結果のモニタリング
  • エラーケースの分析

多クラス分類のよくある課題と対策

実際の問題でぶつかる課題と解決策を見ていきましょう。

課題1:クラスの不均衡

問題:

あるクラスのデータが極端に少ない、または多い状態です。

例:

  • クラスA:900個
  • クラスB:80個
  • クラスC:20個

何が起こるか:

  • データ数が多いクラスばかり正解になる
  • 少数クラスをほとんど予測できない

対策:

1. データの水増し(オーバーサンプリング)

  • 少数クラスのデータを複製または生成して増やす
  • SMOTE(合成マイノリティオーバーサンプリング)などの手法

2. データの削減(アンダーサンプリング)

  • 多数クラスのデータを減らす
  • ランダムに削除、または代表的なサンプルのみ残す

3. クラスに重みを付ける

  • 少数クラスの誤分類に大きなペナルティを与える
  • モデルの学習時に重み付けを設定

課題2:似たクラス同士の混同

問題:

見た目や特徴が似ているクラスを間違えやすい。

例:

  • 「シベリアンハスキー」と「アラスカンマラミュート」(犬種)
  • 「0(ゼロ)」と「O(オー)」(文字認識)

対策:

1. より識別力の高い特徴を使う

  • 細かい違いに注目する特徴を追加
  • 専門知識を活用

2. 階層的な分類

  • まず大カテゴリに分類(例:犬、猫、鳥)
  • 次に細かいカテゴリに分類(例:犬の中で犬種を判定)

3. より複雑なモデルを使う

  • ニューラルネットワークで細かいパターンを学習

課題3:過学習

問題:

訓練データには高精度だが、新しいデータには低精度。

原因:

  • モデルが複雑すぎる
  • データが少なすぎる
  • 学習回数が多すぎる

対策:

1. 正則化

  • モデルの複雑さにペナルティを与える
  • L1正則化、L2正則化

2. ドロップアウト

  • ニューラルネットワークで、一部のニューロンをランダムに無効化

3. 早期終了

  • 検証データの性能が悪化し始めたら学習を止める

4. データ拡張

  • 既存データに変換を加えて、バリエーションを増やす

課題4:クラス数が多い場合の計算量

問題:

クラス数が100、1000と増えると、計算が非常に重くなります。

対策:

1. 階層的分類

  • 大カテゴリ → 中カテゴリ → 小カテゴリのように段階的に分類

2. 効率的なアルゴリズム

  • ニューラルネットワークの出力層でソフトマックスを使う(効率的)

3. 近似手法

  • すべてのクラスを正確に計算せず、確率が高そうなクラスのみ計算

課題5:新しいクラスの追加

問題:

運用中に新しいクラスを追加したくなった。

対策:

1. 再学習

  • 新しいクラスを含めて、最初から学習し直す
  • 最も確実だが、時間とコストがかかる

2. 転移学習

  • 既存モデルの大部分を流用し、出力層だけ再学習
  • 効率的だが、精度がやや落ちることも

3. オープンセット認識

  • 「未知のクラス」という選択肢を用意
  • 学習していないクラスを検出できるようにする

実際の応用例:画像分類プロジェクト

具体的なプロジェクトの流れを見てみましょう。

プロジェクト:果物の種類を判定するAI

目標:
写真から、リンゴ、バナナ、オレンジ、ブドウの4種類を判定する

ステップ1:データ収集

  • 各果物の写真を1000枚ずつ収集(合計4000枚)
  • 様々な角度、照明、背景で撮影

ステップ2:データ分割

  • 訓練:2800枚(70%)
  • 検証:800枚(20%)
  • テスト:400枚(10%)

ステップ3:前処理

  • サイズを224×224ピクセルに統一
  • ピクセル値を0〜1に正規化
  • データ拡張(回転、反転、明るさ調整)

ステップ4:モデル構築

  • CNN(畳み込みニューラルネットワーク)を使用
  • 事前学習済みモデル(ResNet)を転移学習

ステップ5:学習

  • 50エポック学習
  • 検証データで精度をモニタリング
  • 最良のモデルを保存

ステップ6:評価

結果:

  • テストデータでの正解率:95%

混同行列:

予測:リンゴ予測:バナナ予測:オレンジ予測:ブドウ
実際:リンゴ94231
実際:バナナ19801
実際:オレンジ40951
実際:ブドウ21295

分析:

  • すべての果物で高い精度
  • リンゴとオレンジで若干の混同あり(色が似ているため)

ステップ7:改善

  • リンゴとオレンジの区別を改善するため、形状の特徴を強化
  • 追加データを収集し、精度を97%に向上

よくある疑問:多クラス分類について

Q1:二値分類と多クラス分類、どちらが難しい?

A:一般的に多クラス分類の方が難しいです

理由:

  • 選択肢が増えると、判断が複雑になる
  • クラス間の境界が不明瞭になりやすい
  • 必要なデータ量も増える

ただし、問題の性質によっては、二値分類でも非常に難しいケースがあります。

Q2:クラス数が多い場合、どう対処すれば良い?

A:いくつかの戦略があります

1. 階層的分類
大カテゴリ → 小カテゴリのように段階的に分類

2. グルーピング
似たクラスをまとめて、クラス数を減らす

3. 強力なモデル
ディープラーニングで、多数のクラスを直接学習

Q3:多ラベル分類との違いは?

A:1つか複数かの違いです

多クラス分類:

  • 1つのデータは、1つのクラスにのみ属する
  • 例:この動物は「犬」(「猫」でも「鳥」でもない)

多ラベル分類:

  • 1つのデータが、複数のラベルを持つことができる
  • 例:この写真には「犬」と「人」と「公園」が写っている

Q4:正解率90%は良い結果?

A:問題によって異なります

判断基準:

  • クラス数:10クラスで90%は優秀、2クラスで90%は微妙
  • ベースライン:ランダム予測や単純な方法と比較
  • 応用分野:医療診断なら99%以上必要、趣味のアプリなら80%でも十分

ベースラインの例:

  • 10クラスでランダム予測:10%の正解率
  • 90%なら、ベースラインより80ポイント改善

Q5:ニューラルネットワーク以外でも高精度は出せる?

A:問題によっては可能です

ニューラルネットワークが有利な場合:

  • 画像、音声、自然言語などの複雑なデータ
  • 大量のデータがある

従来手法でも十分な場合:

  • 特徴量がシンプルで明確
  • データが少ない
  • 解釈可能性が重要

実際には、問題に応じて適切な手法を選ぶことが大切です。


まとめ:多クラス分類は実用的なAI技術

多クラス分類は、3つ以上のカテゴリーから正解を選ぶ機械学習の問題です。

この記事のポイント:

多クラス分類とは
3つ以上の選択肢から1つを選ぶ分類問題

二値分類との違い
選択肢が2つ(二値)か、3つ以上(多クラス)か

具体的な応用例
手書き数字認識、画像分類、テキスト分類、音声認識など

主要なアルゴリズム
ロジスティック回帰、SVM、決定木、ニューラルネットワーク、k-NN

評価指標
正解率、混同行列、適合率、再現率、F1スコア

実装の流れ
データ準備 → 前処理 → モデル構築 → 学習 → 評価 → 改善

よくある課題
クラスの不均衡、似たクラスの混同、過学習、計算量の問題

対策方法
データ拡張、正則化、階層的分類、適切なモデル選択

多クラス分類は、私たちの身の回りで広く使われている技術です。

スマートフォンの写真分類、音声アシスタント、自動翻訳、レコメンドシステムなど、数え切れないほどの場面で活躍しています。

基本的な考え方は、「たくさんの例から学習し、新しいデータがどのカテゴリーに属するかを予測する」というシンプルなもの。

しかし、その裏には、様々なアルゴリズムや工夫が詰まっているんですね。

これから機械学習を学ぶ方は、まず手書き数字認識(MNIST)のような基本的な多クラス分類から始めると、理解が深まりますよ。

実際に手を動かして、データを準備し、モデルを学習させ、結果を評価してみてください。試行錯誤する中で、多クラス分類の面白さと奥深さを実感できるはずです!

コメント

タイトルとURLをコピーしました