教師あり学習

回帰分析・SVM・決定木・k-NN・ナイーブベイズ
🔰 初心者

教師あり学習って、どんな学習方法なんですか?

🎓 上級者

正解ラベル(目的変数)付きのデータを使い、入力から出力を予測するモデルを学習する手法だよ。「この入力にはこの正解」というペアをたくさん見せて、パターンを覚えさせるイメージだね。

📊 分類と回帰
🔰 初心者

教師あり学習には種類があるんですか?

🎓 上級者

大きく分類(Classification)回帰(Regression)の2つに分かれるよ。予測する対象がカテゴリなら分類、数値なら回帰だね。

種類予測対象
分類(Classification)カテゴリ(離散値)スパム判定、画像認識、病気の診断
回帰(Regression)数値(連続値)価格予測、気温予測、売上予測
🧠 代表的なアルゴリズム
アルゴリズム特徴用途
線形回帰シンプル、解釈しやすい回帰
ロジスティック回帰確率を出力、2クラス分類に強い分類
決定木条件分岐で判断、可視化しやすい分類・回帰
ランダムフォレスト複数の決定木を組み合わせる分類・回帰
SVMマージン最大化で分類分類・回帰
k-NN(k近傍法)近くのデータ点を参照分類・回帰
ナイーブベイズベイズの定理+独立仮定で高速分類分類(テキスト分類に強い)
ニューラルネットワーク脳の神経細胞を模倣、層構造で学習分類・回帰(複雑なパターンに強い)
🍽️ ノーフリーランチ定理(No Free Lunch Theorem)
🔰 初心者

こんなにたくさんアルゴリズムがあるんですね。結局どれが一番優れているんですか?

🎓 上級者

実は「すべての問題に対して最強のアルゴリズムは存在しない」ことが数学的に証明されているんだ。これがノーフリーランチ定理(NFL定理)だよ。1997年にウォルパートとマクレディが提唱したんだ。

ノーフリーランチ定理とは

「あらゆる問題に対して平均的に見れば、どのアルゴリズムも同じ性能になる」

つまり、ある問題で優れたアルゴリズムは、別の問題では劣る可能性がある。万能な手法は存在しないということ。

🔰 初心者

「フリーランチ(タダ飯)はない」ってどういう意味ですか?

🎓 上級者

何の工夫もなしに良い結果が得られる(=タダ飯が食える)ことはない」ということだよ。問題の特性をよく理解して、それに適したアルゴリズムを選ぶ努力が必要なんだ。

実務での意味

・SVMが画像分類で最強でも、テキスト分類ではナイーブベイズに負けることがある
・ディープラーニングが万能に見えても、少量データでは決定木に劣ることがある
・だから問題に応じて手法を選択・比較することが大切

📈 単回帰分析と重回帰分析
🔰 初心者

回帰分析にも種類があるんですか?

🎓 上級者

説明変数が1つなら単回帰分析2つ以上なら重回帰分析だよ。単回帰は直線を引くイメージ、重回帰は多次元の平面を当てはめるイメージだね。

単回帰分析重回帰分析
説明変数の数1つ2つ以上
y = ax + by = a₁x₁ + a₂x₂ + ... + b
イメージ直線を引く多次元の平面を当てはめる
勉強時間→点数勉強時間+睡眠+出席率→点数
偏回帰係数

重回帰の各変数の重み(a₁, a₂...)。他の変数の影響を取り除いた上でのその変数単独の影響度。

最小二乗法

予測と実際の値の差の2乗合計を最小化してパラメータ(a, b)を求める方法。

🔗 相関係数
🔰 初心者

相関係数って何を表す数値ですか?

🎓 上級者

2変数の関係の強さと方向を-1〜+1で表す指標だよ。値が1に近ければ正の相関、-1に近ければ負の相関、0に近ければ相関が弱いことを示すんだ。

意味
+1に近い正の相関が強い(一方が上がると他方も上がる)
-1に近い負の相関が強い(一方が上がると他方は下がる)
0に近い相関が弱い
注意

相関の強さは絶対値で見る。-0.9も+0.9も同じくらい強い相関。

