スマートフォンで写真を撮ると、自動的に「人物」「風景」「食べ物」「ペット」などのカテゴリーに分類されることがありますよね。
また、手書きの数字を読み取るとき、AIは「0」から「9」までの10種類の中から正しい数字を判断しています。
このように、3つ以上のカテゴリー(クラス)の中から正解を選ぶ問題を多クラス分類(Multi-class Classification)と呼びます。
例えるなら、じゃんけんで「グー」「チョキ」「パー」の3つから選ぶような感じです。2択ではなく、複数の選択肢から1つを選ぶんですね。
多クラス分類は、機械学習の中でも特に実用的な技術で、画像認識、音声認識、テキスト分類など、私たちの身の回りで広く使われています。
この記事では、多クラス分類の基礎から、実際の応用例、使われるアルゴリズムまで、初心者の方にも分かりやすく解説していきます。
分類問題の基礎知識

機械学習における分類とは
分類(Classification)とは、データを複数のカテゴリーに振り分ける問題のことです。
機械学習では、コンピュータに大量の例を見せて、新しいデータがどのカテゴリーに属するかを予測できるように学習させます。
分類問題の例:
- 画像を見て、それが「犬」か「猫」かを判断する
- メールを読んで、「迷惑メール」か「普通のメール」かを判断する
- 花の写真から、その種類を特定する
二値分類と多クラス分類の違い
分類問題は、選択肢の数によって種類が分かれます。
二値分類(Binary Classification):
- 選択肢が2つだけの分類問題
- 「YES か NO」「0 か 1」のような二択
- 例:迷惑メール判定、病気の有無判定、商品の良品・不良品判定
多クラス分類(Multi-class Classification):
- 選択肢が3つ以上の分類問題
- 複数の選択肢から1つを選ぶ
- 例:手書き数字認識(0〜9の10種類)、動物の種類判定、ニュース記事のカテゴリ分類
比較表:
| 項目 | 二値分類 | 多クラス分類 |
|---|---|---|
| クラス数 | 2つ | 3つ以上 |
| 出力 | 0または1 | 0〜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(100%)になる
- 最も確率が高いクラスを選択
確率の例:
- 犬: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. ニューラルネットワーク
現代の多クラス分類の主流です。
仕組み:
- 入力層でデータを受け取る
- 複数の隠れ層で特徴を抽出
- 出力層でクラス数分のニューロンが確率を出力
- ソフトマックス関数で確率を正規化
深層学習(ディープラーニング):
多層のニューラルネットワークを使った手法。
代表的なアーキテクチャ:
- CNN(畳み込みニューラルネットワーク):画像分類に強い
- RNN(リカレントニューラルネットワーク):テキスト分類に強い
- Transformer:最新の自然言語処理に使用
メリット:
- 非常に高い精度
- 複雑なパターンを学習できる
- 画像、音声、テキストなど幅広く対応
デメリット:
- 大量のデータと計算資源が必要
- 学習に時間がかかる
- ブラックボックス化しやすい
5. k近傍法(k-NN)
シンプルで直感的な手法です。
仕組み:
- 新しいデータに最も近い k 個のデータを探す
- その 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クラス分類の例:
| 予測:犬 | 予測:猫 | 予測:鳥 | |
|---|---|---|---|
| 実際:犬 | 45 | 3 | 2 |
| 実際:猫 | 4 | 38 | 8 |
| 実際:鳥 | 1 | 7 | 42 |
読み方:
- 対角線上の数字:正しく分類された数
- それ以外:誤分類された数
- 「実際:猫」で「予測:鳥」が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〜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%
混同行列:
| 予測:リンゴ | 予測:バナナ | 予測:オレンジ | 予測:ブドウ | |
|---|---|---|---|---|
| 実際:リンゴ | 94 | 2 | 3 | 1 |
| 実際:バナナ | 1 | 98 | 0 | 1 |
| 実際:オレンジ | 4 | 0 | 95 | 1 |
| 実際:ブドウ | 2 | 1 | 2 | 95 |
分析:
- すべての果物で高い精度
- リンゴとオレンジで若干の混同あり(色が似ているため)
ステップ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)のような基本的な多クラス分類から始めると、理解が深まりますよ。
実際に手を動かして、データを準備し、モデルを学習させ、結果を評価してみてください。試行錯誤する中で、多クラス分類の面白さと奥深さを実感できるはずです!

コメント