[数学的知識] 最小二乗法、線形回帰から始まり、数値例を示し、回帰モデルを解くために最小二乗法を使用する

シリアルナンバー コンテンツ
1 【数学的知識】自由度と自由度の計算方法
2 【数学的知識】剛体 剛体と剛体の運動
3 【数学的知識】剛体の基本運動、平行移動、回転
4 【数学的知識】ベクトル乗算、内積、外積、MATLABコード実装
5 【数学的知識】共分散、確率変数の共分散、確率変数がそれぞれ単一の数値とベクトルの場合の共分散
6 [数学的知識] 回転行列の導出プロセスは、ユークリッド変換の非線形制限を解決しながら、ベクトルの回転に基づいています。

メモを確認したところ、SG フィルターを使用するときに最小二乗法について以前に言及されていたことがわかりました。参考までに、記事へのリンクを示します: [UWB] Savitzky Golay フィルター SG フィルターの原理の説明

最小二乗法は、予測値と真の値の差(通常は残差の二乗和として表されます)を最小限に抑えるために使用される数学的最適化手法です。

最小二乗法の中心となる考え方は、予測値と真の値の差の二乗和を最小化することで、モデルの最適なパラメーター値を見つけることです。

最小二乗法は最適化手法であるため、単純に最小二乗法について議論するだけでは退屈です。したがって、回帰分析の線形回帰に最小二乗法を適用すると、回帰モデルの最適なパラメータを解決するのに役立ち、最小二乗法の考え方をより深く理解することができます。

回帰分析の本来の目的は、データへの最適な適合を達成するためにモデルのパラメーターを推定することです。多くの場合、特に線形回帰では、最小二乗法により、最適なパラメーターを見つけるための閉じた分析ソリューションが提供されます。したがって、変数の動作を予測または説明するために、直線や多項式を一連のデータ点に適合させるために最小二乗法がよく使用されます。


次に、最初に線形回帰について説明し、次に 2 つの単純な線形回帰モデルについて説明します。次に、最小二乗法の考え方を通じて最適なモデル パラメーターを解決するための具体例を示し、それによってモデル パラメーターを解決するための最小二乗法の使用について理解します。


1. 線形回帰

線形回帰について議論するときは、回帰分析と一緒に議論しましょう。

線形回帰と回帰分析はどちらも統計で一般的に使用される手法ですが、それらの間にはいくつかの重要な違いがあります。

定義により、

  • 線形回帰: 線形回帰は、2 つ (またはそれ以上) の変数間の関係を最もよく表す 1 つの線形関数 (単純な線形回帰の場合) または複数の線形関数 (多重線形回帰の場合) を見つけようとする予測方法です。
  • 回帰分析: 回帰分析は、1 つまたは複数の変数と 1 つ以上の他の変数の間の関係を記述する統計的手法を表すために使用される広義の用語です。線形回帰は回帰分析の 1 つの形式にすぎません。

種類的に言えば、

  • 線形回帰: 主に線形関係に焦点を当てます。
  • 回帰分析: 線形回帰、多項式回帰、ロジスティック回帰、リッジ回帰およびその他のタイプを含めることができます。

目的という点では、

  • 線形回帰: 応答変数と 1 つ以上の予測変数の間の関係を予測または説明します。
  • 回帰分析: 変数間の関係 (線形、非線形、またはその他の関係) を調査およびモデル化します。

応用面では、

  • 線形回帰: 線形回帰は通常、変数間に線形関係があると考えられる場合に使用されます。
  • 回帰分析: 線形関係を含むがそれに限定されないさまざまな関係に適用できます。

簡単に言えば、線形回帰は回帰分析のサブセットです。回帰分析には、変数間の関係をモデル化および説明するためのさまざまな方法が含まれますが、線形回帰では特に線形関係に焦点を当てます。


