本文へ移動

ホーム / ML / 第2部 機械学習の基礎

第2部 機械学習の基礎・第2章

機械学習の基礎と評価

★★★ 必須12トピック・面接 5問

モデルの選び方と、正しく評価する方法を押さえる。

2.1教師あり学習の手法

用語★★★ 必須
ひとことで

回帰と分類。線形モデル・決定木の勾配ブースティング・ニューラルネットの使い分け。

教師あり学習は、入力と正解(ラベル)の組から「入力 → 答え」の対応を学ぶ方法です。答えが数値なら回帰(例:来月の売上)、種類なら分類(例:不正か正常か)です。代表的な手法は次の3つで、データの形によって向き不向きがはっきりしています。

データの形で、最初に試す手法がほぼ決まる表形式のデータ数値とカテゴリの列勾配ブースティングLightGBM・XGBoost など画像・音声・文章構造のあるデータニューラルネット事前学習済みのモデルから少ない特徴量・説明が必須関係が単純線形モデルロジスティック回帰などまず試す
データの形で、最初に試す手法を選ぶ
手法得意なデータ長所注意点
線形モデル(線形回帰・ロジスティック回帰)特徴量が少なく関係が単純なもの速い・係数で説明しやすい・過学習しにくい組み合わせ(交互作用)や非線形は自分で特徴量にする必要がある
勾配ブースティング決定木(LightGBM・XGBoost・CatBoost)表形式のデータ(数値とカテゴリの列が並ぶもの)前処理が少なくても強い・欠損値を扱える・学習が速い外挿(学習した範囲の外)は苦手。木の数・深さで過学習する
ニューラルネット画像・音声・文章など構造のあるデータ大量のデータで表現そのものを学べるデータと計算が多く必要。表形式では勾配ブースティングに負けることも多い

回帰か分類かは、答えの種類で決まります。同じ「解約」でも、「解約するか」は分類、「何日後に解約するか」は回帰(または生存時間の分析)です。

面接ではこう答える

教師あり学習は、入力と正解の組から「入力から答え」への対応を学ぶ方法で、答えが数値なら回帰、種類なら分類です。手法はデータの形で選びます。表形式のデータなら勾配ブースティング決定木がまず強く、画像や文章のような構造のあるデータはニューラルネット、特徴量が少なく説明が必要なら線形モデルを使います。いずれの場合も、まず単純なベースラインを作ってから比べます。

ひとことで

小さな決定木を順番に作り、前の木が外した分を次の木が補うように足し合わせる手法。表形式のデータに強い。

勾配ブースティング決定木(GBDT)は、小さな決定木を何本も順番に作り、前の木が外した分(残差)を次の木が補うように足し合わせる手法です。表形式のデータでは、前処理が少なくても強いので、業務では LightGBM・XGBoost・CatBoost がまず試されます。

小さな木を順番に足し、前の木が外した分を次の木が補う木 1大まかに当てる外した分正解と予測の差木 2外した分を学ぶ外した分まだ残る差木 3 …くり返す予測 = 木1 + 学習率 × 木2 + 学習率 × 木3 + …学習率を小さくすると1本の影響が小さくなり、木の数が多く必要になる(そのぶん過学習しにくい)
勾配ブースティング:外した分(残差)を次の木が学ぶ
つまみ意味目安・注意
木の数(num_boost_round など)何本足すか多すぎると過学習。検証の成績で早期終了(early stopping)して決める
学習率(learning_rate)1本の木をどれだけ効かせるか0.05〜0.1 前後から。小さくすると木が多く要るが安定しやすい
木の大きさ(max_depth・num_leaves)1本の木で拾う条件の組み合わせの数大きいほど複雑な関係を拾えるが過学習しやすい
サンプリング(列・行の一部だけ使う)木ごとに使うデータを変えるばらつきを抑え、過学習を防ぐ

強み:列のスケールをそろえなくてよく、欠損値をそのまま扱え、「年齢が30以上かつ購入が3回未満」のような条件の組み合わせを自動で拾います。弱み:学習した範囲の外の値(過去最高を超える売上など)は予測できません(外挿が苦手)。ランダムフォレストは木を並列に作って平均する手法で、調整が少なく済む一方、精度は GBDT に届かないことが多いです。

