始める無料で始める

最適な L1 罰則係数を見つける

ここでは L1 正則化の C パラメータをチューニングし、モデルの複雑さを抑えつつ、性能指標を良好に保てる値を見つけます。可能な C 値について for ループを回し、各候補でロジスティック回帰を構築し、性能指標を計算します。

候補値を含むリスト C は用意されています。配列 l1_metrics は3列で作成され、1列目に C、2列目と3列目は非ゼロ係数の数とモデルの再現率のプレースホルダーです。スケーリング済みの特徴量と目的変数は、学習用に train_X, train_Y、テスト用に test_X, test_Y として読み込まれています。

numpypandas はそれぞれ nppd として、また sklearn から recall_score 関数も読み込まれています。

この演習はコースの一部です

Pythonで学ぶマーケティングのための機械学習

コースを見る

演習の手順

  • リスト C の長さに基づき、0 からその範囲で for ループを回します。
  • C 候補について、Logistic Regression を初期化して学習し、テストデータで churn を予測します。
  • C 候補について、非ゼロ係数の数と再現率を l1_metrics の第2列・第3列に保存します。
  • l1_metrics から適切な列名を付けて pandas の DataFrame を作成します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Run a for loop over the range of C list length
for index in ___(0, len(C)):
  # Initialize and fit Logistic Regression with the C candidate
  logreg = ___(penalty='l1', C=C[___], solver='liblinear')
  logreg.fit(___, train_Y)
  # Predict churn on the testing data
  pred_test_Y = logreg.___(test_X)
  # Create non-zero count and recall score columns
  l1_metrics[index,1] = np.___(logreg.coef_)
  l1_metrics[index,2] = recall_score(___, pred_test_Y)

# Name the columns and print the array as pandas DataFrame
col_names = ['C','Non-Zero Coeffs','Recall']
print(pd.DataFrame(l1_metrics, columns=___))
コードを編集して実行