ランダムなサンプルを与えます ( y, x 1, x 2, ⋯ y, x_1, x_2, \cdotsバツ1バツ2 )、線形回帰モデルは、
応答変数 (従属変数またはターゲットと呼ばれることが多い)yyy
説明変数 (独立変数または特徴と呼ばれることが多い)x 1 、 x 2 、⋯ x_1、x_2、 \cdotsバツ1バツ2
間の関係は、説明変数の影響を受けるだけでなく、誤差項ϵ \epsilonϵ (これも確率変数)x 1 、 x 2 、⋯ x_1、x_2、\cdots をバツ1バツ2を除くyyの任意のペア影響力がある


ただし、この記事の分析では主に回帰モデルを学習したいため、誤差項ϵ \epsilonを単純化します。ϵの影響。

同時に、説明変数の数に応じて、線形回帰モデルも単純線形回帰と多重線形回帰に分けられます。


1. 単純な線形回帰モデル

応答変数yyを説明しますyと説明変数xxx間の関係

この関係は線形、つまり一次関数であると仮定します。

y = β 0 + β 1 x \begin{aligned} y &= \beta _0 + \beta_1 x \end{aligned}はい=b0+b1×

その中には、yyyは応答変数、xxxは説明変数β 0 \beta_0b0β 1 \beta_1b1は回帰係数です。


2. 重回帰モデル

応答変数yyを説明しますyと 2 つ以上の説明変数x 1 、 x 2 、⋯ x_1、x_2、 \cdotsバツ1バツ2の関係

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β pxp \begin{aligned} y &= \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \end{aligned}はい=b0+b1バツ1+b2バツ2++bpバツp


2. 線形回帰から最小二乗法へ。数値例を示し、回帰モデルを解くために最小二乗法を使用します。

最小二乗法の中心的な考え方は、予測誤差の二乗和を最小化するモデル パラメーターを見つけることです。

具体的には、単純な線形モデルを考えてみましょう。

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β pxp \begin{aligned} y &= \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \end{aligned}はい=b0+b1バツ1+b2バツ2++bpバツp

私たちの目標は、 β \betaのセットを見つけることです。予測値y^ = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β pxp \hat{y} = \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p となるような βx_py^=b0+b1バツ1+b2バツ2++bpバツpそして実際の値yyyの差はこの差は、残差二乗和 (RSS) によって測定できます。

RSS = ∑ i = 1 n ( y − y ^ i ) 2 \text{RSS} = \sum_{i=1}^{n} (y - \hat{y}_i)^2RSS=i = 1( yy^私は)2

最小二乗法の目標は、RSS を最小限に抑えることです。具体的には、 RSS を最小化するβ \betaを見つけることで達成するβ値。

最小二乗法の背後にある直感的な考え方は、予測値を観測値にできるだけ近づけるモデルを見つけようとすることです。このアプローチは二乗誤差損失に基づいています。

次に、具体的な数値例を挙げて最小二乗法の役割を見ていきます。


1. 単一の説明変数、単一の応答変数

単一の説明変数と単一の応答変数を持つこの種の回帰モデルは、次の式で表すことができます。

y = β 0 + β 1 xy = \beta_0 + \beta_1 xy=b0+b1バツ


単純な線形回帰モデルy = β 0 + β 1 xy = \beta_0 + \beta_1 x を仮定します。y=b0+b1x、4 つのデータ点 (x、yx、y× y):(1 , 6 1,61 6)(2 、 5 2、52 5)(3 、 7 3、73 7)(4 、 10 4、104 10 )、最もよく一致するパラメーターβ 0 、 β 1 \beta_0、\beta_1b0b1

データ点をこの線形回帰モデルにそれぞれ代入すると、
β 0 + β 1 1 = 6 β 0 + β 1 2 = 5 β 0 + β 1 3 = 7 β 0 + β 1 4 = 10 \begin{aligned} \ beta_0 + \beta_1 1 &= 6 \\ \beta_0 + \beta_1 2 &= 5 \\ \beta_0 + \beta_1 3 &= 7 \\ \beta_0 + \beta_1 4 &= 10 \end{aligned}b0+b11b0+b12b0+b13b0+b14=6=5=7=10

