Velvet Theory AIとデータの話を、やわらかく、筋道立てて。

機械学習の全体地図(2)タスクとモデル

回帰・分類・クラスタリングなど「何を出力するか」で分けたタスクと、線形モデル・決定木・ニューラルネットワークなど「規則をどう表すか」で分けたモデルを整理し、実務でのモデルの選び方の定石を紹介します。

連載 機械学習の全体地図 第2回/全8回
  1. 第1回全体像と「学び方」
  2. 第2回タスクとモデル
  3. 第3回作って確かめる手順
  4. 第4回評価指標と落とし穴
  5. 第5回深層学習とLLM
  6. 第6回運用と責任あるAI
  7. 第7回Pythonで書く
  8. 第8回通しチュートリアル:解約予測

② タスク:何を出力するか

出力の種類で分けると抜け漏れなく整理できます。

回帰数値を出す
分類カテゴリを出す
123
ランキング順番を出す
山田が東京へ人名地名
構造化予測関係し合う複数の値
クラスタリングまとまりを見つける
主軸
次元削減少ない軸に圧縮
異常
異常検知外れたものを見つける
パン牛乳一緒に買われやすい
相関ルール同時に起きる組み合わせ
新しいデータ
生成分布から新しく作る
SG
強化学習報酬が最大の行動

教師ありのタスク

回帰(連続値を出す) Regression

数値そのものを予測する。

例:売上、気温、所要時間。時間順に並んだデータで未来を当てる時系列予測は、時間の順序を守って扱う回帰(または分類)。「解約までの期間」のように、観測期間中にまだ起きていないデータ(打ち切り)を含む場合は生存時間分析という専用の枠組みを使う。

分類(カテゴリを出す) Classification

種類ラベルの付き方例
二値分類2つのうち1つ不正取引か否か
多クラス分類3つ以上のうち、必ず1つ手書き数字 0〜9
マルチラベル分類複数を同時に付けてよい記事に「政治」「経済」両方

★1〜5の評価のように順序のあるカテゴリを当てる「順序回帰」は、回帰と分類の中間にあたる。

ランキング(並び順を出す) Learning to rank

候補を「関連の高い順」に並べる。検索結果や推薦で使う。学習の仕方は、1件ずつ点数を学ぶポイントワイズ、2件の優劣を学ぶペアワイズ、並び全体を学ぶリストワイズの3種類。

構造化予測(互いに関係する複数の値を出す) Structured prediction

1つの答えではなく、関係し合う答えの組をまとめて出す。たとえば翻訳では、訳文の各単語が前後の単語とつながっている必要があるため、1語ずつ別々に決めるのではなく文全体として出力する。下の「系列」は、文章のように順番に並んだデータのこと。

  • 系列ラベリング:単語ごとにラベル(例:文中の人名・地名を抜き出す)
  • 系列変換:系列から系列へ(例:翻訳、要約、音声認識)
  • 物体検出:画像内の物体の位置(枠)と種類
  • セグメンテーション:画素ごとに分類

教師なしのタスク

クラスタリング(似たものをまとめる) Clustering

各データを1つのグループに割り当てる「ハード」と、所属の確率を出す「ソフト」がある。

代表手法:k-means(グループ数を先に決める)、階層型クラスタリング、DBSCAN(点が密集している所をまとまりとみなし、どこにも属さない点は外れ値にする)、混合ガウスモデル(ソフト)

動かしてみる:k-meansを1歩ずつ進める

◆=グループの中心(3個)。最初は、わざと偏った位置から始めている。「別の初期値」ではランダムな3点から始める

数式で見る:k-meansが最小化するもの
J = Σi ‖ xi − μc(i) ‖2

μc(i) は点 i が属するグループの中心で、J はデモの「距離の二乗和」です。割り当ても中心の移動も J を増やさないので、必ずどこかで止まります。ただし最小値にたどり着く保証はなく、初期値によって違う結果に落ち着くことがあります(局所解)。そのため実務では、初期値を変えて何度か実行し、最も良い結果を使います(scikit-learn の n_init)。

次元削減・表現学習(情報を少ない数値に圧縮する) Dimensionality reduction / Representation learning

データを、扱いやすい少数の数値で表し直す(この表し方を学ぶことを表現学習と呼ぶ)。代表手法:主成分分析 PCA(データのばらつきが大きい方向を軸に取り直す)、t-SNE・UMAP(主に2次元での可視化用)、オートエンコーダ(入力をいったん小さく圧縮してから元に戻すように学ぶNN)。似たもの同士が近くなるように数値化する「類似度学習」もここに含まれ、類似検索や顔認証に使われる。

異常検知(珍しいものを見つける) Anomaly detection

正常データの性質を学び、そこから外れるものを検出する。異常の実例に正解ラベルが十分あれば、正常が大半を占める偏った二値分類としても解ける。

