質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

1回答

1445閲覧

scikit-learnのlogistic regressionの正則化強度の逆数パラメータの妥当性や決め方について

sequelanonymous

総合スコア123

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

0グッド

0クリップ

投稿2021/03/08 01:00

参考にしたページ1
参考にしたページ2

タイトルに有る通り、C=1e20の正則化強度の逆数パラメータのチューニング方法ですが、デフォルトでは1でありますが、1e20としているコードを多々みかけます。
普段利用して慣れている方は、このパラメータの決め方や妥当性の確認は、scikit-learnを利用した場合、どうされていますでしょうか?

python

1from sklearn.linear_model import LogisticRegression 2 3model = LogisticRegression(C=1e20)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C:float, default=1.0

Inverse of regularization strength; must be a positive float. Like in support vector machines, smaller values specify stronger regularization.

sklearn.linear_model.LogisticRegression — scikit-learn 0.24.1 documentation

からして……

  • 1e20など極端に大きい値を設定した場合、事実上正則化が働きません。

  • ちなみに、デフォルトの正則化はL2正則化です。


「多々みかけます」ってあんまり見ない気もするのですが、

思いっきし過学習させたセッティングの方が性能が出るんじゃね
or
実験としてそういうシチュエーションで動かします

ということかと思われます。でも、あまり常識的ではない気がします。

通常のチューニングであれば、常識的な値の範囲(せいぜい-1e2から1e2くらい?)で他のパラメータと合わせてグリッドサーチをやることになるかと思います。左記の例なら、1桁ずつ試して5通りとか。


とはいっても、ロジスティック回帰のL2正則化なら、どんな値にしてもそこまでの大差はない気がします。デフォルトの1のままでも大抵の場合はいけるくらいです。

ロジスティック回帰は完全に線形分離可能なデータだと過学習します。特徴量が割と高次元だったりすると何かしらの線形分離は可能だったりし、それはあんまりよくない事態を招いたりはしそうなので、そこそこの正則化をかけておくのはセオリーです。でも、あんまりよくない事態を招かない値であれば、正直大差はありません。また、そもそも完全に線形分離できないデータであれば、やっぱり大差はないかと思われます。
(ただし正則化かけすぎてフィッティングできない、は論外)

ロジスティック回帰の過学習について調べる - Qiita

L1とかelasticnetで正則化するときは事情が異なります。L1の場合は正則化パラメータ次第で落ちる特徴量の数が決まるので、L2のときより真面目に正則化のチューニングをした方が良いです。というか、そうしないと使い物になりません。elasticnetの場合も、L1とL2を両方かけるという趣旨ですから、Cl1_ratioでグリッドサーチしないと適切なパラメータを選べないと思います。

投稿2021/03/31 20:07

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問