To the code at last! First, we have the first stage, which is exactly the same as the T-Learner.
from sklearn.linear_model import LogisticRegression
np.random.seed(123)
# first stage models
m0 = LGBMRegressor(max_depth=2, min_child_samples=30)
m1 = LGBMRegressor(max_depth=2, min_child_samples=30)
# propensity score model
g = LogisticRegression(solver="lbfgs", penalty='none')
m0.fit(train.query(f"{T}==0")[X], train.query(f"{T}==0")[y])
m1.fit(train.query(f"{T}==1")[X], train.query(f"{T}==1")[y])
g.fit(train[X], train[T]);
Now, we impute the treatment effect and fit the second stage models on them.
d_train = np.where(train[T]==0,
m1.predict(train[X]) - train[y],
train[y] - m0.predict(train[X]))
# second stage
mx0 = LGBMRegressor(max_depth=2, min_child_samples=30)
mx1 = LGBMRegressor(max_depth=2, min_child_samples=30)
mx0.fit(train.query(f"{T}==0")[X], d_train[train[T]==0])
mx1.fit(train.query(f"{T}==1")[X], d_train[train[T]==1]);
Finally, we make corrected predictions using the propensity score model.
def ps_predict(df, t):
return g.predict_proba(df[X])[:, t]
x_cate_train = (ps_predict(train,1)*mx0.predict(train[X]) +
ps_predict(train,0)*mx1.predict(train[X]))
x_cate_test = test.assign(cate=(ps_predict(test,1)*mx0.predict(test[X]) +
ps_predict(test,0)*mx1.predict(test[X])))
ABは実際にCを出現させる のか、それとも他の文字の集合を出現させる のか?
それが問題なのだ。表面上は関連性があるように見えるが...
それが単なる関連性なのか、それともABが実際にCを引き起こすのかを理解するにはどうすればいいのか。
統計的推論が因果推論とどう違うか、読めますよね?
もちろん、あなたは最も偉大な第一人者であり、人々にポイントを与える余裕があるが、私はできない。
この本の他のどの部分に同意できないのですか、いや、むしろ、この本の他のどの部分に理解できなかったのですか?
私は反対だとはどこにも書いていない。
私は、よく知られた概念に新しいラベルを貼ることには反対だ
既知の概念に霧を かけるのは非常に不親切だ。
著者はわざわざ線形回帰の適用限界を述べている。マイナス1点。
本文中には
1. 線形回帰は定常ランダム過程に適用できる
2. 線形回帰のフィットからの残差は正規分布でなければならない。
もしこれが彼の例で当てはまらず、逆も述べられていないなら、彼の推論の全てはわずかである。
この本に書かれている因果関係についての推論は、すべていつもの「誤った相関関係」の推論である。
メタ・ラーナーズは、スコアを除いたモデルのアンサンブルではない。
この本の本文によれば、「メタ学習者」は従来のモデルに適合/予測した結果/成果 である。著者がもう一度、ごく普通の概念に新たなラベルを貼らなければ、私の考えをより正確に表現する機会があっただろう。
だから、はっきりさせておこう。
モデルのアンサンブルは、古くからある確立されたアイデアである。入力は下位モデルの出力であり、出力は信号である。下位モデルの結果を組み合わせる方法、つまり「メタ学習者」を組み合わせる方法はたくさんある。著者は、フィッティングの結果を組み合わせる3つの変形を考えている。2番目と3番目の変形は、勾配ブスティング・モデルの結果を組み合わせる。第3のバリエーションでは、第1レベルの出力は、勾配ブースティング・モデル(gradient bousting model)に従って結合される。
ここに、この意味不明な文章がある:
それが問題なんだ。表面上は関連性があるように見えるが...
それが単なる関連性なのか、それとも実際にABがCを引き起こしているのか、どうやって判断するんだ?
これらの線がすぐにわかるものなのか、それとも一文字ずつ現れるものなのか、はっきりしない。何がこれらの文字を出現させるのか。もし単なるパターンの羅列だとしたら、この課題はあまり形式化されていないように見える。なぜ文字列の長さが選ばれたのか、その他もろもろ。もしかしたら、データは正しい形で表現されていないかもしれない。
本を読めば答えが見つかるかもしれない。
サンユ、コズルは複雑なトピックで、誰もが一目で理解できるものではない。理解できないことがあっても、そこに何か間違ったことが書かれているわけではない。
苦しみたくなければ苦しむ必要はない。そうしないと、数珠のたとえのようになる。
サンユ、コズルは複雑なトピックで、誰もが一目で理解できるものではない。理解できないことがあっても、そこに間違ったことが書かれているわけではない。
苦しみたくなければ苦しむ必要はない。
コズール-これは宣伝の手口であり、この本全体は、数理統計学の最も普通の規定の、普通ではない目新しさの宣伝以外の何物でもない。しかし、数理統計学は本当に難しいテーマだ。
何百ページにも及ぶ文章の結果がここにある:
私がプログラミングを理解する限り、与えられたコードは動作するコードではない。どこから来たのかわからない関数、結果が何にも代入されていない関数、関数の引数はゼロから。
マキシムは本質的な議論が絶望的にできない。
このフォーラムで、私があげた本のコードのコピーを理解している人はいるのだろうか?
私自身、いくつかのモデルの結果を組み合わせるために異なるアプローチを適用している。
この本の付録には、このカフエラのすべてがまったく無意味であることを語る、驚くべき一節がある:
"
予測指標が因果モデルにとって危険な理由」。
とその結論である:
言い換えれば 、 ランダムなデータセットにおける予測性能は、因果推論においてモデルがどの程度優れているかという私たちの好みを翻訳するものではない 。
ヤンデックス翻訳
予測性能が因果モデルにとって危険な理由
言い換えれば 、 ランダムなデータセット における予測性能は、因果推論においてモデルがどれだけ優れて いるかという私たちの嗜好を翻訳するものではない。
つまり、著者にとって最も重要なのは因果推論そのものであり、それを使おうとすると、全体の構築の美しさが損なわれてしまう。
カンニング!