最小二乗法で使用される方法は、等号の両側の差の二乗を最小化すること、つまり次の関数の最小値を見つけることです:
S ( β 0 , β 1 ) = [ 6 − ( β 0 + β 1 1 ) ] 2 + [ 5 − ( β 0 + β 1 2 ) ] 2 + [ 7 − ( β 0 + β 1 3 ) ] 2 + [ 10 − ( β 0 + β 1 4 ) ] 2 \begin{aligned} S(\beta_0 , \beta_1) &= [6 - (\beta_0 + \beta_1 1)]^2 \\ &+ [5 - (\beta_0 + \beta_1 2)]^2 \\ &+ [7 - (\beta_0 + \ beta_1 3)]^2 \\ &+ [10 - (\beta_0 + \beta_1 4)]^2 \end{aligned}S ( b0b1)=[ 6( b0+b11 ) ]2+[ 5( b0+b12 ) ]2+[ 7( b0+b13 ) ]2+[ 10( b0+b14 ) ]2

% 初始化符号变量
syms beta_0 beta_1 real

% 定义你的公式
f = (6 - (beta_0 + beta_1 * 1))^2 ... 
  + (5 - (beta_0 + beta_1 * 2))^2 ... 
  + (7 - (beta_0 + beta_1 * 3))^2 ... 
  + (10 - (beta_0 + beta_1 * 4))^2;

% 展开公式
f_expanded = expand(f);

% 你可以尝试进一步简化它,但是否能简化到所需的形式是不确定的
f_simplified = simplify(f_expanded);

% 输出结果
disp(f_expanded);
disp(f_simplified);
>>
4*beta_0^2 + 20*beta_0*beta_1 - 56*beta_0 + 30*beta_1^2 - 154*beta_1 + 210
 
4*beta_0^2 + 20*beta_0*beta_1 - 56*beta_0 + 30*beta_1^2 - 154*beta_1 + 210

最小値はS ( β 0 , β 1 ) S(\beta_0, \beta_1) をペアにすることで取得できます。S ( b0b1)それぞれβ 0 \beta_0b0β 1 \beta_1b1の偏導関数を求め、これをゼロに設定します。

∂ S ( β 0 , β 1 ) ∂ β 0 = 8 β 0 + 20 β 1 − 56 = 0 ∂ S ( β 0 , β 1 ) ∂ β 1 = 20 β 0 + 60 β 1 − 154 = 0 {整列} \frac{\partial S(\beta_0, \beta_1)}{\partial \beta_0} &= 8 \beta_0 + 20 \beta_1 - 56 = 0 \\ \frac{\partial S(\beta_0, \beta_1 )}{\partial \beta_1} &= 20 \beta_0 + 60 \beta_1 - 154 = 0 \end{aligned}β0S ( b0b1)β1S ( b0b1)=8b _0+20b _156=0=20b _0+60b _1154=0

% 对 b0 求偏导数
df_dbeta_0 = diff(f, beta_0);

% 对 b1 求偏导数
df_dbeta_1 = diff(f, beta_1);

disp(df_dbeta_0)

disp(df_dbeta_1)
>> 
8*beta_0 + 20*beta_1 - 56
20*beta_0 + 60*beta_1 - 154

上記の 2 変数の線形方程式を解くと、次のようになります。

β 0 = 3.5 β 1 = 1.4 \begin{aligned} \beta_0 &= 3.5 \\ \beta_1 &= 1.4 \end{aligned}b0b1=3.5=1.4

% 设置偏导数等于零并求解
solutions = solve([df_dbeta_0 == 0, df_dbeta_1 == 0], [beta_0, beta_1]);

% 输出解
disp(solutions.beta_0);

disp(solutions.beta_1);
>>
7/2
 
7/5

したがって、最適な回帰モデルはy = 3.5 + 1.4 x y = 3.5 + 1.4 x となります。y=3.5+1.4。_

x = [1  2  3  4]';
y = [6  5  7  10]';

plot_x = linspace(1,4,50);
plot_y = 3.5 + 1.4 * plot_x;

