線形回帰、線形関係、非線形関係、共通関数導関数、損失関数と最適化アルゴリズム、正規方程式と一変量関数勾配降下法、多変量関数勾配降下法

1. 線形回帰の概要

線形回帰 (Linear regression):回帰式 (関数)を使用して、1 つ以上の独立変数 (固有値) と従属変数 (目標値)関係をモデル化する分析手法です。

特徴:独立変数が 1 つだけの場合を単変量回帰、独立変数が 2 つ以上の場合を重回帰といいます。

 固有値と目標値の間に関係が確立され、線形モデルとして理解できます。

2. 線形回帰の特性と目標との関係の分析

線形回帰には 2 つの主要なモデルがあり、1 つは線形関係、もう 1 つは非線形関係です。ここでは、よりよく理解するために平面を描画することしかできないため、例として 1 つまたは 2 つのフィーチャを使用します。

線形関係

単変量の線形関係と多変量の線形関係を次の図に示します。

1 つの特徴と目標値の間の関係が線形である、または 2 つの特徴と目標値の間の関係が平坦である

非線形関係のy = w_{1}x_{1} + w_{2}x_{2}^{2} + w_{3}x_{3}^{2}回帰式は次のように理解できます。

3. 線形回帰API

  • sklearn.linear_model.LinearRegression()
    • LinearRegression.coef_: 回帰係数

簡単な使用コードは次のとおりです

from sklearn.linear_model import LinearRegression

x = [[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]]   # [平时成绩,考试成绩]
y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]   # 总成绩
estimator = LinearRegression()   # 实例化API
estimator.fit(x, y)   # 使用fit方法进行训练
print('系数是:', estimator.coef_)   # 平时成绩与考试成绩系数,即所占比例
print('预测值是:', estimator.predict([[90, 85]]))   # 预测总成绩
------------------------------------------------------------------
输出:
系数是: [0.3 0.7]
预测值是: [86.5]

4. 共通関数の導関数

微分の四則演算

5. 損失関数と最適化アルゴリズム

5.1 損失関数

総損失は次のように定義されます。

 つまり、各予測値と実際の値の差の二乗和です。

  • y_{i}i 番目のトレーニング サンプルの真の値です
  • h(x_{i})i 番目のトレーニング サンプルの特徴量、つまり予測値に対する予測関数を結合します。
  • 損失関数は最小二乗法とも呼ばれます

5.2 最適化アルゴリズム (最適化により総損失が削減されます)

最適化の目的: 最小損失に対応する W 値を見つける

線形回帰では一般的に 2 つの最適化アルゴリズムが使用されます。

1. 正規方程式

行列の逆行列と転置を使用して問題を解決します。X は固有値行列、y はターゲット値行列です。X と y をそれに組み込むと、最良の結果が直接得られます。

欠点:特徴が少ないサンプルにのみ適しています。特徴が多すぎて複雑な場合、解析速度が遅すぎて結果が得られません。

正規方程式の導出過程

この損失関数を行列表記に変換します。

\begin{aligned} J(\theta) & =\left(h_{w}\left(x_{1}\right)-y_{1}\right)^{2}+\left(h_{w}\left(x_{2}\right)-y_{2}\right)^{2}+\cdots+\left(h_{w}\left(x_{m}\right)-y_{m}\right)^{2} \\ & = \sum_{i=1}^{m}\left(h_{w}\left(x_{i}\right)-y_{i}\right)^{2} \\ & =(yX w)^{2} \end{aligned}

ここで、y は真の値行列、X は固有値行列、w は重み行列です。

w の最小値を求めます。開始と終了の y、X は既知の 2 次関数の直接導関数です。導関数がゼロになる位置が最小値です。

導出は次のとおりです

\begin{aligned} 2(\mathrm{Xw}-\mathrm{y}) * \mathrm{X} & =0 \\ 2(\mathrm{Xw}-\mathrm{y}) *\left(X \mathrm{X}^{\mathrm{T}}\right) & =0 \mathrm{X}^{T} \\ 2(\mathrm{Xw}-\mathrm{y} ) *\left(X \mathrm{X}^{\mathrm{T}}\right)\left(X \mathrm{X}^{\mathrm{T}}\right)^{-1} & =0 \mathrm{X}^{T}\left(\mathrm{XX}^{\mathrm{T}}\right)^{-1} \\ 2(\mathrm{Xw}-\mathrm{y}) & =0 \\ \mathrm{Xw} & =\mathrm{y} \\ \mathrm{X}^{T} X w & =X^{T}y \\\left(\mathrm{X}^{T}X\right)^{-1}\left(\mathrm{X}^{T}X\right) * w & =\left(\mathrm{X}^{T}X\right)^{-1} * X^{T} y\\w&= \left(\mathrm{X}^{T}X\right)^{-1}*X^{T}y\end{aligned}

上記の導出過程において、X は m 行 n 列の行列であり、逆行列であることは保証できませんが、右乗算または左乗算によって正方行列に変換することで、逆行列を確保することができますX^{T}