⚠️ 多重共線性(Multicollinearity)
🔰 初心者

多重共線性って何ですか?

🎓 上級者

説明変数同士の相関が高すぎると、重回帰の偏回帰係数が不安定になる問題のことだよ。例えば「身長」と「足のサイズ」は強く相関しているから、両方入れると重みが不安定になるんだ。

多重共線性

説明変数同士の相関が高すぎると、重回帰の偏回帰係数が不安定になる問題。例:「身長」と「足のサイズ」は強く相関 → 両方入れると重みが不安定になる。

📐 ロジスティック回帰分析
🔰 初心者

「ロジスティック回帰」って名前に回帰とありますが、回帰なんですか?

🎓 上級者

これは要注意ポイントだね。名前に「回帰」とあるけど、実は分類手法なんだ。入力から確率(0〜1)を出力して分類に使うよ。

ロジスティック回帰のしくみ

1. 線形回帰と同じく a₁x₁ + a₂x₂ + ... + b を計算
2. シグモイド関数で0〜1の確率に変換
3. 確率0.5以上→「Yes」、0.5未満→「No」と分類

線形回帰ロジスティック回帰
タスク回帰(数値予測)分類(カテゴリ予測)
出力数値(-∞〜+∞)確率(0〜1)
変換関数なしシグモイド関数
損失関数平均二乗誤差(MSE)交差エントロピー
線形回帰 vs ロジスティック回帰 線形回帰 入力 x 出力 y 出力は連続値(-∞ ~ +∞) ロジスティック回帰 入力 x 確率 P 0 0.5 1.0 閾値 0.5 Yes No 出力は確率(0 ~ 1)、S字カーブ = シグモイド関数
図1: 線形回帰は直線で数値を予測、ロジスティック回帰はシグモイド関数で確率を出力
多クラス分類

ロジスティック回帰を多クラスに拡張したものをソフトマックス回帰(多項ロジスティック回帰)と呼ぶ。

🎯 サポートベクターマシン(SVM)
🔰 初心者

SVMってどんなアルゴリズムですか?

🎓 上級者

データを分ける決定境界(分離超平面)を、マージンを最大化して引く教師あり学習手法だよ。マージンを最大にすることで、未知データにも対応しやすくなるんだ。

SVMの基本の考え方

