機械学習の基礎:アルゴリズム、前処理、評価から過学習対策まで

こんにちは、山田どうそんです。

AIの大きな枠組みの中で、特に重要なのが「機械学習」です。今回は機械学習の核心に迫り、実際にどのようなアルゴリズムがあるのか、データをどう準備するのか、モデルをどう評価するのか、そして失敗しがちな問題とその対策について解説します。

人工知能や機械学習という言葉はよく耳にしますが、実際どんなアルゴリズムが動いているのか、なぜデータの準備が重要なのか…その辺りまで理解している人は少ないのではないでしょうか。この記事を読めば、機械学習の「中身」が見えてくるはずです。

さあ、機械学習の実際のところを見ていきましょう。

1. 機械学習のアルゴリズム:それぞれの特徴と使い所

機械学習には様々なアルゴリズムがあります。それぞれに得意・不得意があるため、問題に応じて使い分けることが重要です。代表的なものを見ていきましょう。

決定木(Decision Tree):直感的で解釈しやすい

決定木は、木構造を使って「Yes/No」の質問を繰り返し、最終的な判断に至るアルゴリズムです。

例えば、ローン審査を考えてみましょう。「年収は500万円以上か?」→Yes→「過去の延滞はあるか?」→No→「勤続年数は3年以上か?」→Yes→「承認」といった具合です。

決定木の特徴

  • メリット:直感的で結果の解釈が容易、前処理の要件が少ない
  • デメリット:過学習しやすい、小さな変化に弱い

適した問題

  • ルールベースの判断が必要な場合
  • モデルの判断理由を説明する必要がある場合(説明可能なAI)
  • カテゴリカルデータと数値データが混在する場合

ランダムフォレスト(Random Forest):決定木の弱点を克服

ランダムフォレストは、複数の決定木を作成し、その多数決で最終判断を行うアルゴリズムです。

例えるなら、一人の専門家の意見よりも、多数の専門家による投票の方が精度が高くなる、というアプローチです。各決定木はデータの一部だけを使って学習するため、互いに異なる視点を持ちます。

ランダムフォレストの特徴

  • メリット:過学習しにくい、高精度、特徴量の重要度を評価できる
  • デメリット:計算コストが高い、モデルが大きくなる、完全な解釈は難しい

適した問題

  • 高い予測精度が必要な場合
  • 特徴量が多い場合
  • データにノイズが含まれる場合

SVM(Support Vector Machine):境界を最適化

SVMは、データポイント間の境界(超平面)を最適化するアルゴリズムです。

例えば、猫と犬の画像を分類する場合、SVMは両者を最も明確に区別できる境界線を見つけ出します。さらに「マージン」という概念を使って、境界線からできるだけ距離を取るように設計されています。

SVMの特徴

  • メリット:高次元データに強い、カーネルトリックで非線形分類も可能
  • デメリット:大規模データセットには計算コストが高い、パラメータ調整が必要

適した問題

  • テキスト分類や画像分類などの高次元データ
  • 明確な境界がある分類問題
  • 比較的小~中規模のデータセット

2. 特徴量抽出とデータ前処理:成功の80%はここで決まる

実は機械学習プロジェクトの成否の大半は、モデル選択よりもデータの質と前処理で決まります。「ゴミを入れればゴミが出る(Garbage In, Garbage Out)」という格言があるほどです。

特徴量抽出(Feature Extraction):データから価値ある情報を取り出す

特徴量抽出とは、生データから機械学習に有用な情報(特徴量)を取り出すプロセスです。

例えば:

  • テキストデータから単語の出現頻度や感情スコアを抽出
  • 画像から色彩情報、エッジ、テクスチャなどを抽出
  • 音声から周波数特性やテンポを抽出

良い特徴量は以下の条件を満たします:

  • 関連性:目標とする予測と明確な関連がある
  • 独立性:他の特徴量と強い相関がない
  • 分布:極端な偏りがない

データ前処理:モデルに渡す前の重要な下準備

データ前処理には主に以下のような作業があります:

1. 欠損値処理

データには欠損がつきもの。そのまま使えないため、以下のような対処が必要です:

  • 平均値・中央値・最頻値での補完
  • 周辺データからの予測による補完
  • 欠損のあるデータポイントの削除(データが十分にある場合)

2. 外れ値処理