代表手法:Isolation Forest(ランダムな分割を繰り返し、早く孤立する点を異常とみなす)、One-Class SVM(正常データを囲む境界を学ぶ)、LOF(周りと比べて密度が低い点を異常とみなす)、オートエンコーダ(元に戻したときのずれが大きい点を異常とみなす)

密度推定(データの分布を推定する) Density estimation

ある値がどれくらい起こりやすいかを、データから見積もる。

代表手法:カーネル密度推定(各データ点の周りに小さな山を置いて足し合わせる)、混合ガウスモデル(いくつかの釣鐘型の分布の重ね合わせで表す)

相関ルール(一緒に起きる組み合わせを見つける) Association rule mining

例:「パンを買う人は牛乳も買いやすい」。代表手法:Apriori。指標は支持度・確信度・リフト。

生成(新しいデータを作る) Generative modeling

学習データの分布に従う新しい文章・画像・音声などを作る。データの分布を学ぶ点で密度推定と近い(ただしGANのように確率を直接は出さない手法もある)。文章生成では、自己教師あり学習で大規模に学ぶ方法が主流。

代表手法:自己回帰モデル(前から1つずつ続きを作る。LLM)、VAE(圧縮した数値から新しいデータを作る)、GAN(作る側と見破る側を競わせる)、拡散モデル(ノイズから少しずつ画像を作る)

強化学習のタスク

方策の学習(行動の決め方を出す) Policy learning

例:ゲームAI、ロボット制御、広告配信の最適化(バンディット)

理解度チェック

③ モデル:規則をどんな形で表すか

大きく6つの系統があります。下の図は、同じデータに対して各系統が引く境界線のイメージです。系統名をタップすると詳細が開きます。

線形モデル直線で分ける
カーネル法なめらかな曲線
決定木縦横の階段で分ける
近傍ベース近くの点の多数決
確率モデル分布の形を仮定する
ニューラルネット層を重ねて特徴も学ぶ

点線は、2種類のデータを分ける境界線のイメージです。

線形モデル Linear models

各特徴量に「重み」を掛けて足し合わせた値(重み付き和)で予測する。重みが大きい特徴量ほど予測への影響が大きい。

  • 線形回帰。Ridge・Lassoは、重みが大きくなりすぎないよう抑える「正則化」を加えた線形回帰で、学習データに合わせすぎる(過学習)のを防ぐ
  • ロジスティック回帰:名前は「回帰」だが分類のモデル
  • 線形SVM
  • ARIMA:過去の値の重み付き和で未来を予測する時系列モデル
  • 教師なしでは主成分分析(PCA)も線形の仲間
強み
高速、解釈しやすい、ベースラインに最適
弱み
直線で表せない関係(例:年齢が中くらいのときだけ値が高い)は、特徴量を工夫しないと表せない
カーネル法 Kernel methods

データをより多くの次元に変換したと考えることで、直線では分けられないデータも曲線で分けられるようにする。実際には変換せずに済む計算の工夫(カーネルトリック)を使う。

  • カーネルSVM、サポートベクター回帰
  • ガウス過程(予測の不確かさも出せる)
強み
中小規模データで高精度
弱み
データ数が増えると計算量が急増
決定木とアンサンブル Decision trees / Ensembles

「条件で分岐」を繰り返して予測する。複数の木を組み合わせると強くなる。

  • 決定木
  • ランダムフォレスト:多数の木を並列に作り、平均または多数決(バギング)
  • 勾配ブースティング:前の木の誤りを次の木が直す(XGBoost、LightGBM、CatBoost)
  • 教師なしでは Isolation Forest(異常検知)も木を使う
強み
表形式データ(Excelのような行と列のデータ)で最有力(ただし件数が少ないと線形モデルに負けることもある)、数値の大きさをそろえる前処理(スケーリング)が不要、欠損に強い実装も多い
弱み
画像・音声・文章など生データには不向き、学習データの範囲の外の値を予測する(外挿)のが苦手
距離・近傍ベース Nearest neighbors

「近いデータは似た答え」という考え方で予測する。

  • k近傍法(k-NN)
  • 教師なしでは k-means、DBSCAN、LOF も距離の考え方を使う
強み
仕組みが単純、学習がほぼ不要
弱み
予測時に全データと比較するため重い、スケーリング必須、特徴量が多い(高次元)と、どの点も同じくらい遠くなり精度が落ちる
確率・ベイズモデル Probabilistic / Bayesian models

データが生まれる確率の仕組みを仮定して学ぶ。たとえばナイーブベイズは「迷惑メールには『無料』という語が出やすい」といった確率を数えて判定する。

  • ナイーブベイズ(文書分類の定番ベースライン)
  • 混合ガウスモデル、隠れマルコフモデル(系列の背後にある見えない状態を扱う)
  • ベイズ線形回帰、ベイジアンネットワーク
強み
不確かさを確率で表せる、少ないデータでも安定しやすい
弱み
仮定が現実とずれると精度が落ちる
ニューラルネットワーク(深層学習) Neural networks / Deep learning

