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

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

平方損失函數(shù)的形式只有極小值,沒(méi)有極大值,我們要使代價(jià)函數(shù)最小,我們要找到其極值點(diǎn),即偏導(dǎo)均為0的點(diǎn),代價(jià)函數(shù)對(duì)于各參數(shù)偏導(dǎo)如下:

令偏導(dǎo)為0得:

實(shí)際上若是令:

則有:

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


最小二乘法與多項(xiàng)式擬合
以下展示自己編寫(xiě)最小二乘法擬合多項(xiàng)式與MATLAB自帶函數(shù) polyfit 擬合多項(xiàng)式的參數(shù)對(duì)比,注意,為了和MATLAB自帶函數(shù)保持一致,θ向量變?yōu)榈谝粋€(gè)參數(shù)為 θn ,最后一個(gè)參數(shù)為 θo , X 矩陣也做了相應(yīng)的調(diào)整:
% 最小二乘法多項(xiàng)式擬合 % 原三次函數(shù)+隨機(jī)噪聲 f=@(x)x.^3+6.*x.^2-2.*x+4+(rand(size(x))-.5).*20; % 構(gòu)造原始數(shù)據(jù) x=-5:.1:5; y=f(x); % 自己寫(xiě)一個(gè)最小二乘 n=3;% 最高次數(shù)為三次 X=(x').^(n:-1:0); theta1=((X'*X)\X'*y')'; % MATLAB自帶多項(xiàng)式擬合 theta2=polyfit(x,y,n); % 輸出對(duì)比 disp(theta1) disp(theta2) % 一個(gè)小技巧,下面的寫(xiě)法能夠快速將 % 參數(shù)向量變成有關(guān)x的多項(xiàng)式匿名函數(shù) func=matlabFunction(poly2sym(theta1));
theta1=
0.9686 6.0178 -1.8845 4.3362
theta2=
0.9686 6.0178 -1.8845 4.3362
多項(xiàng)式擬合結(jié)果繪圖:
% 繪圖部分 % 保持坐標(biāo)區(qū)域不刷新并添加網(wǎng)格 ax=gca;hold(ax,'on');grid(ax,'on'); % 繪制原數(shù)據(jù)點(diǎn)和擬合結(jié)果 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;

最小二乘法與多元線性回歸
以下展示自己編寫(xiě)最小二乘法進(jìn)行多元線性回歸與MATLAB自帶函數(shù) regress 進(jìn)行多元線性回歸的參數(shù)對(duì)比:
% 最小二乘法多元線性回歸
% 原二元函數(shù)+隨機(jī)噪聲
f=@(x1,x2) 3.*x1+4.*x2+5+(rand(size(x1))-.5).*10;
% 構(gòu)造原始數(shù)據(jù)
[x1,x2]=meshgrid(-5:.5:5,-5:.5:5);
y=f(x1,x2);
% 自己寫(xiě)一個(gè)最小二乘
X=[x1(:),x2(:),ones(size(x1(:)))];
theta1=((X'*X)\X'*y(:));
% MATLAB多元線性回歸
theta2=regress(y(:),X);
% 輸出對(duì)比
disp(theta1)
disp(theta2)
% 構(gòu)造擬合結(jié)果的二元匿名函數(shù)
func=matlabFunction([sym('x1'),sym('x2'),1]*theta1);
theta1=
2.9285 4.0688 4.7520
theta2=
2.9285 4.0688 4.7520
多元線性回歸結(jié)果繪圖:
% 繪圖部分 % 保持坐標(biāo)區(qū)域不刷新并添加網(wǎng)格 ax=gca;hold(ax,'on');grid(ax,'on'); % 繪制原數(shù)據(jù)點(diǎn)和擬合結(jié)果 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機(jī)器學(xué)習(xí)MATLAB最小二乘法的兩種解讀的詳細(xì)內(nèi)容,更多關(guān)于MATLAB最小二乘法解讀的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)web方式logview的方法
這篇文章主要介紹了python實(shí)現(xiàn)web方式logview的方法,涉及Python基于web模塊操作Linux命令的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
教你使用Python建立任意層數(shù)的深度神經(jīng)網(wǎng)絡(luò)
這篇文章主要介紹了Python建立任意層數(shù)的深度神經(jīng)網(wǎng)絡(luò),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
conda下載各種包時(shí)如何避免版本不匹配問(wèn)題
在使用python和conda時(shí),由于Python版本不匹配,可能會(huì)導(dǎo)致一些問(wèn)題的出現(xiàn),本文主要介紹了conda下載各種包時(shí)如何避免版本不匹配問(wèn)題,感興趣的可以了解一下2024-03-03
教你如何使用Python快速爬取需要的數(shù)據(jù)
學(xué)點(diǎn)數(shù)據(jù)爬蟲(chóng)基礎(chǔ)能讓繁瑣的數(shù)據(jù)CV工作(Ctrl+C,Ctrl+V)成為自動(dòng)化就足夠了.作為一名數(shù)據(jù)分析師而并非開(kāi)發(fā)工程師,需要掌握的爬蟲(chóng)必備的知識(shí)內(nèi)容,能獲取需要的數(shù)據(jù)即可 ,需要的朋友可以參考下2021-06-06
Python利用docx模塊實(shí)現(xiàn)快速操作word文件
這篇文章主要為大家詳細(xì)介紹了Python如何利用docx模塊實(shí)現(xiàn)快速操作word文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09
Python 處理數(shù)據(jù)庫(kù)事務(wù)的操作方法
在Python中,處理數(shù)據(jù)庫(kù)事務(wù)通常涉及使用特定的數(shù)據(jù)庫(kù)驅(qū)動(dòng)如sqlite3、PyMySQL和psycopg2等,這些庫(kù)提供事務(wù)管理功能,允許開(kāi)發(fā)者手動(dòng)控制事務(wù)的提交和回滾,本文給大家介紹Python如何處理數(shù)據(jù)庫(kù)事務(wù),感興趣的朋友一起看看吧2024-10-10
django框架實(shí)現(xiàn)一次性上傳多個(gè)文件功能示例【批量上傳】
這篇文章主要介紹了django框架實(shí)現(xiàn)一次性上傳多個(gè)文件功能,結(jié)合實(shí)例形式分析了Django框架批量上傳相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-06-06
python代碼實(shí)現(xiàn)TSNE降維數(shù)據(jù)可視化教程
今天小編就為大家分享一篇python代碼實(shí)現(xiàn)TSNE降維數(shù)據(jù)可視化教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02

