正则化最小二乘法——神经网络与机器学习笔记2
生活随笔
收集整理的這篇文章主要介紹了
正则化最小二乘法——神经网络与机器学习笔记2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考Andrew Ng 公開課的推導
一些公式
trA=∑ni=1Aii
trAB=trBA
trABC=trCBA=trBCA
trA=trAT
if a∈R, tra=a
?AtrAB=BT
?AtrABATC=CAB+CTABT
?θJ=??????????J?θ0?J?θ1??J?θn?????????
?Af(A)=???????f?A11??A?An1????A?A1n??A?Ann??????
正則化最小二乘法推導
對于花費函數J=∑i(d(i)?wTx)+λwTw ,為使它取最小值,則應取?wJ=0.
J=∑i(d(i)?wTx)+λwTw=(D?XTw)2+λwTw=(DT?wTX)(D?XTw)+λwTw=DTD?wTXD?DTXTw+wTXXTw+λwTw=trDTD?trwTXD?trDTXTw+trwTXXTw+trλwTw=trDTD?2trDTXTw+trwTXXTw+trλwTw
?wJ=?2?wtrwTXD+?wtrwTXXTw+?wtrλwTw
?wtrDTXTw=?wtrwDTXT?(注:trAB=trBA)=XD?(注:?AtrAB=BT)
?wtrwTXXTw=?wtrwwTXXT?(注:trABC=trCBA=trBCA)=?wtrwIwTXXT=XXTwI+XXTwI?(注:?AtrABATC=CAB+CTABT)=2XXTw
?wtrλwTw=?wtrλwwT=λ?wtrwIwTI=2λw
所以,
XXTw+λw(XXT+λI)ww=XD=XD=(XXT+λI)?1XD
綜上得出正則化最小二乘法公式: w=(XXT+λI)?1XD
當 λ=0時即為常規的最小二乘法公式: w=(XXT)?1XD
利用正則化最小二乘法進行訓練
function [w errRate cost] = RegularizedLeastSquares(x,d,lambda) if nargin==2lambda=0; end [n,m]=size(x); w=(x*x'+lambda*eye(n,n))\x*d; y=sign(x'*w); %錯誤率 errRate=sum(d~=y)/m; %花費函數 cost=sum((d-y).^2)+lambda*w'*w; end測試,隨機數的產生參考http://blog.csdn.net/jinjgkfadfaf/article/details/53200819
close all; %產生隨機數 n1=1000;n2=1000;n=n1+n2; [x1,y1,x2,y2]=GenRandomData(8,-5,3,n1,n2); samps=[ones(n1,1),x1, y1;ones(n2,1),x2,y2]; d=[ones(n1,1);-ones(n2,1)]; %打亂順序 % randI=randperm(n); % samps(randI,:)=samps(1:n,:); % d(randI)=d(1:n); %利用感知機進行訓練 w0 = [-10;-10;-10];etaLim = 5e-6;x = samps';epochN =5000; %[w, err] = Rosenblatt(x,d,w0,etaLim,epochN) %[w, err] = RosenblattStpDes(x,d,w0,etaLim,epochN) lambda=0.1; [w errRate cost] = RegularizedLeastSquares(x,d,lambda) %畫圖 figure; plot(x1,y1,'Marker','x','Color','r','LineStyle','none'); hold on; plot(x2,y2,'Marker','o','Color','b','LineStyle','none'); xx=[-10:0.1:10]; yy=-w(2,1)*xx/w(3,1)-w(1,1)/w(3,1); plot(xx,yy,'k');測試結果,距離為1
距離為-5
總結
以上是生活随笔為你收集整理的正则化最小二乘法——神经网络与机器学习笔记2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础(第九章)面向对象
- 下一篇: 黄山头国家森林公园