ロジスティック回帰 ロジスティック回帰 (簡単な紹介)

ロジスティック回帰は、ロジスティック回帰分析とも呼ばれ、機械学習の教師あり学習に属する一般化線形回帰分析モデルです。その導出プロセスと計算方法は回帰プロセスに似ていますが、実際には主に二項分類問題を解くために使用されます (複数の分類問題も解くことができます)。指定された n セットのデータ (トレーニング セット) によってモデルをトレーニングし、トレーニング後に 1 つ以上の指定されたデータ セット (テスト セット) を分類します。データの各セットは p 個のインジケーターで構成されます。

--他の人から転送された

(1) ロジスティック回帰で処理したデータ

ロジスティック回帰ではデータを分類してカテゴリを決定します。まず、n 人の身長、体重、カテゴリを調べます。

(線または平面の) モデルをトレーニングします。散乱点を平面の両側に分割します

(2) アルゴリズム原理

まず、二項分類問題を扱います。2 つのカテゴリに分かれているため、一方のラベルを 0、もう一方のラベルを 1 とします。

シグモイド関数を使用して、0 ~ 1、0.5 より大きい、0.5 より小さい x を入力します。

\sigma (x)=\frac{1}{1+e^{-x}}

に設定

h(\textup{x}^{i})=\frac{1}{1+e^{-(\textup{w}^{T}\textup{x}^{i}+b)}}

これはテスト セットの i 番目のデータであり、p 次元の列ベクトルです\begin{pmatrix} x^{i}_{1}&x^{i}_{2}&...&x^{i}_{p}\end{}^{T}

w は p 次元の列ベクトルで、\textbf{w}=\begin{pmatrix}w_{1}&w_{2}&...&w_{p} \end{}^{T}要求されるパラメーターです。

b は数値であり、要求されるパラメータでもあります。

w^{T}x+bの場合、結果は であることがわかりましたw_{1}x_{1}+w_{2}x_{2}+...+w_{p}x_{p}+bそれで、私たちは置くことができます

 W が書かれ\begin{pmatrix}w_{1}&w_{2}&...&w_{p}&b \end{}^{T}、x が書かれます\begin{pmatrix}x_{1}^{i}&x_{2}^{i}&...&x_{p}^{i}&1 \end{}^{T}w^{T}x+b次のように書くことができます:

 h(\mathbf{x}^{i})=\frac{1}{1+e^{-\textbf{w}^{T}\textbf{x}^{i}}}

これにより、別のパラメータ b を w に組み込むことができます。また、後で推測するのにも非常に便利です。もちろん、最初の形式を使用してそれを行うこともできますが、本質は同じです。その後、トレーニング サンプルに従ってパラメータ w が計算されます。

(3) パラメータの解決

(1) 最尤推定

つまり、イベントが発生するとき、その確率は最大になります。

サンプル i は確率とy_{i}\epsilon (0,1)見なされます。h(\mathbf{x}_{i})yi が 1 に対応する場合、確率は h(xi)、つまり xi が 1 に属する可能性、yi が 0 に対応する場合、確率は 1- 、つまり xi が 0 に属する可能性ですh(\mathbf{x}_{i})次に、最尤関数を構築します。

\prod _{i=1}^{i=k}h(x_{i})\prod _{i=k+1}^{n}(1-h(x_{i}))

ここで、0 から k までの i はカテゴリ 1 に属する番号 k であり、k+1 から n までの i はカテゴリ 0 に属する番号 nk です。y はラベル 0 または 1 であるため、上記の式は次のように書くこともできます。

                                                         \prod _{i=1}^{n} h(\mathbf{x}_{i})^{y_{i}}(1-h(\textbf{x}_{i}))^{1 -y_{i}}

 y が 0 か 1 かに関係なく、便宜的にどちらかが 0 の累乗、つまり 1 になります。対数をとり、最大値を求めるには、式にマイナス 1 を掛けて最小値を求めます。n データの累積値が非常に大きいため、次を使用します。

L(\textbf{w})=\frac{1}{n}\sum_{i=1}^{n} -y_{i}ln(h(\mathbf{x}_{i}))- ( 1-y_{i})ln(1-h(\textbf{x}_{i}))

 最小値を見つける方法は数多くありますが、機械学習では勾配降下級数法が一般的に使用されます。ニュートン法や導関数がゼロのときのwの値なども使用できます。

(2) 損失関数

一般的に使用されるクロスエントロピーまたは二乗損失関数

ロジスティック回帰のいくつかのパラメータについて説明する

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 は newton-cg と IBfgs の 2 つをサポートし、sag は l2 正則化をサポートします

2デュアル:

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

True の場合、二重形式が解決されます。ペナルティ = 'l2' およびsolver='liblinear' の場合にのみ二重形式が存在します。通常、サンプル数が特徴の数より大きい場合、デフォルトは False です。 、そして元の形式は解決されます。

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

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

どのステップに落ちるかを設定できます

4.C

浮動小数点数、デフォルト:1.0

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

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

切片があるかどうかに関係なく、デフォルトは True です。

6.intercept_scaling:float、default :1.0

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

特徴抽出は非常に便利です

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

class_weight パラメーターは、分類モデル内のさまざまなタイプの重みを示すために使用されます。省略することもできます。つまり、重みを考慮しないことも、すべてのタイプの重みを同じにすることもできます。入力を選択した場合、バランスを選択してクラス ライブラリに型の重みを計算させることも、各型の重みを自分で入力することもできます。たとえば、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、デフォルト:なし

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

9.ソルバー:'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', '多項'},デフォルト:'ovr'

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

ovr を選択した場合、liblinear、newton-cg、lbfgs、sag の 4 つの損失関数最適化手法を選択できます。ただし、多項式を選択した場合は、newton-cg、lbfgs、sag のみを選択できます。

12.冗長: int、デフォルト:0

ログの詳細度。反復の途中でログ出力のオン/オフを切り替えるために使用されます。

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

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

14.n_jobs:int、デフォルト:1

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

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

おすすめ

転載: blog.csdn.net/jcandzero/article/details/127820864