決定境界(分離超平面): データを2クラスに分ける線・面
サポートベクター: 決定境界に最も近いデータ点(この点が境界を「支えている」→名前の由来)
マージン: 決定境界からサポートベクターまでの距離 x 2
マージンを最大にすることで、未知データにも対応しやすくなる(汎化性能が高い
SVMのマージン最大化 マージン 決定境界(分離超平面) サポート ベクター サポート ベクター 凡例 クラスA クラスB 決定境界 ポイント マージンを最大化 → 汎化性能が高い
図2: SVMはマージンを最大化する決定境界を見つけるアルゴリズム
🔰 初心者

ハードマージンとソフトマージンの違いは何ですか?

🎓 上級者

ハードマージンは誤分類を一切許さないSVM、ソフトマージンはある程度の誤分類を許容するSVMだよ。現実のデータはきれいに分かれないことが多いので、通常はソフトマージンを使うんだ。

ハードマージンソフトマージン
誤分類一切許さないある程度許容する
対応できるデータきれいに分かれるデータのみノイズのある現実のデータ
スラック変数なしあり(ξ:クサイ)
スラック変数(ξ:クサイ)

ソフトマージンSVMで、各データ点がマージンの内側にどれだけ入り込んでいるか(=どれだけ誤分類を許しているか)を表す変数。

ξの値意味
ξ = 0マージンの外側で正しく分類されている
0 < ξ < 1マージンの内側だが、正しいクラス側にいる
ξ ≥ 1誤分類されている
最適化の式のイメージ

最小化 = マージンの逆数 + C x Σξ

C(正則化パラメータ): 誤分類をどれだけ許すかの調整
・Cが大きい → 誤分類を厳しく罰する(ハードマージンに近づく)
・Cが小さい → 誤分類を多めに許す(マージンを広く取る)

🔰 初心者

直線で分けられないデータはどうするんですか?

🎓 上級者

カーネルトリックを使うんだ。データを高次元空間に写像して線形分離可能にする手法で、実際に高次元に変換する計算をせず、カーネル関数で効率的に計算できるから「トリック」と呼ばれるんだよ。

カーネル用途
線形カーネルそのまま直線で分離できる場合
多項式カーネル曲線的な境界が必要な場合
RBF(ガウス)カーネル最もよく使われる。複雑な境界に対応
SVMの長所SVMの短所
汎化性能が高い(マージン最大化)大規模データでは計算コストが大きい
過学習しにくいパラメータ(C、カーネル)の調整が必要
カーネルで非線形にも対応基本的に2クラス分類(多クラスは工夫が必要)
少量データでも有効結果の解釈が難しい
回帰への応用

SVMを回帰に使ったものがSVR(Support Vector Regression)。マージン内にデータを収めるように回帰する。

🌳 決定木(Decision Tree)
🔰 初心者

決定木ってどんなアルゴリズムですか?

🎓 上級者

条件分岐(if-then)を繰り返してデータを分類・予測する手法だよ。フローチャートのような木構造を作るんだ。解釈しやすいホワイトボックスモデルの代表例だね。

用語意味
ルートノード(根)最初の分岐点(一番上)
内部ノード(節)途中の分岐点
リーフノード(葉)最終的な予測結果(末端)
深さ(depth)ルートからの分岐回数
決定木のツリー構造(ローン審査の例) 年齢 > 30? Yes No 年収 > 500万? 拒否 Yes No 承認 拒否 ルートノード (最初の分岐点) リーフノード (最終的な予測結果) 内部ノード 途中の分岐点。条件を チェックして左右に振り分ける
図3: 決定木はif-thenの条件分岐で木構造を作り、リーフノードで予測結果を返す
🔰 初心者

分岐条件はどうやって決めるんですか?

🎓 上級者

「最もうまくデータを分けられる条件」を選ぶんだ。基準として情報利得ジニ不純度の2つがあるよ。不純度が低い=ほぼ1つのクラスだけ(良い分岐)ということだね。

指標説明使うアルゴリズム
情報利得(Information Gain)分岐で「不純度」がどれだけ下がったかID3, C4.5
ジニ不純度(Gini Impurity)クラスの混ざり具合(0に近いほど純粋)CART
アルゴリズム分岐基準特徴
ID3情報利得初期の決定木。カテゴリ変数のみ
C4.5情報利得比ID3の改良。数値変数も扱える
CARTジニ不純度分類にも回帰にも使える。2分岐のみ
決定木の長所決定木の短所
解釈しやすい(木を見れば判断理由がわかる)過学習しやすい(深くしすぎると)
前処理が少ない(正規化不要)境界が軸に平行な直線のみ(斜めには切れない)
カテゴリ・数値どちらも扱えるデータの小さな変化で木が大きく変わる(不安定)
過学習の対策:剪定(プルーニング)

木を深くしすぎると過学習するので、不要な枝を切り落とす

手法説明
事前剪定(Pre-pruning)木を育てる途中で深さや条件を制限して止める
事後剪定(Post-pruning)木を育てきってから、不要な枝を後から刈り込む
アンサンブル学習への発展

決定木の弱点(不安定・過学習しやすい)を補うために、複数の決定木を組み合わせる手法が生まれた。→ バギング(ランダムフォレスト)やブースティング(XGBoost)など。

📍 k近傍法(k-NN: k-Nearest Neighbors)
🔰 初心者

k-NNってどういう考え方のアルゴリズムですか?

🎓 上級者

新しいデータが来たら、一番近い既存データk個を見て多数決で分類する手法だよ。「似たものは近くにある」という考え方がベースになっているんだ。

k-NNのしくみ

1. 新しいデータと、すべての学習データとの距離を計算
2. 距離が近い順にk個選ぶ
3. そのk個の中で一番多いクラスに分類(多数決)。回帰の場合はk個の平均値
学習フェーズがなく、予測時にはじめて計算する怠惰学習(Lazy Learning)の代表例。
k-NN(k=5)の分類イメージ 特徴量1 特徴量2 新しいデータ k=5の範囲 多数決の結果 クラスA: 3個 クラスB: 2個 多数決 → クラスA 凡例 クラスA クラスB 新しいデータ
図4: k-NNは新しいデータの周囲k個の近傍点で多数決をとって分類する
kの値特徴
kが小さい(例: k=1)ノイズに敏感。過学習しやすい
kが大きい(例: k=100)滑らかだが大雑把。未学習になりやすい
🔰 初心者

距離の計算方法にも種類があるんですか?

🎓 上級者

そうだよ。代表的なのはユークリッド距離(直線距離)で、最もよく使われるんだ。kの決め方には交差検証(Cross Validation)を使うのが一般的だね。

距離説明
ユークリッド距離直線距離(最もよく使われる)
マンハッタン距離縦横の合計距離(格子状に移動する距離)
ミンコフスキー距離ユークリッドとマンハッタンを一般化したもの
k-NNの長所k-NNの短所
アルゴリズムが非常にシンプル予測が遅い(毎回全データとの距離を計算)
学習が不要(データを保存するだけ)大規模データでは計算コスト大
非線形の境界にも対応できる特徴量のスケールに影響を受ける(要正規化/標準化)
分類にも回帰にも使える高次元データでは精度が下がりやすい(次元の呪い
k-NNの注意点

怠惰学習(Lazy Learning)と呼ばれる。学習フェーズがなく、予測時にはじめて計算する。
距離ベースなので正規化・標準化が必須(スケールが違うと距離がおかしくなる)。
次元の呪い: 特徴量が多すぎると高次元空間では距離の差が小さくなり、うまく機能しなくなる。

🔔 ナイーブベイズ(Naive Bayes)
🔰 初心者

ナイーブベイズってどんなアルゴリズムですか?

🎓 上級者

ベイズの定理を使い、各クラスの確率を計算して最も確率が高いクラスに分類する手法だよ。特にテキスト分類(スパム判定など)で広く使われるんだ。

ベイズの定理

「結果から原因を推測する」確率の公式。

P(クラス|データ) = P(データ|クラス) x P(クラス) / P(データ)

用語意味例(スパム判定)
事前確率 P(クラス)データを見る前のクラスの割合全メールのうちスパムが30% → P(スパム)=0.3
尤度 P(データ|クラス)そのクラスでこのデータが出る確率スパムに「当選」が含まれる確率 → 0.8
事後確率 P(クラス|データ)データを見た後のクラスの確率(求めたいものこのメールがスパムである確率
🔰 初心者

「ナイーブ」って何が素朴なんですか?

🎓 上級者

特徴量がすべて互いに独立と仮定しているところが「ナイーブ(素朴・単純)」なんだ。例えば「当選」という単語と「無料」という単語が出る確率は独立と仮定する。現実には単語同士は関連しがちだけど、この仮定のおかげで計算が非常に高速になるんだよ。

種類特徴量の分布用途
多項分布ナイーブベイズ単語の出現回数(カウント)文書分類(最もよく使われる)
ベルヌーイナイーブベイズ単語の有無(0/1)短い文書の分類
ガウシアンナイーブベイズ連続値(正規分布を仮定)数値データの分類
ナイーブベイズの長所ナイーブベイズの短所
高速(学習も予測も速い)特徴量の独立仮定が現実に合わないこともある
少量データでも動作する独立でない特徴量が多いと精度が下がりやすい
テキスト分類に非常に強い確率値そのものは不正確になりがち
多クラス分類に自然に対応学習データにないカテゴリは確率0になる(要対策)

🎯 G検定ポイント(ナイーブベイズ)

🔄 教師あり学習の流れ
学習の4ステップ

1. データ収集:入力と正解ラベルのペアを用意
2. 学習:モデルがパターンを学習
3. 評価:テストデータで精度を確認
4. 予測:新しいデータに対して予測

🎯 G検定で押さえるべきポイント