異常に大きいまたは小さい値は、モデルの学習を妨げる可能性があります:

  • 削除
  • 閾値によるクリッピング(上限・下限の設定)
  • ロバストな変換(対数変換など)

3. 正規化・標準化

特徴量のスケールを揃えることで、モデルの学習が安定します:

  • 標準化:平均0、標準偏差1にする(例:身長や体重)
  • 正規化:0~1の範囲に収める(例:画像のピクセル値)

4. エンコーディング

カテゴリカルデータ(「男性/女性」、「東京/大阪/名古屋」など)を数値に変換します:

  • One-hotエンコーディング:各カテゴリを0/1のフラグに変換
  • ラベルエンコーディング:カテゴリに連番を割り当て

5. 次元削減

特徴量が多すぎる場合、以下のような次元削減技術を使います:

  • PCA(主成分分析):データの分散を保持しながら次元を削減
  • t-SNE:高次元データを2D/3Dに視覚化するのに適した手法

前処理の重要性について一つ例をあげると、ある不動産価格予測のコンペティションでは、単に郵便番号を地域の平均所得に置き換えるという前処理だけで、予測精度が10%以上向上したケースがあります。特徴量エンジニアリングの力はそれほど大きいんです。

3. モデル評価と検証手法:信頼性の確保

機械学習モデルを作ったら、その性能を適切に評価することが重要です。「このモデルはどれくらい信頼できるのか?」を測る方法を見ていきましょう。

データの分割:訓練データとテストデータ

最も基本的なのは、データを「訓練用」と「テスト用」に分けることです:

  • 訓練データ(Training Data):モデルの学習に使用(通常70~80%)
  • テストデータ(Test Data):学習には使わず、最終評価のみに使用(20~30%)

さらに、モデル選択や調整のために、訓練データの一部を「検証データ(Validation Data)」として分けることもあります。

交差検証(Cross-Validation):データを最大限に活用

限られたデータをより効率的に使うための手法が交差検証です。特に**k分割交差検証(k-fold Cross-Validation)**が一般的です:

  1. データをk個のグループ(フォールド)に分ける(通常k=5または10)
  2. 1つのフォールドをテストデータ、残りをトレーニングデータとする
  3. これをk回繰り返し、各フォールドが一度ずつテストデータになるようにする
  4. k回の結果の平均をモデルの評価とする

この方法により、データセット全体を効率的に活用でき、モデル評価の信頼性が高まります。

評価指標:目的に応じた選択が重要

モデルの良し悪しを測る指標は、解決したい問題によって異なります:

分類問題の評価指標

  • 精度(Accuracy):全体のうち、正しく分類されたデータの割合
  • 適合率(Precision):「陽性」と予測したもののうち、実際に陽性だった割合
  • 再現率(Recall):実際の陽性のうち、正しく「陽性」と予測できた割合
  • F1スコア:適合率と再現率の調和平均
  • AUC-ROC:異なる閾値での真陽性率と偽陽性率のプロット

例えば、スパムメール検出では「普通のメールをスパムと誤判定する」ことを避けたいため、適合率を重視します。一方、がん検診では「がんを見逃す」ことを避けたいため、再現率を重視します。

回帰問題の評価指標

  • MSE(平均二乗誤差):予測値と実際値の差の二乗の平均
  • RMSE(平方根平均二乗誤差):MSEの平方根(元の単位に戻した誤差)
  • MAE(平均絶対誤差):予測値と実際値の差の絶対値の平均
  • R²(決定係数):モデルがデータの分散をどれだけ説明できるか(0~1)

例えば、外れ値の影響を抑えたい場合はMAEが適しています。一方、大きな誤差をより厳しく評価したい場合はMSEが適しています。

4. 過学習と未学習:モデルの性能を左右する問題

機械学習モデルの性能を損なう二大要因が「過学習(Overfitting)」と「未学習(Underfitting)」です。これらを理解し、対策することが重要です。

過学習(Overfitting):トレーニングデータを「丸暗記」してしまう問題

過学習とは、モデルがトレーニングデータに対しては極めて高い精度を示すが、新しいデータには対応できない状態です。

例えるなら、暗記だけで試験に臨んだ学生のようなもの。過去問には答えられても、少し形式が変わると太刀打ちできません。