scatter(x(1), y(1)); hold on;
scatter(x(2), y(2));
scatter(x(3), y(3));
scatter(x(4), y(4));
plot(plot_x, plot_y);
xlabel("$x$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

ここに画像の説明を挿入します


2. 複数の説明変数、単一の応答変数

複数の説明変数と単一の応答変数を含むこの種の回帰モデルは、次の式で表すことができます。

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β pxpy = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_py=b0+b1バツ1+b2バツ2++bpバツp


また、上記の回帰モデルに基づいて、ここでは説明変数の数をp = 2 p = 2とします。p=2,那么有 y = β 0 + β 1 x 1 + β 2 x 2 y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 y=b0+b1バツ1+b2バツ2、実験では 4 つのデータ ポイントが取得されました ( x 1、x 2、y x_1、x_2、yバツ1バツ2y):(1 、 3 、 6 1、3、61 3 6)(2 、 4 、 5 2、4、52 4 5)(3 、 5 、 7 3、5、73 5 7)(4 、 8 、 10 4、8、104 8 10 )、最もよく一致するパラメーターβ 0 、 β 1 、 β 2 \beta_0、\beta_1、\beta_2 をb0b1b2

データ点をこの線形回帰モデルにそれぞれ代入すると、
β 0 + β 1 1 + β 2 3 = 6 β 0 + β 1 2 + β 2 4 = 5 β 0 + β 1 3 + β 2 5 = 7 β 0 + β 1 4 + β 2 8 = 10 \begin{aligned} \beta_0 + \beta_1 1 + \beta_2 3 &= 6 \\ \beta_0 + \beta_1 2 + \beta_2 4&= 5 \\ \beta_0 + \beta_1 3 + \beta_2 5&= 7 \\ \beta_0 + \beta_1 4 + \beta_2 8&= 10 \end{整列}b0+b11+b23b0+b12+b24b0+b13+b25b0+b14+b28=6=5=7=10

差分を求める関数は

S ( β 0 , β 1 , β 2 ) = [ 6 − ( β 0 + β 1 1 + β 2 3 ) ] 2 + [ 5 − ( β 0 + β 1 2 + β 2 4 ) ] 2 + [ 7 − ( β 0 + β 1 3 + β 2 5 ) ] 2 + [ 10 − ( β 0 + β 1 4 + β 2 8 ) ] 2 \begin{aligned} S(\beta_0, \beta_1, \beta_2) & = [6 - (\beta_0 + \beta_1 1 + \beta_2 3)]^2 \\ &+ [5 - (\beta_0 + \beta_1 2 + \beta_2 4)]^2 \\ &+ [7 - (\ beta_0 + \beta_1 3 + \beta_2 5)]^2 \\ &+ [10 - (\beta_0 + \beta_1 4 + \beta_2 8)]^2 \end{aligned}S ( b0b1b2)=[ 6( b0+b11+b23 ) ]2+[ 5( b0+b12+b24 ) ]2+[ 7( b0+b13+b25 ) ]2+[ 10( b0+b14+b28 ) ]2

syms beta_0 beta_1 beta_2 real

f = (6 - (beta_0 + beta_1 * 1 + beta_2 * 3))^2 ...
  + (5 - (beta_0 + beta_1 * 2 + beta_2 * 4))^2 ...
  + (7 - (beta_0 + beta_1 * 3 + beta_2 * 5))^2 ... 
  + (10 - (beta_0 + beta_1 * 4 + beta_2 * 8))^2;

f_expanded = expand(f);

disp(f_expanded);
>> 
4*beta_0^2 + 20*beta_0*beta_1 + 40*beta_0*beta_2 - 56*beta_0 + 30*beta_1^2 + 116*beta_1*beta_2 - 154*beta_1 + 114*beta_2^2 - 306*beta_2 + 210

生成求偏密数,今令それは 0∂
S ( β 0 , β 1 , β 2 ) ∂ β 0 = 8 β 0 + 20 β 1 + 40 β 2 − 56 = 0 ∂ S ( β 0 , β 1 , β 2 ) 2 ) ∂ β 1 = 20 β 0 + 60 β 1 + 116 β 2 − 154 = 0 ∂ S ( β 0 , β 1 , β 2 ) ∂ β 2 = 40 β 0 + 116 β 1 + 228 β 2 − 306 = 0 \begin{aligned} \frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_0} &= 8 \beta_0 + 20 \beta_1 + 40 \beta_2 - 56 = 0 \\ \ frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_1} &= 20 \beta_0 + 60 \beta_1 + 116 \beta_2 - 154 = 0 \\ \frac{ \partial S(\beta_0 , \beta_1, \beta_2)}{\partial \beta_2} &= 40 \beta_0 + 116 \beta_1 + 228 \beta_2 - 306 = 0 \end{aligned}β0S ( b0b1b2)β1S ( b0b1b2)β2S ( b0b1b2)=8b _0+20b _1+40b _256=0=20b _0+60b _1+116b _2154=0=40b _0+116b _1+228b _2306=0

