python機器學習MATLAB最小二乘法的兩種解讀
最小二乘法
大部分的最小二乘法公式推導,都是使用的 代價函數(shù)偏導 的方式來求得的,在這里首先展示如何通過代價函數(shù)求偏導的方式得到最小二乘公式,再展示李揚老師講解的如何由向量到子空間的距離得來最小二乘法公式。
代價函數(shù)與最小二乘法
假設我們的擬合結果為:

則平方損失函數(shù)為:

平方損失函數(shù)的形式只有極小值,沒有極大值,我們要使代價函數(shù)最小,我們要找到其極值點,即偏導均為0的點,代價函數(shù)對于各參數(shù)偏導如下:

令偏導為0得:

實際上若是令:

則有:

向量到子空間的距離與最小二乘法


最小二乘法與多項式擬合
以下展示自己編寫最小二乘法擬合多項式與MATLAB自帶函數(shù) polyfit 擬合多項式的參數(shù)對比,注意,為了和MATLAB自帶函數(shù)保持一致,θ向量變?yōu)榈谝粋€參數(shù)為 θn ,最后一個參數(shù)為 θo , X 矩陣也做了相應的調整:
% 最小二乘法多項式擬合 % 原三次函數(shù)+隨機噪聲 f=@(x)x.^3+6.*x.^2-2.*x+4+(rand(size(x))-.5).*20; % 構造原始數(shù)據(jù) x=-5:.1:5; y=f(x); % 自己寫一個最小二乘 n=3;% 最高次數(shù)為三次 X=(x').^(n:-1:0); theta1=((X'*X)\X'*y')'; % MATLAB自帶多項式擬合 theta2=polyfit(x,y,n); % 輸出對比 disp(theta1) disp(theta2) % 一個小技巧,下面的寫法能夠快速將 % 參數(shù)向量變成有關x的多項式匿名函數(shù) func=matlabFunction(poly2sym(theta1));
theta1=
0.9686 6.0178 -1.8845 4.3362
theta2=
0.9686 6.0178 -1.8845 4.3362
多項式擬合結果繪圖:
% 繪圖部分 % 保持坐標區(qū)域不刷新并添加網(wǎng)格 ax=gca;hold(ax,'on');grid(ax,'on'); % 繪制原數(shù)據(jù)點和擬合結果 plot(x,y,'o','MarkerFaceColor',[94,142,179]./255); plot(x,func(x),'Color',[0,64,115]./255,'LineWidth',2); % 修飾一下 ax.FontName='cambria'; ax.LineWidth=1.5; ax.GridLineStyle='--'; ax.XColor=[1,1,1].*.3; ax.YColor=[1,1,1].*.3; ax.ZColor=[1,1,1].*.3;

最小二乘法與多元線性回歸
以下展示自己編寫最小二乘法進行多元線性回歸與MATLAB自帶函數(shù) regress 進行多元線性回歸的參數(shù)對比:
% 最小二乘法多元線性回歸
% 原二元函數(shù)+隨機噪聲
f=@(x1,x2) 3.*x1+4.*x2+5+(rand(size(x1))-.5).*10;
% 構造原始數(shù)據(jù)
[x1,x2]=meshgrid(-5:.5:5,-5:.5:5);
y=f(x1,x2);
% 自己寫一個最小二乘
X=[x1(:),x2(:),ones(size(x1(:)))];
theta1=((X'*X)\X'*y(:));
% MATLAB多元線性回歸
theta2=regress(y(:),X);
% 輸出對比
disp(theta1)
disp(theta2)
% 構造擬合結果的二元匿名函數(shù)
func=matlabFunction([sym('x1'),sym('x2'),1]*theta1);
theta1=
2.9285 4.0688 4.7520
theta2=
2.9285 4.0688 4.7520
多元線性回歸結果繪圖:
% 繪圖部分 % 保持坐標區(qū)域不刷新并添加網(wǎng)格 ax=gca;hold(ax,'on');grid(ax,'on'); % 繪制原數(shù)據(jù)點和擬合結果 mesh(x1,x2,func(x1,x2),'FaceColor','flat','FaceAlpha',.8) scatter3(x1(:),x2(:),y(:),20,'filled') % 修飾一下 ax.FontName='cambria'; ax.LineWidth=1.5; ax.GridLineStyle='--'; ax.XColor=[1,1,1].*.3; ax.YColor=[1,1,1].*.3; ax.ZColor=[1,1,1].*.3; view(30,20)

以上就是python機器學習MATLAB最小二乘法的兩種解讀的詳細內容,更多關于MATLAB最小二乘法解讀的資料請關注腳本之家其它相關文章!
相關文章
教你使用Python建立任意層數(shù)的深度神經網(wǎng)絡
這篇文章主要介紹了Python建立任意層數(shù)的深度神經網(wǎng)絡,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
教你如何使用Python快速爬取需要的數(shù)據(jù)
學點數(shù)據(jù)爬蟲基礎能讓繁瑣的數(shù)據(jù)CV工作(Ctrl+C,Ctrl+V)成為自動化就足夠了.作為一名數(shù)據(jù)分析師而并非開發(fā)工程師,需要掌握的爬蟲必備的知識內容,能獲取需要的數(shù)據(jù)即可 ,需要的朋友可以參考下2021-06-06
Python利用docx模塊實現(xiàn)快速操作word文件
這篇文章主要為大家詳細介紹了Python如何利用docx模塊實現(xiàn)快速操作word文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2022-09-09
django框架實現(xiàn)一次性上傳多個文件功能示例【批量上傳】
這篇文章主要介紹了django框架實現(xiàn)一次性上傳多個文件功能,結合實例形式分析了Django框架批量上傳相關實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2019-06-06
python代碼實現(xiàn)TSNE降維數(shù)據(jù)可視化教程
今天小編就為大家分享一篇python代碼實現(xiàn)TSNE降維數(shù)據(jù)可視化教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

