σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
scikit-learn スキル›モジュール 1 · エスティメータの作法›トピック 1.5·~50 分中級

リークを防ぐパイプライン

スキル上の位置モジュール 1/4 · トピック 5/5
1.5 リークを防ぐパイプライン
—ラボスコア— / 100合計XP—連続日数—

静かな漏洩

リークとは、テスト行の情報が評価される前にモデルへ届くことです。分かりやすい形(明日の価格から作った特徴量)は避けやすいのですが、静かな形は前処理に潜みます。最良の列を選ぶ、スケーリングする、欠損を埋めるといった操作を全行で行い、そのあとで交差検証のために分割する場合です。どのテスト分割もすでに選択に影響しており、スコアは甘くなります。特徴量選択は最悪の犯人です。ノイズ列が100本あれば、どんな標本でも予測力があるように見える列が数本は必ずあります。それを全データで選ぶと、テスト分割はまさにその分割に合ったから選ばれた列によって部分的に「予測」されることになります。構造的な解決は Pipeline です。cross_val_score にパイプライン全体を渡せば、各学習期間でスケーリング・選択・モデルを学び直し、そのあとでテスト期間を採点します。

このラボは意図的に難しい問いを使います。他の60資産の前日リターンで、今日SPYが上がるかを予測できるか。見つかるものはほとんどありません。リークのある評価(全行で SelectKBest(f_classif, k=5)、その後 TimeSeriesSplit で交差検証)のAUCは 0.534、正直な評価(スケーラー・選択器・ロジスティック回帰を1つのパイプラインに入れ、各期間で学び直す)は 0.512 です。間の 0.022 は純粋なリークです。中身も見られます。cross_validate(model, X, y, cv=..., return_estimator=True) は学習済みパイプラインを返し、estimator.named_steps['select'].get_support(indices=True) で各分割が選んだ列が分かります。5分割のうち毎回選ばれた列は1本だけで、これがノイズに対する選択の姿です。パイプラインで計算したスコアは擁護できますが、「全体にちょっと前処理した」後のスコアはできません。

  • まず分割、学習はそのあと:スケーリング、選択、補完はすべて交差検証のループの内側に置く。
  • Pipelineはリーク防止の柵:cross_val_score にパイプライン全体を渡せば、各段が学習期間ごとに学び直される。
  • 各分割が何を選んだかを見る:分割ごとに変わる列はシグナルでなくノイズ。

ラボ:採点される内容

  • リークのある評価15点
  • パイプライン10点
  • 正直な評価15点
  • 各分割が選んだもの20点
  • リークの大きさ10点
  • 実データでの比較30点
エクスプローラー · lab-sl-15
▾ lab-sl-15
▾ data
…
bash · ブラウザ内
learner@quantcraft:~/lab-sl-15$
Pythonは未読み込みPythonLn 1, Col 1Spaces: 4UTF-8

このトピックをリセットしますか?

lab-sl-15 の内容はすべてスターターファイルに戻り、ターミナルも消去されます。現在の解答は失われ、元に戻せません。

リセットされるもの
  • main.py → スターターコード
  • ターミナル履歴とテスト出力
  • 未提出の変更
保持されるもの
  • ラボの最高スコア
  • XPと連続日数
  • 講義の進捗とメモ

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、スキルでの現在地
アカウントを作成ログイン
または
GitHubで続ける