はじめに
こんにちは、keygoroです。
今回は、sklearnのlogistic regressionCVについてのメモです。よく使いそうなパラメータ設定やアトリビュートについて書きます。
logistic regression CV とは?
logistic regression CVは、sklearnの線形回帰モジュールの1つで、ロジスティック回帰におけるハイパーパラメータをクロスバリデーションによって探索した上でモデルを作成してくれるものです。
通常のlogistic regression では、正則化パラメータを自力で探索したうえで設定する必要がありますが、logistic regression CVは自動でやってくれるので楽です。
logistic regression CV
logistic regression CVでは以下のようにパラメータを設定できます。
clf = LogisticRegressionCV(Cs=10,
fit_intercept=True,
cv=None,
dual=False,
penalty='l2',
scoring=None,
solver='lbfgs',
tol=0.0001,
max_iter=100,
class_weight=None,
n_jobs=None,
verbose=0,
refit=True,
intercept_scaling=1.0,
multi_class='auto',
random_state=None,
l1_ratios=None)
今回は以下のように設定した場合について説明します。
clf = LogisticRegressionCV(Cs=10,
cv=10,
penalty='l2',
scoring='roc_auc')
上のように設定した場合、以下のような過程でモデルが作成されます。
- Cs×CV の数だけモデルが作成される。今回の場合は100個作成される。
モデル数:100 - Cの値ごとにモデルのスコアの平均をとる。
モデル数:100 -> 10 - スコアが最も良いパラメータを最適なパラメータとして採用する。
モデル数:10 -> 1
パラメータとアトリビュートについて
パラメータとよく使いそうなアトリビュートの仕様についてまとめます。
パラメータ
- Cs
- 正則化の強さCの候補を設定するパラメータです。数字またはリストを渡します。
- 数字を渡した場合、 $1\times10^{-4}$ から$1\times10^{4}$の間を対数スケールで分割し、最適なCの値を探索します。
- ロジスティック回帰なので、値が小さいほど正則化が強くなります。
- cv
- クロスバリデーションの数を設定します。
- Cs×cvの数だけモデルが作成されます。
- penalty
- 正則化の種類を{‘l1’, ‘l2’, ‘elasticnet’}の中から設定します。
- scoring
- 最適なパラメータを選択するための評価指標を指定します。
- 何も設定しない場合、'accuracy'が評価指標となります。
- 設定可能な評価指標は以下のコードを実行することで確認できます。
sklearn.metrics.get_scorer_names()
アトリビュート
- coefs_paths_
- Cs×cv の数だけモデルの回帰係数を出力します。
- coef_
- 最適なパラメータのモデルの回帰係数を出力します。
- Cs_
- パラメータCの候補の値を出力します。
- C_
- 選ばれた最適なCの値を出力します。
- scores_
- Cs×cv の数だけモデルのスコアを出力します。
終わりに
今回は、sklearnのlogistic regression CVについて一部まとめました。アトリビュートで何が出力されているのかわからなくて調べた経験があったので、同じ境遇になった方に役に立つと嬉しいです。今後なにかあれば追記・修正します。