面接ではこう答える

勾配ブースティング決定木は、浅い決定木を順番に足していき、前までの木が外した分を次の木が学ぶ手法です。列のスケールをそろえる必要がなく、欠損値も扱え、条件の組み合わせを自動で拾うので、表形式のデータではまず試す定番です。調整する主なつまみは木の数・学習率・木の大きさで、木の数は検証の成績を見ながら早期終了で決めます。弱点は外挿で、学習した範囲の外の値はうまく予測できません。

ひとことで

複雑なモデルの前に作る、比べるための単純な基準(多数派を答える・今のルール・単純なモデル)。

まず何も学習しない基準を作り、どれだけ上回るかで判断する評価指標(高いほど良い)基準多数派・平均を答える今のルールロジスティック回帰勾配ブースティング差が小さければ、データや課題を疑う
ベースラインから順に比べる(高さはイメージ)

ベースラインから始める:いきなり複雑なモデルを作らず、まず次の順に基準を作ります。

  • 何も学習しない基準:常に多数派のクラスを答える・平均値を答える・「先週と同じ」と答える。
  • ルールや単純なモデル:今の業務のルール、ロジスティック回帰。
  • 本命のモデル:勾配ブースティングなど。

基準があると「どれだけ良くなったか」が言えますし、複雑なモデルが基準とほとんど変わらなければ、データや課題設定のほうを疑うきっかけになります。よくある失敗は、ベースラインを作らずに精度 95% を喜んだら、実は全部「正常」と答えるだけでも 95% だった、というものです。

面接ではこう答える

ベースラインは、モデルの改善を測るための比較の基準です。まず何も学習しない基準、たとえば常に多数派を答える、平均を答える、先週と同じと答える、を作り、次に今の業務のルールやロジスティック回帰、最後に本命のモデルを作ります。基準があると「どれだけ良くなったか」が言え、複雑なモデルが基準とあまり変わらなければ、データや課題設定を疑うきっかけになります。

2.4過学習と汎化

用語★★★ 必須
ひとことで

学習データに合わせすぎて、新しいデータで外れること。検証データ・正則化・データを増やすことで防ぐ。

過学習は、モデルが学習データの細かい癖やノイズまで覚えてしまい、新しいデータで外れる状態です。テストの過去問を丸暗記して、少し変えた問題が解けない状態に似ています。反対に、新しいデータでも当たる力を汎化といいます。学習データでの成績が良く、検証データでの成績が悪ければ過学習を疑います。

学習を続けると、学習データの誤差は下がり続けるが、検証データの誤差は途中で上がり始める誤差学習の進み具合(エポック)ここで止める(早期終了)学習データ検証データ学習不足過学習(覚えすぎ)
学習曲線と過学習(形はイメージ)

過学習を防ぐ方法:

  • データを増やす(一番効く)。画像ならデータ拡張(反転・切り抜き)。
  • モデルを単純にする・正則化(重みが大きくなりすぎないよう罰を与える。L1・L2、ドロップアウト)。
  • 早期終了(early stopping):検証の成績が良くならなくなった時点で学習を止める。
  • 特徴量を減らす:意味のない列が多いと、偶然の関係を覚えやすい。

落とし穴:検証データでハイパーパラメーターを何百回も試すと、検証データにも過学習します。最後のテストデータは、選び終わるまで触らないのが原則です。

面接ではこう答える

過学習は、モデルが学習データの細かい癖やノイズまで覚えてしまい、新しいデータで外れる状態です。学習データでの成績は良いのに検証データでの成績が悪ければ、過学習を疑います。防ぐには、データを増やす、モデルを単純にする、正則化をかける、検証の成績が伸びなくなったら止める早期終了、などを使います。また、検証データで何度も選びすぎると検証データにも過学習するので、テストデータは最後まで触りません。

ひとことで

データを K 個に分け、検証に使う部分を替えながら K 回学習して、成績の平均とばらつきを見る方法。

データは、役割の違う3つに分けます。

データ使い方目安
学習(train)モデルの重みを決める全体の 60〜80%
検証(validation)ハイパーパラメーター(木の深さ・学習率など)やモデルを選ぶ10〜20%
テスト(test)最後に1回だけ、本番での成績を見積もる10〜20%。何度も見ると、テストに合わせて選んでしまう

