Python 機械学習 (5) ロジスティック回帰、決定境界、コスト関数、線形および非線形ロジスティック回帰を実現する勾配降下法

線形回帰によって解決される問題は、データセットの特性をモデルに導入し、誤差を最小限に抑える値を予測することであり、予測値は実際の値に限りなく近くなります。たとえば、住宅価格を予測するために、住宅の他の特性がモデルに導入されます。住宅価格は一連の連続値であり、線形回帰は教師あり学習を解決します。多くのシナリオによって予測される結果は必ずしも連続的であるとは限らず、解決したい問題は住宅価格の問題と必ずしも類似しているとは限りません。

分類問題

予測が赤血球であっても白血球であっても、赤血球と白血球はまったく異なるカテゴリーです。予測する場合は、まず履歴データを取得し、モデルをトレーニングし、次にモデルを繰り返し評価して理想的なモデルを取得します。次に、新しいデータをモデルに渡し、一連の予測を行って赤血球 (0) を取得する必要があります。または、白血球 (1) は、最も単純な二項分類問題です。
ここに画像の説明を挿入
線形回帰を使用して分類問題を解決する場合、y = 0 y=0y=0は赤血球、y = 1 y=1y=1は白血球です。データセットの表現を下の図に示します。このとき、2 つを分ける線を見つける必要があります。線形回帰を使用して行う場合は、最小コスト関数を考慮する必要があります。 (最小限のエラー)、もう 1 つは最適なデータを分離する必要があります。赤血球と白血球を分離するには、 h ( x ) >= 0.5 h(x) >= 0.5の場合、線上の値 (0.5) を取得します。h ( x )>=0.5の場合、取得された点は上にあり、予測結果は 1 になります。h ( x ) < 0.5 の場合、 h(x)<0.5h ( x )<0.5の場合、取得された点はそれを下回っており、予測結果は 0 になります。
ここに画像の説明を挿入
以下の図に示すように、データにもう 1 つのサンプル ポイントがある場合、フィッティング ラインの解は最小コスト関数になるはずで、フィッティング ラインは右に拡張されます (図の青い線)。 h ( x) = 0.5 の場合 h(x)=0.5h ( x )=0.5の場合、A エリアに表示される点は正確に 1 ではありません。つまり、データに異常なサンプル点が存在する場合、線形回帰モデルを用いて問題を解決すると、全体の予測が変わってしまうため、この際にロジスティック回帰アルゴリズムを導入する必要があります。
ここに画像の説明を挿入

ロジスティック回帰

ロジスティック回帰アルゴリズムは、現在最も人気があり、広く使用されているアルゴリズムの 1 つです。名前には回帰という言葉が含まれていますが、実際には分類問題を解決するために使用されます。一般的に使用されるシナリオ: データマイニング、病気の自動診断、経済予測、スパム分類など。ロジスティック回帰もディープ ラーニングではより重要であり、比較的古典的なアルゴリズムであり、その原理の多くはディープ ラーニングやニューラル ネットワークで使用されています。

ロジスティック回帰の実装

予測関数: h ( x ) = θ TX h(x)=θ^TXh ( x )=T Xの場合、予測値は 1 よりはるかに大きいか、0 よりはるかに小さくなり、分類できなくなります。目標:h ( x ) h(x)h ( x )は 0 と 1 の間で収束します。0 < = h ( x ) 0 < = 1 0<=h(x)0<=10<=h ( x ) 0<=1.
結果:シグモイド (ロジスティック) を使用します。sigmoid(ロジスティック)s i g mo i d ( Log i s t i c )関数、 g ( z ) = 1 1 + e − zg ( z)=\frac{1}{1+e^{-z } }g ( z )=1 + e−z _1。当 z z z は+∞ +∞に向かう傾向があります+ e − ze^{-z}ez は0 になる傾向があり、g ( z ) g(z)g ( z )は無限に 1 に近づく傾向があります。zz の場合z は− ∞ - ∞の傾向がありますe − ze^{-z}ez は+∞ +∞に向かう傾向があります+ g ( z ) g(z)g ( z )は無限に 0 になる傾向があります。
ここに画像の説明を挿入

