查了下自己的筆記啼染,之前在用 SG 濾波器時提到過最小二乘法迹鹅,這里放一下文章鏈接方便自己查閱:【UWB】Savitzky Golay filter SG濾波器原理講解斜棚。
@[toc]
最小二乘法(Least Squared Method)是一種數(shù)學(xué)優(yōu)化技術(shù)弟蚀,用于最小化預(yù)測值與真實值之間的差異(通常表示為殘差平方和的形式)义钉。
最小二乘法的核心思想是:通過最小化預(yù)測值和真實值之間的差異的平方和捶闸,來找到模型最佳的參數(shù)值鉴嗤。
因為最小二乘法就是一門優(yōu)化技術(shù)醉锅,單純的討論最小二乘法比較枯燥硬耍。因此经柴,將最小二乘法應(yīng)用在回歸分析中的線性回歸坯认,幫助求解出回歸模型的最佳參數(shù),這樣的方式可以更好的理解最小二乘法的思想劳吠。
回歸分析的最初目的是估計模型的參數(shù)以便達到對數(shù)據(jù)的最佳擬合。在很多情況下蠢古,特別是在線性回歸中草讶,最小二乘法可以為我們提供一個封閉的到涂、解析的解決方案來尋找最佳參數(shù)。因此沉御,最小二乘法經(jīng)常用于擬合直線和多項式得到一組數(shù)據(jù)點吠裆,從而預(yù)測或解釋變量的行為试疙。
接下來祝旷,將先闡述線性回歸怀跛,并闡述兩個簡單的線性回歸模型吻谋。然后舉具體的例子漓拾,通過最小二乘法的思想求解出最佳模型參數(shù)骇两,從而實現(xiàn)對使用最小二乘法求解模型參數(shù)的理解哟旗。
1. 線性回歸
討論線性回歸(Linear Regression)時闸餐,同時結(jié)合回歸分析(Regression Analysis)一起討論下舍沙。
線性回歸和回歸分析都是統(tǒng)計學(xué)中常用的方法,但它們之間存在一些關(guān)鍵的區(qū)別:
在定義上剔宪,
- 線性回歸:線性回歸是一個預(yù)測方法拂铡,它試圖找到一個線性函數(shù)(對于簡單線性回歸)或多個線性函數(shù)(對于多元線性回歸),這些函數(shù)可以最好地描述兩個(或更多)變量之間的關(guān)系葱绒。
- 回歸分析:回歸分析是一個更廣泛的術(shù)語感帅,用于描述一個變量(或多個變量)與一個或多個其他變量之間關(guān)系的統(tǒng)計方法。線性回歸只是回歸分析中的一種形式地淀。
在類型方面,
- 線性回歸:主要關(guān)注線性關(guān)系帮毁。
- 回歸分析:可以包括線性回歸实苞、多項式回歸、邏輯回歸烈疚、嶺回歸等多種類型黔牵。
在目的上,
- 線性回歸:預(yù)測或解釋一個響應(yīng)變量和一個或多個預(yù)測變量之間的關(guān)系爷肝。
- 回歸分析:探索和建模變量之間的關(guān)系猾浦,這可能是線性的、非線性的阶剑,或者是其他的關(guān)系跃巡。
在應(yīng)用上,
- 線性回歸:當(dāng)我們認為變量之間存在線性關(guān)系時牧愁,通常使用線性回歸素邪。
- 回歸分析:可以應(yīng)用于各種關(guān)系,包括但不限于線性關(guān)系猪半。
簡而言之兔朦,線性回歸是回歸分析的一個子集偷线。回歸分析包括多種方法沽甥,用于模擬和解釋變量之間的關(guān)系声邦,而線性回歸專門關(guān)注線性關(guān)系。
給一個隨機樣本()摆舟,一個線性回歸模型假設(shè)
響應(yīng)變量(通常稱為因變量或目標(biāo)) 和
解釋變量(通常稱為自變量或特征)
之間的關(guān)系除了受到解釋變量的影響之外亥曹,還有其它變量的存在。我們加入一個誤差項 (也是一個隨機變量)來捕獲除了
之外任何對
的影響恨诱。
不過在本文的分析中媳瞪,我們主要是為了學(xué)習(xí)回歸模型,故簡化掉誤差項 的影響照宝。
同時蛇受,根據(jù)解釋變量數(shù)目的不同,線性回歸模型還分為了簡單線性回歸和多元線性回歸厕鹃。
1. 簡單線性回歸模型
描述了一個響應(yīng)變量 和一個解釋變量
之間的關(guān)系兢仰。
假設(shè)這種關(guān)系是線性的,也就是一次函數(shù)
其中 是響應(yīng)變量剂碴,
是解釋變量把将,
和
是回歸系數(shù)。
2. 多元線性回歸模型
描述了一個響應(yīng)變量 和兩個或兩個以上解釋變量
之間的關(guān)系忆矛。
2. 從線性回歸到最小二乘法秸弛,數(shù)值舉例并用最小二乘法求解回歸模型
最小二乘法的核心思想是尋找能使預(yù)測誤差平方和最小化的模型參數(shù)。
具體來說洪碳,考慮一個簡單的線性模型:
我們的目標(biāo)是找到一組 值,使得預(yù)測值
與實際值
之間的差異最小叼屠。這種差異可以通過殘差平方和(RSS)來衡量:
最小二乘法的目標(biāo)是最小化 RSS瞳腌。具體來說就是通過尋找能最小化 RSS 的 值來實現(xiàn)。
最小二乘法背后的直觀思想是盡量找到一個模型镜雨,使得預(yù)測值盡量接近觀測值嫂侍。這種方法是在基于誤差平方損失的情況下得出的。
接下來通過舉具體的數(shù)值例子荚坞,觀察最小二乘法的作用挑宠。
1. 單解釋變量,單響應(yīng)變量
這種單解釋變量單響應(yīng)變量的回歸模型颓影,可以用公式表征為
假設(shè)一個簡單線性回歸模型 各淀,在實驗中得到了四個數(shù)據(jù)點(
):(
)(
)(
)(
),找到最佳的匹配參數(shù)
诡挂。
分別將數(shù)據(jù)點代入到此線性回歸模型中有
最小二乘法采用的方法就是盡量使等號兩邊差的平方最小碎浇,也就是找出如下函數(shù)的最小值:
% 初始化符號變量
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);
% 輸出結(jié)果
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
最小值可以通過對 分別求
和
的偏導(dǎo)數(shù),并令其等于零得到奴璃。
% 對 b0 求偏導(dǎo)數(shù)
df_dbeta_0 = diff(f, beta_0);
% 對 b1 求偏導(dǎo)數(shù)
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
通過求解上述二元一次方程可以得到
% 設(shè)置偏導(dǎo)數(shù)等于零并求解
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
因此最佳回歸模型為 悉默。
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īng)變量
這種多解釋變量單響應(yīng)變量的回歸模型苟穆,可以用公式表征為
同樣基于上述回歸模型抄课,我們這里取解釋變量的個數(shù)為 ,那么有
雳旅,在實驗中得到了四個數(shù)據(jù)點(
):(
)(
)(
)(
)跟磨,找到最佳的匹配參數(shù)
。
分別將數(shù)據(jù)點代入到此線性回歸模型中有
得到差的函數(shù)有
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
分別求偏導(dǎo)數(shù)岭辣,并令其等于零
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
求解上述三元一次方程可以得到
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
因此最佳回歸模型為 吱晒。
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;