利益:
- ジョブの実際のコストに応じて、問題のタイプ (分類、回帰、クラスタリング) と成功基準を定義する機能
- データを正直に (テスト セットには触れず、時系列順に) 分割し、漏れのない評価基準を確立する能力
- シンプルなベースラインから始めて、それに値する場合にのみ複雑さを追加することで、解釈可能なモデルを選択する機能。
これまでのところ、データを収集し、クリーンアップし、調査し、機能を作成してきました。ここからはモデルを構築する実際の作業に入ります。モデルは、データからパターンを学習し、新しい状況の予測を生成する数学的構造です。しかし、モデルの構築で最も重要な部分は、コード自体ではなく、それに先立つ 2 つの決定、つまり、適切な問題を定義することと、データを正しく分割することです。 AI は、アルゴリズムの選択、コードの作成、パラメーターの調整における強力なアドバイザーです。しかし、何を予測するか、そして成功が何を意味するかを決めるのは人次第です。問題が不明確に定義されている場合は、完全に記述されたモデルであっても機能しません。
まずは問題定義: 何を予測するか
すべてのモデリング ジョブは質問から始まり、この質問によってモデルのタイプが決まります。分類 — 出力は、「この顧客は離れるのか、それとも残るのか?」、「この取引は偽物なのか?」というカテゴリになります。回帰 (英語では回帰 - 出力は数値): 「この家の価値はいくらですか?」、「来月は注文が何件来ますか?」。クラスタリング (ラベルのないデータを自然なグループに分割する): 「顧客はいくつの自然なセグメントに分割されますか?」
問題ステートメントの 2 番目の部分は達成基準です。このモデルが「良好」であるとは何を意味しますか?詐欺モデルでは、詐欺師を見逃すことは、誠実な顧客を誤ってブロックするよりもはるかに高いコストがかかります。したがって、「一般的な正確さ」ではなく、「詐欺師を捕まえる率」が重要になります。ビジネスオーナーと一緒に最初からこの基準を定義しないと、機能しない「高精度」モデルが完成することになります (指標についてはユニット 7 で詳しく説明します)。
注意: 「正確さ」という言葉は誤解を招く可能性があります。 1000 件の取引のうち 10 件が不正である場合、「不正な取引はありません」という愚かなモデルでは 99% の精度が得られますが、詐欺師は 1 人も捕まえることができません。問題の実際のコストに基づいて成功基準を選択します。
トレーニング/テストの分割: モデルの正直な検査
学習したデータを使用してモデルをテストすることは、学生に試験で勉強したのと同じ質問をするようなものです。彼は高い評価を得ていますが、実際に何を知っているかを示しません。そこで、データを 2 つ (多くの場合 3 つ) に分割します。
- トレーニング セット (英語のトレーニング セット、通常 70 ~ 80%): モデルはこれに基づいて学習します。
- テスト セット (テスト セット、通常 20 ~ 30%): モデルはこれをまったく認識しません。実際のパフォーマンスはここで測定されます。
- 検証セット: モデル設定に使用される中間セット (どのパラメーターが優れているか)。テスト セットを「クリーン」に保つためです。
最も基本的なルール: トレーニング中にテスト セットには決して触れません。スケーリング、コーディング、特徴選択 - すべてはトレーニング セットから単純に学習され、テストに適用されます (ユニット 5 の漏れ原理)。テスト セットは、モデルが初めて現実世界を認識するものです。オンにするのが早すぎると、本当のパフォーマンスを知ることができなくなります。
時系列の例外: データが時間に依存している場合 (販売、株式市場、需要)、ランダムな分割は行われません。ランダムな分割によりモデルは未来を見て過去を予測するため、これが漏れです。代わりに、時系列に分割します。古い期間でトレーニングし、新しい期間でテストします。
アルゴリズムの選択: 単純なものから複雑なものまで
初心者に最もありがちな間違いは、最も複雑なモデルから始めることです。正しいアプローチはその逆で、まず単純なベースラインを確立します。分類では「常に多数派クラスを推測する」。回帰では「常に平均を推定する」。この愚かなモデルはベースラインを与えます。実際のモデルがこれを通過できない場合は、問題があります。次に、シンプルで解釈可能なモデルに進みます。
モデル
問題の種類
強み
弱さ
ベースライン (大多数/平均)
両方
ベンチマークを与える
学ばない
ロジスティック回帰
分類
シンプルで解釈しやすい
線形関係のみ
線形回帰
回帰
シンプル、速い
線形仮定
デシジョンツリー
両方
解釈可能な
簡単な暗記
ランダムフォレスト
両方
強くて耐久性のある
解釈しにくい
勾配ブースティング (XGBoost など)
両方
とても強い
調整が難しく、暗記の危険性がある
ルール: 最も単純な「十分な」モデルを選択します。ほとんどのビジネスの状況では、解釈可能性の方が力よりも価値があります。ローンが拒否された場合は、「ブラックボックスがそう言ったから」よりも「収入に対する負債の比率が高いため」と説明する方が適切です。
ミニケース3個
ケース 1 — 問題の定義が正しくありません。チームは「顧客が満足しているか」に基づいて分類モデルを構築しましたが、成功基準として「正確さ」を選択しました。データによると、顧客の 88% が満足しています。このモデルは、全員を「満足」と判定することで 88% の精度を達成しましたが、本当の目標は不満のある人々を見つけることであったにもかかわらず、不満のある人々を捕まえることはありませんでした。教訓: 本当の目的に基づいて成功基準を選択してください。
ケース 2 — コンパートメント内の時間漏れ。需要予測プロジェクトでは、データがランダムに分割されました。このモデルは 93% の精度を示しましたが、トレーニングで 1 月、次に 11 月、そして 12 月のデータを予測したため、本番環境ではクラッシュしました。つまり、未来が見えていたのです。時系列分割に切り替えたところ、実績は74%まで上昇しました。教訓: 時系列の時系列分割。
ケース 3 — 不必要な複雑さ。あるアナリストはディープ ニューラル ネットワークを直接使用して数週間調整し、81% の精度を達成しました。次に、同僚が 20 行のロジスティック回帰で 80% を取得しました。これは、はるかに高速で解釈可能で、維持が容易です。教訓: ベースラインと単純なモデルから始めて、必要に応じて複雑さを追加してください。
コピー可能な 4 つのテンプレート
1) 問題定義を明確にする:
あなたの役割: モデリング コンサルタント。この仕事の定義を教えてください。「顧客離れを減らしたい」。私に質問して明確にしてください: (1) これは分類ですか、回帰ですか、(2) ターゲット変数とは正確に何で、どのように定義する必要がありますか、(3) 成功基準は何であるべきか、そしてその理由。決定は私にあります。あなたは質問と選択肢を提示します。
2) 安全なトレーニング/テストコンパートメント:
私のDFをトレーニング/テストに80%/20%に分割しました。クラス分布を維持します (階層化).random_state=42。これは時系列 (独立した観測) ではありません。除算後の各セットのクラス比を出力します。変換を適用せずに、分割コードをテスト セットに与えるだけです。
3) 時系列時系列区分:
データは時間に依存します (日付列: order_date)。ランダムではなく、時系列に分割します。最も古い 80% がトレーニング、最も新しい 20% がテストです。将来のデータが漏洩していないことを確認できるように、トレーニングとテストの日付範囲を印刷します。
4) ベースラインの設定:
分類の問題があります (ターゲット: チャーン 0/1)。まずベースラインを確立します。DummyClassifier を使用してトレーニング/テストの精度を測定します。DummyClassifier は常に多数派のクラスを予測します。次に、単純なロジスティック回帰をトレーニングし、ベースラインを上回るかどうかを比較します。 2 つのメトリクスを並べて表示します。
弱いプロンプト / 強いプロンプト
弱いプロンプト:
このデータを使用して最適なモデルを構築します。
「最高」とは定義されていません。問題の種類も、目標も、成功基準も、分割戦略もありません。 AI はランダムなパターンを生成しますが、おそらく漏洩します。
強力なプロンプト:
あなたの役割: モデリングアシスタント。問題: 分類、ターゲット「チャーン」(0/1)、クラスの不均衡があります (最大 12% のチャーン)。達成基準: 離脱者を呼び戻すことが優先事項です。データに依存しない観測 (時系列ではない)。タスク: (1) 80/20% 層化分割、(2) DummyClassifier ベースライン、(3) ロジスティック回帰、すべての変換はパイプライン内であり、トレーニングからのみ学習します。分割する前にテストセットに触れないでください。
ここでは、問題の種類、不均衡、基準、漏れ対策が明確です。
よくある間違い
- 本当の目的に従って成功基準を選択していない。不均衡なデータの「正確さ」は誤解を招きます。少数派層を取り込みたいなら、リコールが前面に出てきます。
- トレーニング中にテスト セットに触れた。分割前にスケーリング/エンコーディングを行うと漏れが発生し、実際のパフォーマンスが隠れてしまいます。
- 時系列でランダムに分割します。モデルは未来を見据えていますが、生産中に崩壊します。時系列で区切るのは必須です。
- ベースラインを確立せずに複雑なモデルに飛び込む。ベンチマークがなければ、モデルが本当に優れているかどうかを知ることはできません。
- 解釈可能性を無視します。ビジネス上の意思決定では、多くの場合、ブラック ボックスよりも単純で説明可能なモデルの方が価値があります。
ヒント: モデルの構築を開始する前に、「このモデルは _____ を予測します。その成功は指標 _____ によって測定されます。ジョブの真のコストは _____ であるためです。」という一文を書いてください。この文を記入できない場合は、まだコードを書く準備ができていません。
要約すると
モデルの構築で最も重要な部分はコードではなく、それに先立つ決定です。つまり、適切な問題 (分類または回帰、目標は何か、達成基準は何か) を定義し、データを公平に分割します (テスト セットには触れず、時系列に沿って)。常に単純なベースラインから始めて、それに値する場合にのみ複雑さを追加してください。ほとんどのビジネス状況では、解釈可能性が権力よりも重視されます。 AI はアルゴリズムの選択とコードの強力なアドバイザーですが、何を予測するか、そしてその理由を決定するのは人間です。
アプリケーションタスク
予測問題を定義し、次の文を書面で完成させます。「このモデルは ___ (分類/回帰) を予測します。ターゲットは ___、達成基準は ___ です。なぜなら ___。」次に、適切な戦略 (時系列の場合は時系列) でデータを分割し、ベースラインを確立し、単純なパターンがそのベースラインを破るかどうかを測定します。
チェックリスト
- [ ] 問題の種類 (分類/回帰) とターゲットを明確に定義していますか?
- [ ] ジョブの実際のコストに基づいて成功基準を選択しましたか?
- [ ] トレーニング中にテスト セットをそのままにしておきましたか?
- [ ] 時系列なら時系列で区切ったかな?
- [ ] 複雑なモデルに進む前にベースラインを確立しましたか?