いくつかの偽のデータにロジスティック曲線を当てはめたところです。データは基本的にステップ関数にしました。
data = -------------++++++++++++++
しかし、当てはめた曲線を見ると、勾配は非常に小さいです。クロスエントロピーを仮定して、コスト関数を最小化する関数がステップ関数です。なぜステップ関数のように見えないのですか?デフォルトで行われるL1またはL2の正規化はありますか?
いくつかの偽のデータにロジスティック曲線を当てはめたところです。データは基本的にステップ関数にしました。
data = -------------++++++++++++++
しかし、当てはめた曲線を見ると、勾配は非常に小さいです。クロスエントロピーを仮定して、コスト関数を最小化する関数がステップ関数です。なぜステップ関数のように見えないのですか?デフォルトで行われるL1またはL2の正規化はありますか?
回答:
はい、デフォルトで正則化があります。これは、定数1のL2正則化のようです。
これをいじってみたところ、定数が1のL2正則化によって、sci-kitが正則化を指定せずに学習したものとまったく同じように見えるフィットが得られることがわかりました。
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
と同じです
model = LogisticRegression(penalty="l2", C=1)
model.fit(X, y)
を選択するとC=10000
、ステップ関数によく似たものが得られました。
penalty='none'
。 scikit-learn.org/stable/whats_new.html#id15