私は、同じ共変量であるが、データと応答変数がわずかに異なる、約1000の同様のロジスティック回帰を実行しています。私の応答変数はすべて、疎通成功です(通常、p(成功)< .05)。sklearnロジスティック回帰は偏った結果をもたらすか?
私はLRを次のように実行します。成功する数と失敗する数をそれぞれの設定(設計行列の行)に持つ「success_fail」という行列があります。私は正則回帰で、結果は一貫して、トレーニングデータで観察されるよりも多くの「成功」を予測するようにバイアスされていることに気づいた
(sklearnバージョン0.18)
skdesign = np.vstack((design,design))
sklabel = np.hstack((np.ones(success_fail.shape[0]),
np.zeros(success_fail.shape[0])))
skweight = np.hstack((success_fail['success'], success_fail['fail']))
logregN = linear_model.LogisticRegression(C=1,
solver= 'lbfgs',fit_intercept=False)
logregN.fit(skdesign, sklabel, sample_weight=skweight)
:私はとLRを実行します。私が正規化を緩めると、この偏見は消え去る。観察された偏りは私のユースケースでは受け入れられませんが、正規化されたモデルは少し良く見えます。
Iは、これらの回帰のためのパラメータ推定値を見:
以下、IはCの2つの異なる値について1000の異なる回帰の結果をプロットし、各点は、一つのパラメータである未満です。それは、インターセプト(左下の点)がC = 1モデルにとって高すぎるようです。
どうしてですか?どうすれば修正できますか? Sklearnに迎撃を少なくすることはできますか?
liblinearソルバーを使用していますか?あなたのsklearnバージョンは何ですか? normalize = Trueを使用しますか? – TomDLT
投稿を編集してこの情報を追加しました – phdscm