過学習の兆候

  • トレーニングデータでの性能は非常に高い
  • テストデータでの性能が著しく低い
  • モデルが不必要に複雑化している

過学習への対策

  1. より多くのトレーニングデータを集める
    • データが多いほど、偶然のパターンよりも本質的なパターンを学習しやすくなります
  2. 特徴量の数を減らす
    • 関連性の低い特徴量を削除する
    • 主成分分析(PCA)などの次元削減手法を使用する
  3. 正則化(Regularization)を適用する
    • L1正則化(Lasso):不要な特徴の係数をゼロにする効果
    • L2正則化(Ridge):係数の値を小さく保つ効果
  4. ドロップアウト(主にニューラルネットワーク)
    • 学習時にランダムにニューロンを無効化し、特定の特徴に依存しすぎないようにする
  5. アンサンブル学習
    • 複数のモデルの予測を組み合わせることで、個々のモデルの過学習を軽減する

未学習(Underfitting):モデルが単純すぎる問題

未学習とは、モデルが複雑性に欠け、データの基本的なパターンさえ捉えられない状態です。

例えるなら、重要な公式さえ覚えていない学生のようなもの。基本的な問題にも対応できません。

未学習の兆候

  • トレーニングデータでもテストデータでも性能が低い
  • モデルが単純すぎる

未学習への対策

  1. より複雑なモデルを選択する
    • 線形モデルから決定木やニューラルネットワークなど、より表現力の高いモデルに切り替える
  2. 特徴量を増やす・改良する
    • 新たな特徴量を追加する
    • 既存の特徴量から新たな特徴を生成する(多項式特徴など)
  3. モデルのハイパーパラメータを調整する
    • 決定木の深さを増やす
    • ニューラルネットワークの層やユニット数を増やす
  4. 学習時間やイテレーション回数を増やす
    • 勾配降下法における反復回数を増やすなど

バイアスとバリアンスのトレードオフ

機械学習では、「バイアス(偏り)」と「バリアンス(分散)」のトレードオフがつきものです:

  • 高バイアス:モデルが単純すぎて、データの真のパターンを捉えられない(未学習)
  • 高バリアンス:モデルが複雑すぎて、ノイズまで学習してしまう(過学習)

理想的なモデルは、この両者のバランスが取れている状態です。実際には、モデルの複雑さを段階的に調整しながら、交差検証でパフォーマンスを確認する方法が効果的です。

まとめ:機械学習の基礎を固める

機械学習は単にアルゴリズムを選択するだけでなく、適切なデータ前処理、モデル評価、そして過学習・未学習への対策が重要です。これらのポイントを押さえることで、より信頼性の高いモデルを構築できるようになります。

ここまで学んだことをまとめると:

  1. 機械学習アルゴリズムには様々な種類があり、問題に応じて適切に選択する必要がある
    • 決定木:解釈性に優れているが過学習しやすい
    • ランダムフォレスト:決定木を集めて強化したもの
    • SVM:複雑な境界を見つけるのに優れている
  2. 特徴量抽出とデータ前処理は機械学習の成功の鍵
    • 欠損値・外れ値の処理
    • 特徴量のスケーリング
    • カテゴリカルデータのエンコーディング
  3. モデル評価では、適切なデータ分割と評価指標の選択が重要
    • トレーニングデータとテストデータの分離
    • 交差検証による信頼性の確保
    • 問題に応じた評価指標の選択
  4. 過学習と未学習は常に注意すべき問題
    • 過学習:正則化、データ拡張、アンサンブル学習などで対策
    • 未学習:モデル複雑性の向上、特徴量の改良などで対策

機械学習の世界は奥が深く、実践を重ねることで理解が深まります。ぜひ、実際にPythonなどのツールを使って、簡単なモデル構築から始めてみてください。

Dチームメルマガ登録者|eBOOK「逆引きAIツールブック」プレゼント中


AIやマーケティングに関する情報を不定期配信中
eBOOK「逆引きAIツールブック」プレゼント中です
↓ ↓ ↓

Dチームメルマガはこちら>>>

 

ABOUT US
山田 どうそん
受講生3万人以上のオンライン講師|6年以上サブスクメンバーシップのコミュニティを運営|オンライン講師型の安定したコミュニティシステムの作り方を教えている|一人でも多くの人にオンライン講師になって物心両面の豊かさを手に入れられるようにスキル構築のサポートをしたい