大事なのは、本番と同じ条件で分けることです。同じユーザーの行が学習とテストの両方に入ると、そのユーザーを覚えただけで成績が良く見えます(ユーザー単位で分ける)。時間で変わるデータなら、過去で学習して未来でテストします(データリークを参照)。

交差検証(cross validation):データを K 個(よく 5 個)に分け、1つを検証、残りを学習に使うことを K 回くり返し、成績の平均とばらつきを見ます。データが少ないときでも評価が安定し、「たまたま良い分け方だった」を避けられます。クラスの比率をそろえる層化(stratified)、ユーザーなどのまとまりを分けないグループ単位、時系列で順に進める方法があります。

検証に使う部分を順番に替えて5回学習し、成績の平均とばらつきを見る1回目検証学習学習学習学習→ 成績 12回目学習検証学習学習学習→ 成績 23回目学習学習検証学習学習→ 成績 34回目学習学習学習検証学習→ 成績 45回目学習学習学習学習検証→ 成績 55回の成績の平均とばらつきで評価する(たまたま良い分け方を避けられる)
5分割の交差検証

面接ではこう答える

交差検証は、データを K 個、よく 5 個に分け、1つを検証、残りを学習に使うことを K 回くり返して成績の平均とばらつきを見る方法です。データが少ないときでも評価が安定し、たまたま良い分け方だった、という偶然を避けられます。分け方は問題に合わせ、クラスの比率をそろえる層化、同じユーザーを分けないグループ単位、時系列なら過去から未来へ進める方法を使います。

ひとことで

精度だけでは不十分。不均衡なデータでは適合率・再現率・AUC、ランキングでは NDCG などを使う。

評価指標は「何をもって良いモデルとするか」の約束です。精度(accuracy、全体のうち当たった割合)は分かりやすいですが、不正が 1% しかないデータでは「全部正常」と答えるだけで 99% になってしまいます。問題の種類と、間違えたときの損の大きさで指標を選びます。

混同行列:予測と実際の組み合わせで4つに分ける実際は陽性実際は陰性予測は陽性予測は陰性真陽性 TP正しく見つけた偽陽性 FP誤検知偽陰性 FN見逃し真陰性 TN正しく除外適合率 = TP ÷ (TP + FP)「陽性」と言った中の正解の割合再現率 = TP ÷ (TP + FN)本当の陽性のうち見つけた割合例:陽性が 1% のデータで「全部陰性」と答えると、精度は 99% でも再現率は 0%→ 陽性の扱いが大事な問題では、適合率・再現率・PR-AUC を見る
混同行列と適合率・再現率
指標意味(直感)使う場面
精度(accuracy)全体のうち当たった割合クラスの割合が近いときだけ。不均衡だと役に立たない
適合率(precision)「陽性」と言ったもののうち、本当に陽性だった割合誤検知のコストが高い(無実の人を止めたくない)
再現率(recall)本当の陽性のうち、見つけられた割合見逃しのコストが高い(病気・不正を逃したくない)
F1適合率と再現率の調和平均どちらも大事で1つの数字にまとめたい

適合率と再現率は、しきい値を動かすと片方が上がり片方が下がる関係にあります。どちらを重く見るかは、間違えたときの損で決めます。

しきい値に依らない指標(ROC-AUC・PR-AUC)

しきい値の決め方とビジネスの指標

面接ではこう答える

分類の評価は、混同行列、つまり正解と予測の組み合わせの4マスから始めます。適合率は「陽性と言ったもののうち本当に陽性だった割合」、再現率は「本当の陽性のうち見つけられた割合」で、しきい値を動かすと片方が上がり片方が下がります。不正が 1% しかないようなデータでは精度は役に立たないので、誤検知と見逃しのどちらの損が大きいかで、適合率と再現率のどちらを重く見るかを決めます。

2.7ROC-AUC と PR-AUC

用語★★★ 必須
ひとことで

しきい値を動かしたときの成績を曲線の面積で1つにまとめた指標。陽性が少ないなら PR-AUC を見る。