df_dbeta_0 = diff(f, beta_0);
df_dbeta_1 = diff(f, beta_1);
df_dbeta_2 = diff(f, beta_2);

disp(df_dbeta_0)
disp(df_dbeta_1)
disp(df_dbeta_2)
>> 
8*beta_0 + 20*beta_1 + 40*beta_2 - 56
20*beta_0 + 60*beta_1 + 116*beta_2 - 154
40*beta_0 + 116*beta_1 + 228*beta_2 - 306

上記の 3 次元線形方程式を解くと、次のことが得られます。

β 0 = 2 β 1 = − 1 β 2 = 1.5 \begin{aligned} \beta_0 &= 2 \\ \beta_1 &= -1 \\ \beta_2 &= 1.5 \end{aligned}b0b1b2=2=1=1.5

solutions = solve([df_dbeta_0 == 0, df_dbeta_1 == 0, df_dbeta_2 == 0], [beta_0, beta_1, beta_2]);

disp(solutions.beta_0);
disp(solutions.beta_1);
disp(solutions.beta_2);
>>
2
-1
3/2

したがって、最適な回帰モデルはy = 2 − x 1 + 1.5 x 2 y = 2 - x_1 + 1.5 x_2 となります。y=2バツ1+1.5倍_2

x_1 = [1  2  3  4]';
x_2 = [3  4  5  8]';
y = [6  5  7  10]';

plot_x_1 = linspace(1,4,50);
plot_x_2 = linspace(3,8,50);
plot_y = 2 - 1 * plot_x_1 + 1.5 * plot_x_2;

figure()
subplot(2,2,1)
scatter3(x_1(1), x_2(1), y(1)); hold on;
scatter3(x_1(2), x_2(2), y(2));
scatter3(x_1(3), x_2(3), y(3));
scatter3(x_1(4), x_2(4), y(4));
plot3(plot_x_1, plot_x_2, plot_y);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$x_2$", "Interpreter","latex", "FontSize",16);
zlabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

subplot(2,2,2)
scatter(x_1(1), y(1)); hold on;
scatter(x_1(2), y(2));
scatter(x_1(3), y(3));
scatter(x_1(4), y(4));
plot(plot_x_1, plot_y);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

subplot(2,2,3)
scatter(x_2(1), y(1)); hold on;
scatter(x_2(2), y(2));
scatter(x_2(3), y(3));
scatter(x_2(4), y(4));
plot(plot_x_2, plot_y);
xlabel("$x_2$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

subplot(2,2,4)
scatter(x_1(1), x_2(1)); hold on;
scatter(x_1(2), x_2(2));
scatter(x_1(3), x_2(3));
scatter(x_1(4), x_2(4));
plot(plot_x_1, plot_x_2);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$x_2$", "Interpreter","latex", "FontSize",16);
grid on;

ここに画像の説明を挿入します


参照

  1. 回帰分析 - WikiPedia
  2. 線形回帰 - WikiPedia
  3. 線形回帰とは何ですか?
  4. 最小二乗法 - WikiPedia

おすすめ

転載: blog.csdn.net/weixin_36815313/article/details/132183072