はじめに
分析をしましょうとなったとき、何から手を付けたらよいかわからないという人もいるかと思います。この記事はまずその足掛かりになればと思い記載します。
この記事の位置づけ
以下の記事を作成予定です。
- 問題設定・基礎分析
- 効果検証・ABテスト
- データ解釈・特徴量エンジニアリング
- 教師あり学習 ←今回
- 数理最適化
- 分析結果のセルフチェック観点
機械学習とは
機械学習とは、データから規則性を見つけ出し、未知のデータに対して予測や判断を行う仕組みです。
つまり「過去の経験から学び、未来を推測する」ことがポイントになります。
モデルはあくまで「過去のデータの範囲内で見つけた規則性」をもとにしているため、学習していないパターンや分布外のデータに対しては、精度が大きく落ちるかもしれません。
例えば、以下のような状況ではうまく予測できないことがあります。
- トレーニングデータに存在しないケース
- 分布が大きく変わったケース
機械学習を活用するには「何を予測したいか」「どんな情報を使うか」を明確に設定する必要があり、以下を設定する必要があります。
- 目的変数(ターゲット):予測したい対象(例:売上金額、離反する/しない など)
- 説明変数(特徴量):予測に使う情報(例:年齢、利用回数、過去の購入履歴 など)
種類の大別
- 教師あり
- 正解付きで学ぶ
- 回帰:数値を予測
- 分類:カテゴリを予測
- 教師なし
- 正解なしで構造を見つける
- クラスタリング:似たもの同士のグループ化
- 次元削減:特徴を圧縮して可視化・前処理
- 主成分分析(PCA)/ t-SNE / UMAP
- 異常検知:普通と違うデータを見つける
- 強化学習
- 試行錯誤で最適な行動を学ぶ
教師あり機械学習の手法
- 決定木(Decision Tree)
- 特徴量の値に基づいてデータを分岐させていくシンプルなモデル。解釈性が高く、前処理が少なくて済むのが利点
- アンサンブル(Random Forest / Gradient Boosting)
- 複数の弱い学習器(例:決定木)を組み合わせて性能を高める手法。
- 線形回帰
- 目的変数と説明変数が線形関係にあると仮定して予測。予測値が連続値のときに用いる。
- ロジスティック回帰
- 二値分類で用いられる。シグモイド関数を使って確率に変換する点が特徴。
- SVM(Support Vector Machine)
- マージン最大化により境界を引く分類器。特徴量が少ないときに効果を発揮しやすい。
- ニューラルネットワーク(NN)
- 非線形性や複雑な関係性を学習できるが、学習に時間がかかる。
前処理
- データ型の確認
- 数値型なのかカテゴリ型なのかで処理が変わる
- IDやコード値を数値のまま使うと、その数値に意味がなくとも「大小関係がある」と誤解される
- スケーリング/正規化
- 特徴量のスケールが揃っていないと、距離ベースや正則化を使うモデルで偏りが出る
- 標準化、Min-Maxスケーリングなどで対処
- カテゴリ変数のエンコード
- モデルによっては文字列をそのまま扱えない
- One-Hotエンコーディングやターゲットエンコーディング
- 特徴量選択/次元削減
- 不要な特徴量はノイズになり、過学習の原因になる
- 相関の高い変数を整理したり、PCAなどで情報を圧縮
- 欠損値補完
- モデルによっては欠損値が扱えず、データが減る
- 削除か補完かをケースに応じて選ぶ
- 平均値や中央値補完、前後の値での補間、線形補完など
気を付けるべきこと
- データリーク
- 学習時に未来の情報が混ざると異様に精度が高く出る
- 例:予測対象とほぼ同じ意味を持つ変数が含まれている場合
- 例:当月の購買予測をするモデルで、月末時点での会員ランクが説明変数として含まれる
- 多重共線性
- 説明変数同士が強く相関していると回帰モデルの係数が不安定になる
- 似た変数に対して回帰モデルは「どちらかに大きなプラス」「もう一方に大きなマイナス」みたいな変な係数を割り振って帳尻合わせすることがある
- VIFなどで確認
- 過学習
- 学習データにだけ高精度で、未知データに対して十分に予測できない
- 対策:正則化、クロスバリデーション、特徴量の整理
- データの不均衡
- クラス分類で片方のラベルが極端に少ないケース
- 一方のクラスが極端に少ないと、精度が高そうに見えても実際は役立たない
- 例:離反率1%のデータで「全員離反しない」と予測すれば正答率99%
- 対策:オーバーサンプリング、クラス重みの調整
評価指標
どの指標が適切かは業務のリスク構造で決める
-
回帰
- RMSE(Root Mean Squared Error:二乗平均平方根誤差)
- 誤差の二乗を平均、外れ値に敏感
- 使う場面:売上や金額など、誤差が大きいケースを特に避けたいとき
- MAE(Mean Absolute Error:平均絶対誤差)
- 誤差の絶対値を平均、外れ値の影響を受けにくい
- 平均的にどのくらい外れているかを知りたいとき
- 使う場面:需要予測など、全体的に平均的な精度を見たいとき
- R²(決定係数)
- 「どのくらい目的変数を説明できたか」の割合
- 使う場面:モデルの説明力をざっくり確認するとき
- RMSE(Root Mean Squared Error:二乗平均平方根誤差)
-
分類
予測: Positive 予測: Negative 実際: Positive True Positive (TP) False Negative (FN) 実際: Negative False Positive (FP) True Negative (TN) - Accuracy(正解率) = (TP + TN) / (TP + TN + FP + FN)
- 全体のうち正しく予測できた割合
- 使う場面:クラスが均等に近いときのざっくり性能把握
- 注:不均衡データでは役に立たない(例:離反率1%なら「全員残る」と言えば99%)
- Precision(適合率)= TP / (TP + FP)
- 予測で「ポジティブ」と言ったもののうち、本当に正解だった割合
- 使う場面:誤検知を避けたいとき(例:不正検知で無駄に止めるのを減らしたい)
- Recall(再現率) = TP / (TP + FN)
- 実際にポジティブだったものをどれくらい見逃さずに検出できたか
- 使う場面:見逃しを避けたいとき(例:病気診断で陽性を見逃したくない)
- Specificity(特異度)= TN / (TN + FP)
- 実際に Negative だったものを、どれだけ正しく Negative と判定できたか
- F1スコア = 2 * Precision * Recall / (Precision + Recall)
- PrecisionとRecallの調和平均。両方をバランスよく評価
- 使う場面:誤検知と見逃し、両方が重要なとき
- ROC-AUC
- ROC曲線は False Positiveと True Positiveの関係を描いたもの
- AUCはその曲線下面積で、全体的な分類能力をみる
- クラスバランスが大きく崩れていないとき。モデルの総合力を評価したいとき
- PR-AUC(適合率–再現率曲線の下の面積)
- ポジティブクラスに注目したときのモデル性能
- 使う場面:不均衡データで重要(例:詐欺検知・離反予測)
- Accuracy(正解率) = (TP + TN) / (TP + TN + FP + FN)