分類モデルの多くは「陽性らしさ」のスコアを出し、しきい値で陽性と陰性に分けます。しきい値をいろいろ動かしたときの成績を1つの数字にまとめたのが AUC(曲線の下の面積)です。

陽性がとても少ないと、ROC は良く見えても PR では差がはっきり出る偽陽性率再現率ROC 曲線再現率適合率PR 曲線ランダム面積 = ROC-AUCランダム = 陽性の割合面積 = PR-AUC
ROC 曲線と PR 曲線(形はイメージ)
ROC-AUCPR-AUC(平均適合率)
曲線の軸偽陽性率と再現率再現率と適合率
直感ランダムな陽性1件と陰性1件で、陽性を上に並べられる確率陽性をどれだけ純度高く拾えるか
ランダムなモデル0.5陽性の割合(1% なら 0.01)
向いている場面クラスの割合が極端でない。並べる力を比べたい陽性がとても少ない(不正・故障)

陽性が 0.1% のデータでは、陰性が圧倒的に多いので偽陽性率が小さく出て、ROC-AUC は 0.95 のように高く見えがちです。実際に上位を確認すると誤検知だらけ、ということがあります。陽性が少ない問題では PR-AUC か、「上位 N 件での適合率」を合わせて見ます。どちらの AUC もしきい値を決めてくれるわけではない点にも注意します。

面接ではこう答える

ROC-AUC は、しきい値を動かしたときの偽陽性率と再現率の曲線の面積で、ランダムに選んだ陽性と陰性のペアで、陽性を上に並べられる確率と解釈できます。ランダムなら 0.5 です。陽性がとても少ないデータでは偽陽性率が小さく出るため ROC-AUC は高く見えやすく、適合率と再現率の曲線の面積である PR-AUC のほうが差が分かりやすいです。どちらもしきい値は決めないので、運用ではしきい値を別に決めます。

ひとことで

スコアを何以上で陽性とするかの境目。0.5 とは限らず、確認できる件数や間違いの損で決める。

しきい値は「人が1日に確認できる件数」や「間違いの損」で決めるしきい値(低い → 高い)再現率(見つけた割合)適合率(言い当てた割合)確認できる件数で決めた点
しきい値を動かすと、適合率と再現率が逆向きに動く

しきい値も設計の一部:分類モデルは多くの場合「陽性らしさ」の確率を出し、それを何以上で陽性とするか(しきい値)は人が決めます。0.5 が正解とは限りません。「人が1日に確認できるのは 200 件」なら、上位 200 件での適合率で考えるほうが業務に合います。

ビジネスの指標との関係:モデルの指標(AUC など)はあくまで代わりの数字で、最終的に見たいのは売上・解約率・確認作業の時間などのビジネスの指標です。両者がつながっているかを確かめるには、次のようにします。

  • 間違いのコストを金額にする:見逃し1件で平均 5万円の損、誤検知1件で確認の手間 500円、のように置くと、しきい値を損得で決められます。
  • オフラインの指標が上がっても、A/B テストでビジネスの指標が動かないことはよくあります。オンラインで確かめるまで「改善した」とは言いません。
  • 1つの指標だけを追わず、悪化してはいけない指標(ガードレール指標。例:レイテンシ・苦情の数)も決めておきます。

面接ではこう答える

分類モデルは陽性らしさの確率を出すだけで、何以上を陽性とするかのしきい値は人が決めます。0.5 が正解とは限らず、たとえば人が1日に確認できるのが 200 件なら、上位 200 件の適合率で考えます。見逃し1件と誤検知1件の損を金額にすると、損が最小になるしきい値を選べます。最終的にはモデルの指標ではなく、ビジネスの指標が A/B テストで良くなるかで判断します。

分類以外の問題では、別の指標を使います。どれを選ぶかは、間違いのどの形が困るかで決めます。

指標意味使う場面・注意
MAE(平均絶対誤差)誤差の大きさの平均外れ値の影響を受けにくい。単位がそのままで説明しやすい
RMSE(二乗平均平方根誤差)誤差を2乗して平均し、平方根をとる大きな外れを強く罰したいとき
MAPE(平均絶対パーセント誤差)誤差を実際の値の割合で見る実際の値が 0 に近いと暴れる。需要予測では注意
対数損失(log loss)確率の予測がどれだけ正確か確率そのものを使う(入札・期待値の計算)
Recall@K正解のうち上位 K 件に入った割合推薦・RAG の候補を絞る段階
NDCG@K上位ほど重く数え、正解が上に並ぶほど高い検索・推薦の並べ替え
MRR最初の正解が何位にあるかの逆数の平均答えが1つあればよい検索・質問応答

