Python 機械学習 (4) 線形代数の復習、重回帰、多項式回帰、標準方程式解、線形回帰の場合

線形代数を復習する

マトリックス

行列は、2 次元配列の別の表現として理解できます。行列は 3 行 2 列の行列であり、行列 B は 2 行 3 列の行列です。行列の要素は添字によって取得できます。添字はデフォルトで 0 から始まります。A ij : A_{ij}:イジを表しますi行、jj列jの要素
ここに画像の説明を挿入

ベクター

ベクトルは特別な行列、1 列のみの行列、C は 4 行 1 列のベクトルです。
ここに画像の説明を挿入

行列演算とスカラー演算

スカラーと行列の各要素は、ブロードキャスト メカニズムを使用して、スカラーを行列と同じ形状の行列として扱い、各要素はスカラーであると想像することもでき、対応する位置で演算を実行します。
ここに画像の説明を挿入
行列とスカラー間の演算は、スカラーを使用して各要素に作用します。

行列演算とベクトル演算

ここに画像の説明を挿入
nmmm列の行列にmmm行 1 列のベクトル、nnn行 1 列のベクトル。
例:
例えば、家の大きさは価格水準に影響し、その大きさが特徴データとして使用されます。
特徴量データ:[ 1 2 3 ] \begin{bmatrix} 1\\ 2\\3\end{bmatrix} 123 、線形関係は次のとおりです: h ( x ) = 2 x + 1 h(x)=2x+1h ( x )=2倍_+1.線形代数の知識を使ってh ( x ) h(x)を表す方法h ( x )xxxとの関係は
特徴行列を構築し、係数がすべて 1 である列を追加して、パラメーター ベクトルを構築します。1 はθ 0 θ_00, 2 はθ 1 θ_1に対応します。1x は特性データ、サンプル データのmmm、このときm = 3 m=3メートル=3 、 x 1 、 x 2 、 x 3 x_1、x_2、x_3に対応バツ1バツ2バツ3、切片が他の係数に干渉しないようにするため
ここに画像の説明を挿入

行列と行列演算

対応する位置で動作します。行列とベクトルを直接加算することはできません。
ここに画像の説明を挿入
行列間のビット単位の演算では、形状が一貫している必要があり、そうでない場合は演算できません。3∗2 3*2
があります322 ∗ 3 2*323 つの行列を乗算すると、次の2 ∗ 3 2*323の行列を 3 つのベクトルに分割して計算すると、結果は3 ∗ 3 3*333マトリックス。
ここに画像の説明を挿入
nnmmm列の行列にmmmnnn列の行列。nnを取得します。nnnn列の行列。
例:
特徴データ:[ 1 2 3 ] \begin{bmatrix} 1\\ 2\\3\end{bmatrix} 123 、線形関係は次のとおりです: h ( x ) = 2 x + 1 h(x)=2x+1h ( x )=2倍_+1h ( x ) = 3 x + 2 h(x)=3x+2h ( x )=3x _+2.線形代数の知識を使ってh ( x ) h(x)を表す方法h ( x )xxxとの関係はh ( x ) h(x)
ここに画像の説明を挿入
が複数あります。h ( x )式、1 行目の式に 1 をθ 0 θ_00, 2 はθ 1 θ_1に対応します。1、2 番目の方程式の 2 はθ 0 ' θ_0'に対応します。0, 3 はθ 1 ' θ_1'に対応します1、複数の方程式が順番に配置されます。

単位行列

自然数のうち、任意の数に 1 を掛けたものは、任意の数に 1 を掛けたものに等しく、任意の数そのものに等しい。単位行列の対角要素は1、他の要素はすべて0で、行と列が同じであり、これも正方行列です。
I = [ 1 0 0 0 1 0 0 0 1 ] I=\begin{bmatrix} 1&0&0\\ 0&1&0\\0&0&1\end{bmatrix}= 100010001 A ∗ I = I ∗ A = AA*I=I*A=A==Am
∗mm*mメートルm単位行列にm ∗ nm*nメートルnの行列はm ∗ nm*nですメートルnの行列、行列の乗算、単位行列は交換法則を満たしますが、他の行列の計算は交換法則を満たしません。

