ロジスティック回帰のパラメータ(詳細解説)

LogisticRegression(penalty='l2'、dual=False、tol=0.0001、C=1.0、fit_intercept=True、intercept_scaling=1、class_weight=None、random_state=None、solver='liblinear'、max_iter=100、multi_class='ovr '、verbose=0、warm_start=False、n_jobs=1)

詳細なパラメータの説明:

1. ペナルティ: str 型、正則化項目の選択。正則化には、l1 と l2 の 2 つの主なタイプがあり、デフォルトは l2 正則化です。

「liblinear」は l1 と l2 をサポートしますが、「newton-cg」、「sag」、および「lbfgs」は l2 正則化のみをサポートします。

2.dual:bool(True、False)、デフォルト:False

True の場合、デュアル フォームを解きます。penalty='l2' および solver='liblinear' の場合のみ、デュアル フォームが存在します。通常、サンプル数がフィーチャ数より多い場合、デフォルトは False です。となり、元の形が解けます。

3.tol: float、デフォルト:1e-4

解を停止する基準、既定の誤差が 1e-4 を超えない場合、それ以上の計算を停止します。

4.C:フロート,デフォルト:1.0

正則化係数 λ の逆数; 0 より大きい float でなければなりません。SVM と同様に、値が小さいほど正則化が強くなります。通常、デフォルトは 1 です。

5.fit_intercept:bool(True、False),デフォルト:True

切片があるかどうか、デフォルトは True です。

6.intercept_scaling:float,デフォルト:1.0

ソルバーを "liblinear" および fit_intercept=True として使用する場合にのみ役立ちます。この場合、x は [x,intercept_scaling] になります。つまり、intercept_scaling に等しい定数値を持つ「合成」フィーチャがインスタンス ベクトルに追加されます。注: 合成フィーチャの重みは、他のすべてのフィーチャと同様に l1/l2 正則化の対象となります。合成特徴の重み (および切片) に対する正則化の影響を減らすには、intercept_scaling を増やす必要があります。これは人工の a フィーチャに相当し、フィーチャは常に 1 であり、重みは b です。

7.class_weight:dict または 'balanced',デフォルト:なし

class_weight パラメータは、分類モデル内のさまざまなタイプの重みを示すために使用されます. 省略できます.つまり,重みが考慮されないか,すべてのタイプの重みが同じです. 入力を選択した場合は、balanced を選択して、クラス ライブラリに型の重みを自分で計算させるか、各型の重みを自分で入力することができます.たとえば、0,1 のバイナリ モデルの場合、class_weight を定義できます。 ={0:0.9, 1:0.1}、このようにタイプ 0 は 90% の重みを持ち、タイプ 1 は 10% の重みを持ちます。

class_weight がbalanced を選択した場合、クラス ライブラリはトレーニング サンプル サイズに基づいて重みを計算します。特定のタイプのサンプル サイズが大きいほど重みは低くなり、サンプル サイズが小さいほど重みは高くなります。class_weight が釣り合っている場合、クラスの重みの計算方法は次のとおりです。 n_samples / (n_classes * np.bincount(y)) (n_samples はサンプル数、n_classes はカテゴリ数、np.bincount(y) は各クラスのサンプル数) .

8.random_state:int,default:なし

乱数シード、int 型、オプションのパラメーター。デフォルトは none です。正則化最適化アルゴリズムが sag、liblinear の場合にのみ役立ちます。

9.solver:'newton-cg','lbfgs','liblinear','sag','saga',デフォルト:liblinear

liblinear: オープン ソースの liblinear ライブラリを使用して実装し、内部で座標軸降下法を使用して損失関数を反復的に最適化します。

lbfgs: 準ニュートン法の一種で、損失関数の 2 次微分行列、つまりヘッセ行列を使用して、損失関数を繰り返し最適化します。

newton-cg: これは一種のニュートン法ファミリーでもあり、損失関数の二次導関数行列、つまりヘッセ行列を使用して、損失関数を繰り返し最適化します。

sag: 勾配降下法の変形である確率的平均勾配降下法. 通常の勾配降下法との違いは、サンプルの一部のみを使用して各反復で勾配を計算することです。多くのサンプルデータ。

saga: 線形収束確率最適化アルゴリズム。

小さなデータセットの場合は「liblinear」を選択できますが、大きなデータセットの場合は「sag」と「saga」の方が高速です。

複数クラスの問題の場合、'newton-cg'、'sag'、'saga'、'lbfgs' のみが複数の損失を処理します; 'liblinear' は 1 つの損失に制限されます (つまり、liblinear を使用する場合、複数の損失がある場合)。カテゴリの問題では、最初に 1 つのカテゴリを 1 つのカテゴリとして、残りのすべてのカテゴリを別のカテゴリとして取得します。類推によって、すべてのカテゴリをトラバースして分類します。)

3 つの最適化アルゴリズム 'newton-cg'、'lbfgs'、および 'sag' は L2 ペナルティのみを処理します (これら 3 つのアルゴリズムは、損失関数の 1 次または 2 次の連続導関数を必要とします)。一方、'liblinear' と 'saga' は、 L1 および L2 ペナルティを処理します。

10.max_iter:int ,デフォルト:100

newton-cg、sag、および lbfgs ソルバーでのみ使用できます。ソルバーが収束するまでの最大反復回数。

11.multi_class:str,{'ovr', 'multinomial'},デフォルト:'ovr'

'ovr': one-vs-rest 戦略を使用します。'multinomial': 多クラスのロジスティック回帰戦略を直接使用します。

ovr を選択すると、liblinear、newton-cg、lbfgs、sag の 4 つの損失関数最適化手法を選択できます。ただし、多項式を選択すると、newton-cg、lbfgs、sag しか選択できません。

12.verbose:int,デフォルト:0

ログの冗長性。反復の途中でログ出力をオン/オフするために使用されます。

13.warm_start:bool(True、False),デフォルト:False

ホット スタート パラメーター。True の場合は、以前のトレーニング結果を使用してトレーニングを続行します。それ以外の場合は、最初からトレーニングを開始します。liblinear ソルバーには役に立ちません。

14.n_jobs:整数,デフォルト:1

並列数、int 型、デフォルトは 1 です。1 の場合は CPU の 1 コアを使用してプログラムを実行し、2 の場合は CPU の 2 コアを使用してプログラムを実行します。-1 の場合、すべての CPU コアを使用してプログラムを実行します。

要約:

ロジスティック回帰の目的は、非線形関数シグモイドの最適なパラメーターを見つけることであり、最適化アルゴリズムによって解決プロセスを完了することができます。

おすすめ

転載: blog.csdn.net/hu_666666/article/details/127457070