確率を使う場合は、予測した確率と実際の割合が合っているか(キャリブレーション)も確かめます。「0.8 と予測した中で、本当に 8割が陽性か」です。ずれていれば、検証データで確率を補正します。

2.10データリーク

用語★★★ 必須
ひとことで

学習時に未来の情報や答えが混ざること。オフラインでは精度が高いのに本番で外れる原因になる。

データリークは、本番の予測の時点では手に入らない情報が学習データに混ざることです。モデルはその「答えのヒント」を使って当てるので、オフラインの評価はとても良いのに、本番ではヒントがなくて外れます。AUC が 0.99 のように良すぎるときは、まずリークを疑います。

予測の時点より後に分かる情報を使うと、オフラインだけ良くなる予測の時点(基準日)使ってよい:基準日までの購入・ログリーク:基準日より後の購入・解約日夜間バッチで翌日に届くデータは注意ラベル(正解)を作る期間過去 ← 時間 → 未来
予測の時点より後の情報は、特徴量に使えない
よくあるリーク例防ぎ方
答えから作られた列解約予測に「解約手続き日」「退会理由」の列が入っている各列が「いつ・どうやって」作られるかを確かめる
未来の情報3月1日時点の予測に、3月中の購入回数を使っている基準日より前のデータだけで特徴量を作る
前処理での混入全データで平均・標準偏差を出してから分けた。全データで特徴選択をした分けてから、学習データだけで前処理を学ぶ(パイプラインにまとめる)
同じ対象の重複同じユーザー・同じ患者・ほぼ同じ画像が学習とテストの両方にあるユーザー単位・グループ単位で分ける。重複を取り除く
後から上書きされたデータマスタの「現在の住所」「最新のランク」を過去の予測に使っている履歴(いつ時点の値か)を持ったテーブルを使う

リークは一度入ると気づきにくいので、特徴量の重要度の上位に「怪しいほど効く列」がないかを毎回確かめる習慣をつけます。

面接ではこう答える

データリークは、本番の予測の時点では手に入らない情報が学習データに混ざることです。たとえば解約予測に解約手続き日の列が入っている、基準日より後の購入回数を使っている、全データで正規化してから分けた、などです。モデルはその答えのヒントで当てるので、オフラインの評価はとても良いのに本番では外れます。AUC が良すぎるときや、重要度の上位に怪しい列があるときは、まずリークを疑い、各列がいつ作られるかを確かめます。

別のページで開く →

DBラボを読み込んでいます…

2.11時系列での分け方

用語★★★ 必須
ひとことで

時間で変わるデータは、過去で学習し、その後の期間でテストする。ランダムに分けると未来の情報が混ざる。

時系列での分け方:時間で変わるデータを、ランダムに分けてはいけません。ランダムに分けると、未来の行で学習して過去の行を当てることになり、本番より甘い評価になります。次のように、過去で学習し、その後の期間でテストします。

学習:2025-01 〜 2025-12 | 検証:2026-01 〜 2026-02 | テスト:2026-03 〜 2026-04
時系列のデータは、過去で学習してその後の期間で評価する1回目学習評価2回目学習評価3回目学習評価時間空き(ギャップ):ラベルが決まるまでの期間。空けないと評価の期間の情報が入るランダム評価学習× 未来の行で学習して過去の行を当てることになり、本番より甘い評価になる
時系列での分け方(ウォークフォワード)
  • 何度も試すなら、窓をずらしながら「学習 → 次の1か月で評価」をくり返します(ウォークフォワード)。
  • ラベルが決まるまでに時間がかかる場合(例:「30日以内に解約したか」)は、学習の期間の終わりとテストの始まりの間に 30日の空き(ギャップ)を入れます。空けないと、テスト期間の情報がラベルを通して学習に入ります。
  • 特徴量は「予測する時点で、そのデータはもうシステムに届いているか」で考えます。夜間のバッチで翌日に届くデータは、当日の予測には使えません。