2. 勾配降下法

次の山を例にとると、自分の現在位置を基準に、その位置で最も急な場所を見つけて、そこから山の高さが下がる場所に向かって歩き、一定距離を歩くたびに同じ方法を繰り返し、最終的には無事に谷に到達することができます。

勾配降下法:微分可能な関数は山を表します。関数の最小値は山のふもとです。山を下りる最速の方法は、現在位置の最も急な方向を見つけて、その関数に対応する方向に下ることです。与えられた点の勾配を見つけて、その勾配の反対方向に移動すると、関数の値が最も早く下降します。勾配の方向は関数の最も速い変化の方向であるため、この方法を繰り返し、繰り返し取得します。勾配が変化し、最終的に極小値に到達 ます

  • 一変量関数の場合:勾配は実際には関数の微分であり、指定された点における関数の接線の傾きを表します。
  • 多変量関数の場合:勾配はベクトルであり、ベクトルには方向があり、勾配の方向は特定の点における関数の最も速い上昇方向を示します。
  • 勾配の方向は、関数が指定された点で最も速く上昇する方向であり勾配の反対方向は、関数が指定された点で最も速く下降する方向です。

単変量関数の勾配降下法

一変量関数があると仮定します: J(θ) = \シータ^{2}

  • 関数の微分: J'(θ) = 2θ
  • 初期化、次から開始: \θ^{0} = 1
  • 学習率: α = 0.4

勾配降下法の反復計算プロセスは次のとおりです。

\begin{aligned} \theta^{0} & =1 \\ \theta^{1} & =\theta^{0}-\alpha * J^{\prime}\left(\theta^{0}\right) \\ & =1-0.4 * 2 \\ & =0.2 \\ \theta^{2} & =\theta^{1}-\alpha * J^{\prime}\left(\theta^{1}\right) \\ & =0.04 \\ \theta^{3} & =0.008 \\ \theta^{4} & =0.0016 \end{aligned}

多変量関数の勾配降下法

次の目的関数があるとします。\mathrm{J}(\theta)=\theta_{1}^{2}+\theta_{2}^{2}

次に、勾配降下法によってこの関数の最小値を計算する必要があります。観察を通じて、最小値が実際には点 (0, 0) であることがわかります。ここで、勾配降下法アルゴリズムから段階的に最小値の計算を開始します。最初の開始点は次のとおりであるとします: = (1, 3  \θ^{0} )

初期学習率は次のとおりです: α = 0.1

関数の勾配は\nabla J(\theta)=<2 \theta_{1}, 2 \theta_{2}>

複数の反復

 \begin{aligned}\Theta^{0}&=(1,3)\\\Theta^{1}&=\Theta^{0}-\alpha\nabla J(\Theta)\\&=(1,3)-0.1(2,6)\\&=(0.8,2.4)\\\Theta^{2}&=(0.8,2.4)-0.1(1.6,4.8)\\&=( 0.64.1.92) \\ \シータ^{3} & =(0.512.1.536) \\\シータ^{4} & =(0.4096.1.2288000000000001) \\\vdots & \\\シータ^{10} & =(0.10737418240000003.0.3221225 47 20000005) \\ \vdots & \\ \Theta^{50} & =\left(1.1417981541647683 \mathrm{e}^{-05}, 3.425394462494306 \mathrm{e}^{-05}\right) \\\vdots & \\ \Theta^{100} & =\ left(1 .6296287810675902 \mathrm{e}^{-10}, 4.888886343202771 \mathrm{e}^{-10}\right)\end{aligned}

 単変量と多変量

勾配降下法式

\theta_{i}=\theta_{i}-\alpha \frac{\partial}{\partial \theta_{i}} J(\theta)

α は、勾配降下法アルゴリズムの学習率またはステップ サイズと呼ばれます。これは、α を使用して各ステップの距離を制御し、ステップが大きすぎて最下点を逃さないようにすることができます。同時に、歩く速度が遅すぎないようにする必要もあります。

勾配の前にマイナス記号を追加することは、勾配の逆方向に移動することを意味します。勾配の方向は、実際にはこの時点で関数が最も速く上昇する方向であり、最も速く下降する方向に歩くことは当然、負の勾配の方向であるため、マイナス記号を追加する必要があります

勾配降下法 正規方程式
学習率を選択する必要がある 不要
繰り返し解決する必要がある 1 回の操作で結果が得られる
より多くの機能を使用できる 方程式を計算する必要があるため、時間計算量が高くなります O( n^{3})

勾配降下法などの最適化アルゴリズムを使用すると、回帰は「自動的に学習」する機能を備えています。 

次のように動的グラフを最適化します。  

選ぶ

  • 小規模データ: LinearRegression (フィッティング問題を解決しない) およびリッジ回帰
  • 大規模データ: SGDRegressor

ナビゲーションの学習: http://xqnav.top/

おすすめ

転載: blog.csdn.net/qq_43874317/article/details/128232829