h ( x ) h(x)を入れますh ( x )をg ( z ) g(z)に変換しますg ( z )g ( θ TX ) = 1 1 + e − θ TX g(θ^TX)=\frac{1}{1+e^{-θ^TX}} を取得します。g (TX_=1 + eTX _1、 g ( θ TX ) g(θ^TX)を使用できます。g (TX ) は0と 1 の間でマッピングされます。θ TX >= 0
ここに画像の説明を挿入
の場合TX _>=0 ,g (θ TX ) > = 0.5 g(θ^TX) >=0.5g (TX_>=0.5、1 に近い;θ TX < 0 θ^TX<0
の場合TX _<0g (θ TX ) < 0.5 g(θ^TX)<0.5g (TX_<0.5、0 に近い。この式は、h ( x ) = 1 1 + e − θ TX h(x)=\frac{1}{1+e^{-θ^TX}} と書くこともできます。h ( x )=1 + eTX _1
一連のデータがトレーニングされてモデルが生成され、新しいデータがモデルに代入され、予測結果が取得されます。結果は正確に 0 または 1 になることはなく、0 と 1 の間にある場合もあります。取得された結果 h ( x ) = 0.7 h(x)=0.7h ( x )=0.7 の場合、白血球 (1) の確率は 70%、赤血球 (0) の確率は 30% であると予測できます。それらのいずれかである確率:h ( x ) = P ( y = 1 ∣ x ; θ ) h(x)=P(y=1|x;θ)h ( x )=P (=1∣ x ;θ )、およびy = 1 y=1y=1条件xxxの確率; 次の間の確率の合計:P ( y = 1 ∣ x ; θ ) + P ( y = 0 ∣ x ; θ ) = 1 P(y=1|x;θ)+P(y= 0|x ;θ)=1P (=1∣ x ;+P (=0∣ x ;=1

  • 合計
    h ( x ) h(x)h ( x ) g(θTX) g(θ^TX)を使用g (TX ) は0と 1 の間で収束します。
    h ( x ) = g ( θ TX ) = P ( y = 1 ∣ x ; θ ) h(x)=g(θ^TX)=P(y=1|x;θ)h ( x )=g (TX_=P (=1∣ x ;θ )g ( z ) = 1 1 + e − zg(z)=\frac{1}{1+e^{-z}}g ( z )=1 + e−z _1
    θ TX > 0 , h ( x ) > = 0.5 θ^TX>0,h(x)>=0.5TX _>0 h ( x )>=0.5の場合、y = 1 y=1y=1
    θ TX < 0 , h ( x ) < 0.5 θ^TX<0,h(x)<0.5TX _<0 h ( x )<0.5 の場合、y = 0 y=0y=0

決定境界

ロジスティック回帰をより深く理解し、関数式x 1 x_1の意味を理解するのに役立ちます。バツ1×2×_2バツ2分布は特徴を表すため、h ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h(x)=g(θ_0+θ_1x_1+θ_2x_2)h ( x )=g (0+1バツ1+2バツ2)、後半はθ TX θ^TXTX_
下図のように、θ 0 = − 3 、θ 1 = 1 、θ 2 = 1 θ_0=-3、θ_1=1、θ_2=1 とする。0=3 i1=1 2=1θ TX = − 3 + x 1 + x 2 を取得します θ^TX=-3+x_1+x_2TX _=3+バツ1+バツ2- 3 + x 1 + x 2 > = 0 -3+x_1+x_2>=0の場合3+バツ1+バツ2>=0 はh ( x ) >= 0.5 h(x) >= 0.5h ( x )>=0.5、値が 1 に近い場合、y = 1 y=1y=− 3 + x 1 + x 2 < 0 -3+x_1+x_2<0の場合、 1 は1 に分割される可能性が高くなります。3+バツ1+バツ2<0h(x) < 0.5 h(x)<0.5h ( x )<0.5、値が 0 に近い場合、y = 0 y=0y=0は 0 に分割される可能性が高くなります。式に従って線を引くと、− 3 -3 x 1 = 0 x_1=0の場合、 3 は等号の右側に移動しますバツ1=0 ,x 2 = 3 x_2=3バツ2=3 ;x2 = 0 x_2 = 0バツ2=0 ,x 1 = 3 x_1=3バツ1=3、2 点間に線を引きます。線の上はx 1 + x 2 >= 3 x_1+x_2>=3 です。バツ1+バツ2>=3の部分ではカテゴリは 1 と予測され、同様にその線より下のカテゴリは 0 と予測されます。
ここに画像の説明を挿入

下図では、正のサンプルを十字、負のサンプルを丸で表していますが、このとき両者を直線で分けることはできません。先の線形回帰で、データが次の式で近似できない場合は、直線、多項式回帰が使用され、高次の式が追加されます。同じアプローチはロジスティック回帰にも使用できます。
h ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) h(x)=g(θ_0+θ_1x_1+θ_2x_2+θ_3x_1^2+θ_4x_2) ^2)h ( x )=g (0+1バツ1+2バツ2+3バツ12+4バツ22),ここで、θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 θ_0+θ_1x_1+θ_2x_2+θ_3x_1^2+θ_4x_2^20+1バツ1+2バツ2+3バツ12+4バツ22θ TX θ^TXに相当TX_
下図に示すように、θ 0 = − 1 、θ 1 = 0 、θ 2 = 0 、θ 3 = 1 、θ 4 = 1 θ_0=-1、θ_1=0、θ_2=0、θ_3=1、 θ_4= 10=1 i1=0 i2=0 i3=1 4=1を式に代入すると、θ TX = − 1 + x 1 2 + x 2 2 θ^TX=-1+x_1^2+x_2^2 がTX _=1+バツ12+バツ22,若− 1 + x 1 2 + x 2 2 > = 0 -1+x_1^2+x_2^2>=01+バツ12+バツ22>=0の場合、 θ TX = x 1 2 + x 2 2 > = 1 θ^TX=x_1^2+x_2^2>=1 を取得できますTX _=バツ12+バツ22>=1h ( x ) h(x)h ( x )の値が 0.5 より大きい場合、カテゴリは 1 に分割され、それ以外の場合、カテゴリは 0 に分割されます。x 1 2 + x 2 2 = 1 x_1^2+x_2^2=1バツ12+バツ22=1は原点を中心とし半径 1、つまり判定境界をもつ標準円であり、円の外側の点は半径より大きくカテゴリー 1 に属し、逆に円の内側の点は半径より小さい。カテゴリに属する​​半径は 0 です。決定境界はθ θθを決定するには、h ( x ) = 1 1 + e − θ TX h(x)=\frac{1}{1+e^{-θ^TX}}h ( x )=1 + eTX _1、1 および e は定数、X はデータ サンプル セット (特徴量)、θ θのみθはパラメータであり、θ が決定されている限りθθ は決定境界h ( x ) h(x)h ( x ) 、つまり境界h ( x ) h(x) は予測可能ですh ( x )の値。θ θ
ここに画像の説明を挿入
を解くθ値、線形回帰と同様に、θ θθはコスト関数に基づいているため、コスト関数が最小化されてθ θシータ値。

コスト関数

凸関数の大域最適解は 1 つだけですが、非凸関数が最適解を求めると、大域最小値ではなく局所最適解に陥る可能性が高くなります。非凸関数は勾配降下法によって大域最小値を達成できません。
ここに画像の説明を挿入
線形回帰によって定義されるコスト関数は次のとおりです。J ( θ ) = 1 2 m ∑ i = 1 m ( h ( xi ) − yi ) 2 J(θ)= \frac{1}{2m}\displaystyle{\sum_{ i=1}^{m}(h(x^i)-y^i)^2}J ( θ )=2m _1i = 1メートル( h ( xy2、実際の値の二乗和から予測値を引いたものを特徴の数で割ったもの、つまり平均二乗誤差です。このとき、h ( xi ) = θ 0 + θ 1 xih(x^i )=θ_0+θ_1x^ ih ( x=0+1バツi、コスト関数がロジスティック回帰に適用される場合、h ( xi ) h(x^i)h ( xi )は単純な線形回帰関係ではなくなりましたが、h ( x ) = 1 1 + e − θ TX h(x)=\frac{1}{1+e^{-θ^TX}}h ( x )=1 + eTX _1, 等号以降の内容をコスト関数全体に代入すると、グラフは非凸関数となり、大域最小値を求めるには不便です。目標: J ( θ ) J(θ)
となるような別のコスト関数を見つけます。J ( θ )は凸関数になります。
実現: 対数を使用してインデックスの影響を除去し、線形関係に変換し、対数を使用してインデックスをヘッジします。2 n = 4 2^n=42n=4 、 log 2 4 = n log_24=nに変換できます。ログ_ _24=nn = 2 n=2n=
解決策: 凸関数に変換します。単項の場合は、直接 2 次導関数を求めます。ゼロ以上の場合、凸関数です。多変量の場合は、ヘシアン行列を使用して解きます。正定性を伴います。
関数: 凸関数の局所最適解は大域最適解です。

  • y = 1 y=1y=1の場合、コスト関数C ost ( h ( x ) , y ) = − loge ( h ( x ) ) Cost(h(x),y)=-log_e(h(x))コスト( h ( x ) _ _y )=ログ_ _( h ( x ))
    コスト コストC ost は、現在のサンプルによって予測される損失です。P は確率、y = 1 y=1y=1の確率。
    y = 1の場合y=1y=1 ,h ( x ) h(x)コスト関数yyを最小化するには、 h ( x )は 1 に近い必要があります。yは実数値、カテゴリは 1、h ( x ) = P ( y = 1 ∣ x ; θ ) h(x)=P(y=1|x;θ)h ( x )=P (=1∣ x ;θ )は予測値が 1 である確率であり、確率が高いほど結果y = 1 y=1y=1 . h ( x ) = 1の場合h(x)=1h ( x )=1が最良の効果です。C ost = − loge ( h ( x ) ) = 0 Cost=-log_e(h(x))=0コスト_ _=ログ_ _( h ( x ))=0は、損失が最小であることを意味し、コスト関数は 0 です。h ( x ) = 0 h(x)=0
    の場合h ( x )=0h ( x ) = P ( y = 1 ∣ x ; θ ) h(x)=P(y=1|x;θ)h ( x )=P (=1∣ x ;θ )は予測値が 1 である確率、つまり 0 です。C ost ( h ( x ) , y ) = − loge ( h ( x ) ) Cost(h(x),y)=-log_e(h(x) )コスト( h ( x ) _ _y )=ログ_ _( h ( x ))は無限大であり、損失値は非常に大きくなります。
    ここに画像の説明を挿入
  • 当たりy = 0 y=0y=0の場合、コスト関数C ost ( h ( x ) , y ) = − loge ( 1 − h ( x ) ) Cost(h(x),y)=-log_e(1-h(x))コスト( h ( x ) _ _y )=ログ_ _( 1h ( x ))
    y = 0 y=0y=0 ,h ( x ) h(x)h ( x ) =1、C ost ( h ( x ) , y ) = − loge ( 1 − h ( x ) ) Cost(h(x),y)=-log_e(1-h(x))コスト( h ( x ) _ _y )=ログ_ _( 1h ( x )) は確率 0 で 1 の予測値を持ちます。log( 1 − h ( x ) ) log(1-h(x))l o g ( 1h ( x ))は無限大、それ以外の場合はh ( x ) h(x)h ( x )は 0 であり、y = 0 y=0y=0カテゴリ、−loge 1 = 0 -log_e1=0ログ_ _1=0 の場合、損失は最小限です。
    ここに画像の説明を挿入
    注: ロジスティック回帰の場合、予測確率カテゴリを区別する必要はありません。h ( x ) = P >= 0.5の場合h(x)=P>=0.5h ( x )=P>=0.5、1 に近い 1 のカテゴリに分割;h ( x ) = P < 0.5 の場合 h(x)=P<0.5h ( x )=P<0.5は 0 のカテゴリに分類され、0 になる傾向があります。
    上記 2 つのコスト関数はセグメント化され、θ θ実際の問題を解くためのθ値、およびy = 0 または 1 y=0 または 1y=0または1の場合、方程式を簡略化してコスト関数を見つけ、上記の 2 つの式を 1 つに統合すると、後の導出に便利です。C ost ( h ( x ) , y ) = − yloge ( h ( x ) ) − ( 1 − y ) loge ( 1 − h ( x ) ) Cost(h(x),y)=-ylog_e(h(x) ))-(1-y)log_e(1-h(x))コスト( h ( x ) _ _y )=yログ_ _( h ( x ))( 1y )ログ_ _( 1h ( x ))
    ここに画像の説明を挿入
    コスト ( h ( x ) , y ) コスト(h(x), y)コスト( h ( x ) _ _y )はサンプル データの損失であり、各サンプル点には損失があります。次の式を得るには、多くのサンプル点を統合し、合計してサンプル数で割って、マイナス記号を前に置く必要があります。クロスエントロピーでもあります。
    J ( θ ) = 1 m ∑ i = 1 m C ost ( h ( x ) , y ) = − 1 m ∑ i = 1 m [ yloge ( h ( x ) ) + ( 1 − y ) loge ( 1 − h ( x ) ) ] J(θ)= \frac{1}{m}\displaystyle{\sum_{i=1}^{m}コスト(h(x),y)}=-\frac{1}{ m}\displaystyle{\sum_{i=1}^{m}[ylog_e(h(x))+(1-y)log_e(1-h(x))]}J ( θ )=メートル1i = 1メートルコスト( h ( x ) _ _y )=メートル1i = 1メートル[ yログ_ _( h ( x ))+( 1y )ログ_ _( 1h ( x ))]
    ロジスティック回帰は非常に一般的に使用されるアルゴリズムであり、深層学習でも使用されます。この方程式は、統計における最大自然法を使用して、さまざまなモデルのパラメーターを迅速に見つけることができます。また、凸関数でもあるため、非凸関数の以前の問題を解決し、次の導関数を容易にします。

勾配降下法の導出

コスト関数:
J ( θ ) = = − 1 m ∑ i = 1 m [ yloge ( h ( x ) ) + ( 1 − y ) loge ( 1 − h ( x ) ) ] J(θ)= =-\frac {1}{m}\displaystyle{\sum_{i=1}^{m}[ylog_e(h(x))+(1-y)log_e(1-h(x))]}J ( θ )==メートル1i = 1メートル[ yログ_ _( h ( x ))+( 1y )ログ_ _( 1h ( x ))]
目標:θ θθ、つまりコスト関数J ( θ ) J(θ)J ( θ )が最小です。
置換法z = θ TX z=θ^TXz=TX ,g ( z ) g(z)g ( z )の導関数は 1 1 + e − z \frac{1}{1+e^{-z}}になります1 + e−z _1導関数1 + e − z 1+e^{-z}を計算します。1+ezの導出はe − ze^{-z}ez微分値に− z -zを乗算 z = θ TX z=θ^TXのzの導関数z=T X導出、X は定数、θ T θ^TTは変数、導出後はxxバツ

ここに画像の説明を挿入
ここに画像の説明を挿入
コスト関数導出後の結果は次のようになります:
ここに画像の説明を挿入
勾配降下法の本質は、凸最適化の問題であるノンストップ導出を通じて曲線降下方向を反復することです。曲線降下速度と方向は次のとおりです。導出によって決定され、最も速く最低点に到達する、つまり損失が最小のプロセス
logex = lnx = 1 x log_ex=lnx=\frac{1}{x}ログ_ _バツ=lnx _ _=バツ1

線形ロジスティック回帰の勾配降下法

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

sklearn は線形ロジスティック回帰を実装します

ロジスティック回帰API

sklearn.linear_model.LogisticRegression(solver='liblinear',penalty='l2',C=1.0,
solver 可选参数:{
    
    'liblinear','sag','saga','newton-cg','lbfgs'}
penalty:正则化的种类
C:正则化力度

liblinear はデフォルト値で、最適化問題用のアルゴリズムであり、小規模なデータ セットに適しています。sag および saga は大規模なデータ セットに使用され、newton-cg はマルチクラス問題に使用されます。
データには正の例と負の例があり、sklearn インターフェイスはデフォルトで少数の正の例を設定します。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

非線形ロジスティック回帰のための勾配降下法

分類評価レポート API

sklearn.metrics.classification_report(y_true,y_pred,labels=[],target_names=None)
y_true:真实目标值
y_pred:估计器预测目标值
labels:指定类别对应的数字
target_names:目标类别名称
return:每个类别精确率与召回率

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

sklearn が提供するデータセットを使用します

ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/hwwaizs/article/details/131905921