面接ではこう答える

時間で変わるデータをランダムに分けると、未来の行で学習して過去の行を当てることになり、本番より甘い評価になります。そこで、過去の期間で学習し、その後の期間で検証とテストをします。何度も試すなら、窓をずらしながら学習と次の期間での評価をくり返すウォークフォワードを使います。ラベルが決まるまでに時間がかかる場合は、学習とテストの間に空きを入れて、ラベルを通した情報の混入を防ぎます。

ひとことで

見つけたいクラスがとても少ないデータ。重み・サンプリング・指標の選び方で対処する。

不正・故障・解約のように、見つけたいもの(陽性)がとても少ないデータを不均衡なデータといいます。そのまま学習すると、モデルは多数派を答えるだけで損失が小さくなり、陽性をほとんど拾いません。

陽性 1%・陰性 99%。「全部陰性」と答えても精度は 99%陰性 99%陽性 1%(見つけたいもの)重みを付ける陽性の誤りを重くサンプリング陰性を減らす・陽性を増やす指標を変えるPR-AUC・上位N件
不均衡なデータ:精度が当てにならない
方法やり方注意点
クラスの重み陽性の誤りを損失の中で重く数える(class_weight・scale_pos_weight など)まずこれ。データを捨てずに済む
アンダーサンプリング陰性を間引いて比率を近づける学習が速くなる。出てくる確率は高めにずれるので補正が要る
オーバーサンプリング陽性を複製する・似たデータを作る(SMOTE など)分ける前に行うとリークになる。表データでは効かないことも多い
指標と しきい値PR-AUC・上位 N 件の適合率で評価し、しきい値を調整するサンプリングより効くことが多い

サンプリングや重みで学習すると、出力の確率が実際の割合からずれます。確率そのものを使う(期待損失を計算する)なら、検証データで確率を補正(キャリブレーション)します。また、サンプリングは学習データだけに行い、検証・テストは本番と同じ比率のまま評価します。

面接ではこう答える

不均衡なデータとは、不正が 1% しかないように、片方のクラスがとても少ないデータです。そのまま学習すると多数派を答えるだけになりやすいので、陽性の誤りを重く数えるクラスの重みや、陰性を間引くサンプリングを使います。評価は精度ではなく PR-AUC や上位 N 件の適合率で行い、検証とテストは本番と同じ比率のままにします。サンプリングで確率がずれた場合は補正します。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • 教師あり学習の代表的な手法と、過学習・汎化
  • 目的に合った評価指標を選べる
  • 教師あり学習の手法:回帰と分類。線形モデル・決定木の勾配ブースティング・ニューラルネットの使い分け。
  • 勾配ブースティング決定木:小さな決定木を順番に作り、前の木が外した分を次の木が補うように足し合わせる手法。表形式のデータに強い。
  • ベースラインから始める:複雑なモデルの前に作る、比べるための単純な基準(多数派を答える・今のルール・単純なモデル)。
  • 過学習と汎化:学習データに合わせすぎて、新しいデータで外れること。検証データ・正則化・データを増やすことで防ぐ。
  • 学習・検証・テストの分け方と交差検証:データを K 個に分け、検証に使う部分を替えながら K 回学習して、成績の平均とばらつきを見る方法。
  • 分類の評価指標(混同行列):精度だけでは不十分。不均衡なデータでは適合率・再現率・AUC、ランキングでは NDCG などを使う。
  • ROC-AUC と PR-AUC:しきい値を動かしたときの成績を曲線の面積で1つにまとめた指標。陽性が少ないなら PR-AUC を見る。
  • しきい値とビジネスの指標:スコアを何以上で陽性とするかの境目。0.5 とは限らず、確認できる件数や間違いの損で決める。
  • データリーク:学習時に未来の情報や答えが混ざること。オフラインでは精度が高いのに本番で外れる原因になる。
  • 時系列での分け方:時間で変わるデータは、過去で学習し、その後の期間でテストする。ランダムに分けると未来の情報が混ざる。
  • 不均衡なデータの扱い:見つけたいクラスがとても少ないデータ。重み・サンプリング・指標の選び方で対処する。

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1不均衡なデータの分類で、どの指標を使いますか?