単純な計算をする層を何層も重ねたモデル(NNと略す)。予測に役立つ特徴の取り出し方まで自動で学ぶ。データの形に合わせて構造を選ぶ。

構造得意なデータ・用途
MLP(基本形のNN)表形式、他の構造の部品
CNN画像(近くの画素の関係を捉える)
RNN・LSTM系列(現在は多くの用途でTransformerに置き換わった)
Transformer文章を中心に画像・音声まで汎用。LLMの基盤
GNNグラフ構造=点と線のつながり(分子、SNSの人間関係)
オートエンコーダ・VAE圧縮、異常検知、生成
GAN・拡散モデル画像などの生成
強み
画像・音声・文章で圧倒的、大量データで伸び続ける
弱み
大量のデータと計算資源が必要、判断理由の説明が難しい
数式で見る:線形モデルと正則化

線形回帰

ŷ = w1x1 + w2x2 + … + wnxn + b

重み w と切片 b を学習します。ŷ は予測値です。

ロジスティック回帰

p = σ(z) = 1 / (1 + e−z)
z = w1x1 + … + wnxn + b

シグモイド関数 σ は、どんな数も0〜1に押し込むので、p を「陽性である確率」として使えます。p が閾値以上なら陽性と判定します。

正則化:損失に「重みの大きさへの罰則」を足したものを最小にします。

Ridge(L2):損失 + λ Σ wi2
Lasso(L1):損失 + λ Σ |wi|

λ が大きいほど重みが小さく抑えられます。L1は重みをちょうど0にしやすく、使う特徴量を選ぶ効果があります。scikit-learnの LogisticRegression の C は λ の逆数にあたり、小さいほど正則化が強くなります。

モデルを見る別の切り口。 「識別モデル(入力から答えを直接当てる)/生成モデル(入力と答えがどう一緒に生まれるかを学ぶ。新しいデータを作ることもできる)」と、「パラメトリック(パラメータ数が固定。線形モデルなど)/ノンパラメトリック(データが増えると複雑さも増す。k-NN、決定木など)」の2つがよく使われます。なお、相関ルールの Apriori のように、モデルを作らず頻出する組み合わせを数え上げる手法もあります。
アンサンブルについて。複数のモデルを組み合わせて精度を上げる技法(バギング、ブースティング、スタッキング)は、上の6系統のどれにも使えます。決定木と特に相性が良いため、ランダムフォレストや勾配ブースティングが代表例になっています。

理解度チェック

モデルの選び方:実務の定石

迷ったときの出発点です。最後は、候補を同じ方法で評価して決めます。

どの場合にも共通する3つの原則

  • 最初に単純なベースライン(平均値、多数派、線形モデル)を作り、それを超えるかで判断する
  • 画像・文章・音声は、ゼロから作らず学習済みモデルを探して使う(転移学習)
  • 候補を2〜3個に絞り、同じ交差検証(データの分け方を変えて何度か評価する方法。④で説明)で比べる。精度だけでなく、説明のしやすさ、予測の速さ、運用の手間も比べる
データ・状況まず試す次の候補注意点
表形式(数千件以上)勾配ブースティング線形モデル(比較用)欠損やカテゴリ変数をそのまま扱える実装が多い
表形式(数百件以下)正則化付きの線形モデル浅い決定木、ランダムフォレスト評価のばらつきが大きいので、差がわずかなら単純な方を選ぶ
判断の理由を説明する必要があるロジスティック回帰、浅い決定木勾配ブースティング+SHAP(1件ごとの予測理由を示す手法)など誰に何を説明するかを先に決める(責任あるAI)
画像学習済みCNN・Vision Transformerのファインチューニング学習済みモデルで特徴を取り出し、線形モデルで分類データ拡張で件数不足を補う
文章の分類TF-IDF(単語の出現頻度を使う古典的な方法)+ロジスティック回帰(ベースライン)学習済みTransformerのファインチューニング、LLMへのプロンプトラベルがほとんどないなら、LLMへのプロンプトから試す
時系列の予測過去の値や曜日を特徴量にした勾配ブースティングARIMAなどの統計モデル、時系列用のNN必ず時系列分割で評価する
推薦人気順(ベースライン)、協調フィルタリング特徴量を使ったランキング学習履歴のない新しい利用者・商品に弱い(コールドスタート)
異常検知(ラベルなし)Isolation ForestLOF、オートエンコーダ異常の実例が少しでもあれば評価に使う
異常検知(ラベルあり)クラスの重みを付けた勾配ブースティング異常検知の手法と比べる評価はPR-AUCで
クラスタリング標準化してからk-means形が不規則・ノイズあり→DBSCAN・HDBSCAN、所属確率が欲しい→混合ガウスグループ数は指標だけでなく、業務で解釈できるかで決める
可視化PCAt-SNE・UMAPt-SNEの図では、塊の大きさや塊同士の距離がそのまま意味を持たないことがある
文章の生成・対話既存のLLMへのプロンプトRAG、ファインチューニング深層学習とLLMを参照

Spark