転置行列

行列の行と列を交換します。
ここに画像の説明を挿入
A ij = A ji T A_{ij}=A_{ji}^Tイジ=T

逆行列

m∗mm*mのみメートルmの正方行列は逆行列を持ち、行列式は 0 ではありません。逆行列の特性は次のとおりです。A ∗ A − 1 = A − 1 ∗ A = IA*A^{-1}=A^{- 1}*A= 私1=1=私は3 ∗ 3 − 1 = 1 3*3^{-1}=1のようになります331=1
ここに画像の説明を挿入

重線形回帰

以前は、住宅価格は 1 つの特徴 (家の大きさ) に基づいて予測されていましたが、実際には、住宅価格に影響を与える要因は家の大きさだけではなく、他の多くの特徴も住宅価格に影響を与えます。北京のアパートやヴィラなどの価格は小都市のそれよりも高いです。現時点では、考慮される特徴は 1 つだけではなく、複数になります。モデルをトレーニングするための複数の特徴がある場合、変数はx 1 x_1から変化します。バツ1x 1 . . . xn x_1...x_nになりますバツ1... ×
以下の図にはレコードがいくつあるか、つまりサンプル データ セットがいくつあるか、ラベルは目標値 (価格)、特性は次のとおりです: 寝室、バスルーム、sqft_living、sqft_lot、floors、および線形関係h ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ nxnh(x)=θ_0+θ_1x_1+θ_2x_2+...+θ_nx_nh ( x )=0+1バツ1+2バツ2+...+バツ
ここに画像の説明を挿入
式では、x 0 = 1 x_0=1と見ることができます。バツ0=1、特徴ベクトルxxx、パラメータ ベクトルθθmmを持っていますmデ​​ータ サンプル セット、ベクトルxxxの長さはn+ 1 n+1n+1 . 多重線形回帰、多変量とは、 h ( x ) h(x) を
ここに画像の説明を挿入
予測するために複数のパラメーター、複数の特徴量、または複数の変数があることを意味します。h ( x )、最終的な目標は、一連のθ θθ、コスト関数を最小化します。
式:h ( x ) = θ T ∗ X = θ 0 x 0 + θ 1 x 1 + . . + θ nxnh(x)=θ^T*X=θ_0x_0+θ_1x_1+...+θ_nx_nh ( x )=Tバツ=0バツ0+1バツ1+...+バツ
パラメータ: θ 0 、θ 1 、... , θ n θ_0,θ_1,...,θ_n01...
コスト関数:J ( θ 0 , θ 1 , ... θ n ) = 1 2 m ∑ i = 1 m ( h ( xi ) − yi ) 2 J(θ_0,θ_1,...θ_n)= \frac{ 1}{2m}\displaystyle{\sum_{i=1}^{m}(h(x^i)-y^i)^2}J ( θ01...=2m _1i = 1メートル( h ( xy2
目標:θ 0 、θ 1 、...、θ n θ_0、θ_1、...、θ_n を01... 、コスト関数が最小になるように
勾配降下法: 反復回数を計算し、θ θを維持します。θ偏導関数、θを変更または反復しますθコスト関数が最小になるまでθパラメータを調整します。θ 0 θ_0
の場合0偏導関数θ 0 θ_0を求めます。0θ 1 θ_1からの切片です1初めは、x 1 x_1に次のものが対応します。バツ1以前の係数。θ1
ここに画像の説明を挿入
の場合θ_11部分的な指導を求めます。θ2θ_2
ここに画像の説明を挿入
の場合2部分的な指導を求めます。
ここに画像の説明を挿入
ここに画像の説明を挿入

重線形回帰の勾配降下法

運送会社は商品を配送しており、履歴データに基づいて総輸送時間を予測するモデルを実装したいと考えています。
移動距離と移動時間はすべて特徴量であり、総移動時間はラベル (目標値) であり、総移動時間は移動距離と移動時間によって予測されます。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
点が平面の上部と下部に分布しており、上部と下部に損失があることがわかります。一般に、中央の位置では、2 つのフィーチャのデータが平面を通してフィッティングされ、予測された結果を得ることができます。

sklearn は多重線形回帰を実装します

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

コスト関数を最小化すると平面グラフが得られます。sklearn は勾配降下法によってカプセル化されませんが、標準化された方程式を使用します。

多項式回帰

家の 2 つの特徴、つまり家の幅と長さ、および住宅価格を予測する式があるとします。h ( x ) = θ 0 + θ 1 ∗ 幅 + θ 2 ∗ 長さ h(x)=θ_0+ θ_1*幅+θ_2*長さh ( x )=0+1+2長いですが、家の面積公式を使用して 2 つの地物を 1 つに変換できます。得られる公式は次のとおりです:h ( x ) = θ 0 + θ 1 ∗ area h(x)=θ_0+θ_1*areah ( x )=0+1エリア
視覚化されたグラフは次のとおりです。
ここに画像の説明を挿入
線形回帰のみがある場合は、上向きの直線が近似され、対応する方程式は次のようになります。h ( x ) = θ 0 + θ 1 xh(x)=θ_0+θ_1xh ( x )=0+1×この線はデータに適切に適合した線ではなく、mse (損失) が比較的大きいです。
曲線をフィッティングに使用すると、得られる式は次のようになります:h ( x ) = θ 0 + θ 1 x + θ 2 x 2 h(x)=θ_0+θ_1x+θ_2x^2h ( x )=0+1バツ+2バツ2.関数の大まかな方向はべき乗によって推定できます. グラフはべき乗の高さによって決定されます. 曲線が放物線の場合, 住宅価格は面積の増加とともに上昇します. あるレベルを超えると,家の面積に応じて増加しますが、同じ地域ではこのようにはなりません。
住宅価格が曲線に沿って徐々に上昇するという場合には、高いべき乗を導入する必要があります 対応する方程式:h ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 h (x)= θ_0+θ_1x+θ_2x^2+θ_3x^3h ( x )=0+1バツ+2バツ2+3バツ
これには 1 次元の 3 次方程式が含まれており、置換法によって高次のべき乗を低次のべき乗に変更できます。x 1 = ( サイズ ) ; x 2 = ( サイズ ) 2 ; x 3 = ( サイズ ) 3 x_1=(サイズ);x_2=(サイズ)^2;x_3=(サイズ)^3 と仮定します
、
バツ1=(サイズ) ; _ _バツ2=(サイズ) _ _2 ;バツ3=(サイズ) _ _3、 x の 1 つの特徴のみに変換され、

h ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 = θ 0 + θ 1 (サイズ) + θ 2 (サイズ) 2 + θ 3 (サイズ) 3 = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 h(x)=θ_0+θ_1x+θ_2x^2+θ_3x^3=θ_0+θ_1(サイズ)+θ_2(サイズ)^2+θ_3(サイズ)^3= θ_0+θ_1x_1+θ_2x_2+θ_3x_3h ( x )=0+1バツ+2バツ2+3バツ3=0+1(サイズ) _ _+2(サイズ) _ _2+3(サイズ) _ _3=0+1バツ1+2バツ2+3バツ3
高検出力を重線形回帰に変換する際に問題が発生します。

多項式回帰の場合

さまざまなレベルのポジションに対応する給与は次のとおりです。レベル給与予測システムを確立し、新しいレベルを渡すことによって給与を予測します。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
フィッティングの効果はあまり良くないため、多項式回帰を使用して処理します。
ここに画像の説明を挿入
ここに画像の説明を挿入
度数を調整することでフィット感を変えることができます。

標準方程式法

勾配降下法は、最小コスト関数J ( θ ) J(θ)を取得します。θ ,求密θ 0 ,θ 1 ,., θ n θ_0,θ_1,...,θ_n01... 、グローバル最小値に収束するには多くの反復が必要です。

標準方程式法でも全体的な最小値を取得でき、反復アルゴリズムを使用する必要がなく、θ の最適値を一度に取得できます。J ( θ ) = a θ 2 + b θ + c J(θ)=aθ^2+bθ+cJ ( θ )=θ _2+_+cの場合、描画されるグラフは次の図のようになります。
ここに画像の説明を挿入
適切なθ θθ方程式の最小値を求め、θθは方程式を解くことで求めることができ、最下点の傾きは水平で0であり、この点で傾きを0として導出したのと同じで、 2 a θ + b = 0 2aθ+b が得られます。 =02aθ _ _+b=0θ = − b 2 a θ=-\frac{b}{2a}=2a_ _b
でもシータシータθは通常ベクトルであるため、コスト関数は次のようになります。 J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ i = 1 m ( h ( xi ) − yi ) 2 J(θ_0,θ_1) ,. ..,θ_n)= \frac{1}{2m}{\displaystyle{\sum_{i=1}^{m}(h(x^i)-y^i)^2}}J ( θ01... =2m _1i = 1メートル( h ( xy2
標準方程式法を使用して解く必要がある場合は、各θ θθの偏微分を計算し、結果を 0 に設定します。対応するθ θシータ値。

標準方程式の場合

以前の問題を勾配降下法を使用して解決した場合、for ループを 2 層使用する必要があり、コードの冗長性が生じます。
J ( θ 0 , θ 1 , ..., θ n ) = 1 2 m ∑ i = 1 m ( h ( xi ) − yi ) 2 J(θ_0,θ_1,...,θ_n)= \frac{1 }{2m}{\displaystyle{\sum_{i=1}^{m}(h(x^i)-y^i)^2}}J ( θ01... =2m _1i = 1メートル( h ( xy2このデータには 4 つのトレーニング サンプルがあり、価格はyy
に対応するラベルですyには、ベッドルーム、バスルーム、sqft_living、sqft_lot、floors の 5 つのフィーチャがあり、分布はx 1 − − x 5 x_1--x_5バツ1×5、複数の特徴データがあるため、行列を構築する必要があります。x 0 x_0を追加します。バツ0、その値をすべて 1 にします。
ここに画像の説明を挿入
形成される行列は次のとおりです: X = [ 1 3 1.00 1185 5650 1.0 1 3 2.25 5270 7242 2.0 1 2 1.00 770 10000 1.0 1 4 3.00 1960 5000 1.0 ] X=\begin{bmatrix} 1&3&1.0 0&1185&5650&1.0\\ 1&3&2。 25&5270&7242&2 .0\\1&2&1.00&770&10000&1.0\\1&4&3.00&1960&5000&1.0\end{bmatrix}バツ= 111133241.002.251.003.00118552707701960年565072421000050001.02.01.01.0
マトリックスXXX は対応する特徴行列です。やあyは実数値で、構築されたラベルはベクトルです。y = [ 221900 538000 180000 604000 ] y=\begin{bmatrix} 221900\\ 538000\\180000\\604000\end{bmatrix}y= 221900538000180000604000
θ = [ θ 0 θ 1 θ 2 θ 3 θ 4 θ 5 ] θ=\begin{bmatrix} θ_0\\ θ_1\\θ_2\\θ_3\\θ_4\\θ_5\end{bmatrix}= 012345
利用X , y , θ X,y,θ× θコスト関数を構築し、最初に行列X θ XθXθ は実際にはh ( x ) h(x)ですh ( x )部分、誤差値は実際の値から予測値を引いた値、y − h ( x ) yh(x)yh(x),也即是 y − X θ y-Xθ y
ここに画像の説明を挿入
取得したエラーエラーerrorは単一の誤差値であり、誤差の 2 乗の合計を取得するには、誤差ベクトルと取得したばかりの誤差ベクトルを乗算したものの転置に変換されます。
下図に示すように、error 0 = ( y − X θ ) error_0=(y-Xθ)エラー_0=( y)誤差 0 ∗ 誤差 0 = ( y − X θ ) 2 error_0*error_0=(y-Xθ)^2エラー_0エラー_0=( y)2、誤差ベクトルと誤差ベクトルの転置の積は( y − X θ ) 2 (y-Xθ)^2( y)
ここに画像の説明を挿入
最小値、つまり傾きが 0 になる点を見つけます。導出過程は以下の通りで、
逆行列と行列を乗算した結果が単位行列となります。θθを求める標準方程式法を実現シータのやり方。
ここに画像の説明を挿入

標準方程式法と勾配降下法との比較

標準方程式法の利点: θ θの求め方θ の値がθの場合、学習率を選択する必要はなく、反復も必要なく、ループを通じて各サンプル データを制御する以前の計算が 2 つのベクトル間の直接演算に置き換えられます。短所: 逆行列を計算する必要がある、すべての行列に逆行列があるわけではない (正方行列、行と列が 0 ではない)、特徴が多い (n が多い) 場合、構成は ( n + 1 ) ∗ ( m + 1 ) となります。 ) (n+1)*(m+1)( n+1 )( m+1 )行列を計算する場合、演算次元が非常に高いため、特性変数が多数ある場合、標準方程式法を使用して解くのは適していません。
勾配降下法の利点は、逆行列を計算する必要がなく、より多くの特徴量にも適していることです。欠点: 学習率を選択する必要があり、反復する必要があります。
データ量が比較的多い場合(nの値が10,000以上)には勾配降下法が適しており、特徴ベクトルが比較的小さい場合には標準方程式法が使用されます。

Numpy は標準方程式メソッドを実装して解くことができます。

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

線形回帰のケース

次のデータがあります:「kc_house_data.csv」。これに対してモデルをトレーニングする必要があります。

単変量線形回帰分析

データ情報を確認します。サンプル 21613、21 列、「id」は住宅のシリアル番号、「日付」はデータ収集時刻であり、住宅価格には影響しません。「価格」はラベルで、残りは機能です。1 つの変数で線形回帰を使用する場合は、住宅面積「sqft_living」を取得するなど、1 つの特徴を取得します。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

重線形回帰分析

複数の機能があり、ラベルには 1 つの「価格」しかなく、複数の機能が価格に影響を与えます。
ここに画像の説明を挿入
モデルをトレーニングするために価格に最も大きな影響を与えるいくつかの機能を選択し、視覚化された形式で表示します。部屋数、階数、バスルームの数と住宅価格の関係 部屋数は必ずしも連続しているとは限らない ボックス図を描く
ここに画像の説明を挿入
ここに画像の説明を挿入
得られたグラフィックを解析すると、寝室数が11、33の場合、住宅価格の分布がなく、この2つは不要であることがわかります。6 を超えるすべての住宅価格は削除できます。価格は一部の機能と完全に線形の関係にないため、機能間の関係を考慮する必要があります。
ここに画像の説明を挿入
ここに画像の説明を挿入
サブ画像 1 はサブ画像 2 とほとんど関係がありませんが、サブ画像 3 はサブ画像 4 と関係があります。住宅面積が増えると、駐車場、部屋の数、トイレの数がすべて増加します。住宅面積は駐車場と密接な関係があることを示しており、部屋数と浴室数との相関は比較的大きく、住宅面積は階数や部屋数とはあまり関係がありません。ヒート マップを使用して、2 つのグラフ間の関係をプロットします。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
-0.4 のように色が非常に薄い場合は負の相関を示し、0.6 のように色が非常に緑である場合は正の相関を示し、相関は比較的近く、自分と自分の相関は 1 になります。 。住宅面積「sqft_living」は、価格、バスルーム、グレード、sqft_living15と密接な関係があります。強い正の相関があるものだけを見て、特徴の選択でいくつかの悪い特徴を完全に回避すると、モデルはトレーニング後に過剰適合してしまいます。
特徴を選択するときは、次の点に注意してください: 1 つは特徴とラベルの間の関係であり、一般に正の関係を選択する必要があります。2 つ目は過適合を防ぐために部分を残すこと、3 つ目は関係間の特徴的な特徴を削除することです。住宅面積と15の住宅面積などの関係、そうでない場合は、多くの計算が必要になります。
特性を分析した後、重回帰モデルを構築しますが、特性が異なる場合、トレーニング結果も異なります。

多項式の処理

ここに画像の説明を挿入
多項式トレーニングの結果はより強力なスコアを持ちますが、予測されたテスト結果はそれほど強力ではなく、データに過剰適合があることを示しています。実際の結果はトレーニングされたものほど強力ではありません。

おすすめ

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