模範回答

精度(accuracy)は使いません。陽性が 1% なら、全部陰性と答えるだけで 99% になり、モデルの良し悪しが分からないからです。代わりに、陽性クラスに注目した適合率と再現率を見ます。誤検知と見逃しのどちらが高くつくかで重みを決め、どちらも大事なら F1、しきい値に依らずに比べたいときは PR-AUC を使います。陽性がとても少ないと ROC-AUC は高めに出やすいので、PR-AUC のほうが差が分かりやすいです。

実務では、たとえば「1日に人が確認できる件数」を上位 K 件として、その中の適合率や、見逃しと誤検知のコストを金額にした期待損失でしきい値を決めます。

深掘りされたら

  • 不均衡なデータで学習するとき、クラスの重み付けやサンプリングはどう使いますか?

見られているポイント精度ではなく適合率・再現率・PR-AUC と理由

Q2オフラインの評価は良いのに本番で効かない原因は?

模範回答

主に3つを疑います。1つ目はデータリークで、未来の情報や答えから作った列が学習に入っていると、オフラインだけ良く見えます。時系列で分けているか、各特徴量が予測の時点で本当に手に入るかを確かめます。2つ目は分布のずれで、学習したときと今とでユーザーや季節が違う、あるいは学習と推論で特徴量の作り方が違う(training-serving skew)場合です。本番の入力をログに残して学習データと比べます。

3つ目は指標の不一致で、オフラインで見ている AUC などの指標が、ビジネスの指標とつながっていないことがあります。たとえば推薦でクリックの予測が上がっても、すでに買うつもりの商品を出しているだけなら売上は増えません。順にこの3つを切り分けます。

深掘りされたら

  • 学習と推論で特徴量が一致しているかを、どう確かめますか?

見られているポイントリーク・分布のずれ・指標の不一致

Q3過学習とは何ですか?どう見つけて、どう防ぎますか?

模範回答

過学習は、モデルが学習データの癖やノイズまで覚えてしまい、新しいデータで外れる状態です。学習データの成績は良いのに、検証データの成績が悪い、あるいは学習を続けると検証の誤差が上がり始める、という形で見つけます。

防ぎ方は、データを増やすのが一番効きます。ほかに、モデルを単純にする・正則化をかける・検証の成績が良くならなくなったら止める(早期終了)・意味のない特徴量を減らす、などです。また、検証データでパラメーターを試しすぎると検証データにも合わせてしまうので、最後のテストデータは選び終わるまで使いません。

深掘りされたら

  • 交差検証はどんなときに使いますか?

見られているポイント学習と検証の差で見つける・複数の対策・テストデータの扱い

Q4表形式のデータで、まずどのモデルを試しますか?

模範回答

まず何も学習しない基準(多数派を答える・平均を答える)と、ロジスティック回帰のような単純なモデルで基準を作り、そのうえで LightGBM などの勾配ブースティングを試します。勾配ブースティングは、列のスケールをそろえなくてよく、欠損も扱え、列の組み合わせも自動で拾うので、表データでは強いことが多いからです。

ニューラルネットは、データがとても多い・文章や画像の列がある、といった場合に検討します。単純なモデルと差が小さければ、モデルより特徴量やデータの質を見直します。

深掘りされたら

  • 勾配ブースティングで過学習しないように、どのパラメーターを調整しますか?

見られているポイントベースラインから始める・表データでの勾配ブースティングの強み

Q5分類のしきい値はどう決めますか?

模範回答

0.5 に固定せず、業務の条件から決めます。たとえば、人が1日に確認できるのが 200件なら、スコアの上位 200件を陽性にして、その中の適合率を見ます。見逃しと誤検知のコストが分かるなら、それぞれ1件あたりの損を金額にして、期待される損が一番小さいしきい値を選びます。

注意点は、検証データで決めたしきい値が、本番でデータの分布が変わると合わなくなることです。陽性と判定する割合を監視し、必要なら見直します。

深掘りされたら

  • 確率そのものを使う場合、何を確かめますか?

見られているポイント業務の制約やコストからしきい値を決める