機(jī)器學(xué)習(xí)上機(jī)作業(yè)_第1頁(yè)
機(jī)器學(xué)習(xí)上機(jī)作業(yè)_第2頁(yè)
機(jī)器學(xué)習(xí)上機(jī)作業(yè)_第3頁(yè)
機(jī)器學(xué)習(xí)上機(jī)作業(yè)_第4頁(yè)
機(jī)器學(xué)習(xí)上機(jī)作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——機(jī)器學(xué)習(xí)上機(jī)作業(yè)

GradientDescent

1.題目描述:

用梯度下降法對(duì)所給數(shù)據(jù)進(jìn)行一元線性回歸。

2.算法描述及步驟:

回歸在數(shù)學(xué)上來(lái)說(shuō)是給定一個(gè)點(diǎn)集,能夠用一條曲線去擬合之,假使這個(gè)曲線是一條直線,那就被稱為線性回歸,假使曲線是一條二次曲線,就被稱為二次回歸,回歸還有好多的變種,如locallyweighted回歸,logistic回歸,等等。

對(duì)于梯度下降法來(lái)說(shuō),可以先對(duì)數(shù)據(jù)作出一個(gè)估計(jì)函數(shù):

θ在這兒稱為參數(shù),表示每個(gè)特征的重要性。為了假使我們令X0=1,就可以用向量的方式來(lái)表示了:

然后需要一個(gè)機(jī)制去評(píng)估θ是否比較好,所以說(shuō)需要對(duì)我們做出的h函數(shù)進(jìn)行評(píng)估,一般這個(gè)函數(shù)稱為損失函數(shù)(lossfunction)或者錯(cuò)誤函數(shù)(errorfunction),描述h函數(shù)不好的程度,在下面,我們稱這個(gè)函數(shù)為J函數(shù)。在這兒我們可以做出下面的一個(gè)錯(cuò)誤函數(shù):

梯度下降法是按下面的流程進(jìn)行的:

(1)首先對(duì)θ賦值,這個(gè)值可以是隨機(jī)的,也可以讓?duì)仁且粋€(gè)全零的向量。(2)改變?chǔ)鹊闹?,使得J(θ)按梯度下降的方向進(jìn)行減少。對(duì)于函數(shù)J(θ)求偏導(dǎo):

下面是更新的過(guò)程,也就是θi會(huì)向著梯度最小的方向進(jìn)行減少。θi表示

更新之前的值,-后面的部分表示按梯度方向減少的量,α表示步長(zhǎng),也就是每次依照梯度減少的方向變化多少。

3.程序代碼及解釋:clearall;

loadshuju

sizeshuju=size(shuju);x=shuju(:,1)';y=shuju(:,2)';plot(x,y,'+');holdon;

symstheta0theta1theta00=1;%初始化?值theta11=1;

alpha=0.005;%設(shè)定迭代步長(zhǎng)n=0;J=0;while1n=n+1;J=0;

fori=1:sizeshuju(1)

J=J+(theta0+theta1.*x(i)-y(i)).^2;end

J=J/(2*sizeshuju(1));

gJ=[diff(J,theta0)diff(J,theta1)];gJ=subs(gJ,theta1,theta11);gJ=subs(gJ,theta0,theta00);ifnorm(gJ)根據(jù)上式,將預(yù)計(jì)得到的x(i)數(shù)據(jù)的分類h?(x(i)),標(biāo)準(zhǔn)分類y(i)帶入上式

并迭代,直至算法收斂,就可以得到最終的參數(shù)?。

3.編程實(shí)現(xiàn)步驟:

(1)初始化參數(shù)?,迭代步長(zhǎng)?;(2)導(dǎo)入數(shù)據(jù);(3)計(jì)算損失函數(shù);(4)梯度下降法求解;(5)參數(shù)更新;

(6)測(cè)試數(shù)據(jù),得到確鑿率。

4.程序代碼及解釋:

clearall;

%由于logistic只能進(jìn)行2分類,而YaleandORL數(shù)據(jù)中卻有好多類,從中選擇兩類的話難免數(shù)據(jù)兩太少,所以,本程序用到了weather數(shù)據(jù),同樣可以進(jìn)行正確的練習(xí)A=load('C:\\Users\\lisai\\Desktop\\weather.mat');data=A.Data;

label=A.Label;%原始數(shù)據(jù)有多類,但是由于logisticregression只能進(jìn)行兩分類的任務(wù),所以,把數(shù)據(jù)的其次、三類挑出來(lái),作為要處理數(shù)據(jù)的第0、1類。select=find(label>1);data=data(select,:);label=label(select,:);label(label==2)=0;label(label==3)=1;dsize=size(data);ran=randperm(dsize(1));data=data(ran,:);label=label(ran,:);onesColum=ones(dsize(1),1);data=[data,onesColum];

train_data=data(1:300,:);%隨機(jī)選擇測(cè)試樣本和訓(xùn)練樣本。test_data=data(301:dsize(1),:);test_label=label(301:dsize(1),:);train_label=label(1:300,:);thetasize=dsize(2)+1;

theta=zeros(thetasize,1);%初始化theta的值。esp=0.00001;%loss=inf;iter=0;

maxiter=10000;%定義最大迭代次數(shù),防止算法不收斂

alpha=0.1;%初始化J,alphaJ=0;flag=1;

whileflag%fori=1:300

hypothesis(i)=1/(1+exp(hypothesis(i)));end

loss=0;%更新theta值forj=1:thetasize

updata=(hypothesis-train_label)'*train_data(:,j)*alpha;theta(j)=theta(j)-updata;endJ_old=J;

fori=1:300%計(jì)算損失函數(shù)

J=J+(hypothesis(i)-train_label(i))^2;end

ifabs(J-J_old)=0.5

iftest_label(i)==1right=right+1;endelse

iftest_label(i)==0right=right+1;endendend

acc=right/60

5.運(yùn)行結(jié)果:

6.反思總結(jié):

老師給的數(shù)據(jù)有好多種類,不適合用logistic進(jìn)行分類,所以從中選擇了兩類數(shù)據(jù)進(jìn)行分類。在數(shù)據(jù)處理上不是很熟練,本道題需要隨機(jī)在原始數(shù)據(jù)中選擇訓(xùn)練樣本和測(cè)試樣本,才能得到較好的結(jié)果。算法原理很簡(jiǎn)單,就是不停的迭代,更新系數(shù),但logistic簡(jiǎn)單產(chǎn)生過(guò)擬合的現(xiàn)象,這對(duì)分類結(jié)果顯然是很不利的。

Perceptron

1.題目描述:

Trainthedesignednetworkusingthetrainingsamplesprovidedbelow,andtesttheeffectivenessofthenetworkusingthetestsamples.Thetrainingexamplesare:

P_train=[-1103221-1-2-1;

0121-10-2211];

T_train=[0000000111;

0000111000];

Thetestingexamplesare:P_test=[-2,0,3;

2,1,-1;];

T_test=[1,0,0;

0,0,1];

Aftertheaboveprocess,drawthelearnedclassificationlineandthecorrespondingsamplesinthe2Dspace.

2.算法描述:

(1)此題中感知器有兩個(gè)輸出,有三個(gè)類別,所以應(yīng)當(dāng)設(shè)計(jì)兩個(gè)感知器進(jìn)

行判別;

(2)初始化增廣權(quán)向量w和b,迭代次數(shù)time=100;(3)輸入訓(xùn)練數(shù)據(jù)p_train,計(jì)算判別函數(shù)值

(4)設(shè)數(shù)據(jù)正確輸出為t,令e?t?a,則下次迭代的

a?hardlim?w*p_train?b?w_new?w_old?e*p,b_new?b_old?e;

(5)重復(fù)上述步驟,直至達(dá)到最大迭代次數(shù)100。

3.程序代碼及解釋:

clearall;

p_train=[-1103221-1-2-1;0121-10-2211];t_train=[0000000111;0000111000];P_test=[-2,0,3;2,1,-1;]';T_test=zeros(2,3);p=p_train';

x=[p(:,1);P_test(:,1)]y=[p(:,2);P_test(:,2)]plot(x,y,'*');holdont=t_train';psize=size(p);

theta=[00;00];%初始化thetab(1)=0;fortime=1:100fori=1:psize(1)

e=t_train(1,i)-hardlim(theta(1,:)*p(i,:)'+b(1));%e=t-atheta(1,:)=theta(1,:)+e*p(i,:);%theta=theta+e*pb(1)=b(1)+e;%b=b+e,以下同上endendb(2)=0;fortime=1:100fori=1:psize(1)

e=t_train(2,i)-hardlim(theta(2,:)*p(i,:)'+b(2));theta(2,:)=theta(2,:)+e*p(i,:);b(2)=b(2)+e;end

endthetab

x2=-2:0.1:3;

y2=(-b(1)-theta(1,1).*x2)/theta(1,2);%畫(huà)兩條判別線,將數(shù)據(jù)分類plot(x2,y2,'r');holdonx3=-2:0.1:3;

y2=(-b(2)-theta(2,1).*x2)/theta(2,2);plot(x2,y2,'g')fori=1:2forj=1:3

T_test(i,j)=hardlim(theta(i,:)*P_test(j,:)'+b(i));endendT_test

4.運(yùn)行結(jié)果:

(1)數(shù)據(jù)點(diǎn)及分界限:

(2)theta、b、測(cè)試數(shù)據(jù)輸出結(jié)果:

與題目給出結(jié)果對(duì)比,完全一致!

5.反思總結(jié):

在課堂上學(xué)的感知器學(xué)習(xí)算法都是多個(gè)輸入,單個(gè)輸出,但是這道題卻是

多個(gè)輸入多個(gè)輸出的形式,剛開(kāi)始做的時(shí)候有點(diǎn)丈二和尚摸不著頭腦,后來(lái)思考了一會(huì)兒才想出來(lái)可以把每個(gè)輸出都進(jìn)行一次感知器學(xué)習(xí),每一端都輸出一個(gè)0,1,這樣最終再一組合,就可以把數(shù)據(jù)進(jìn)行多分類了。

Softmaxregression

1.問(wèn)題描述:

用Softmax分類器實(shí)現(xiàn)對(duì)IndianPines遙感數(shù)據(jù)的分類:

試驗(yàn)要求:

1.統(tǒng)計(jì)分類正確率(AA,OA即:每一類的正確率的平均,和整體正確率)2.訓(xùn)練時(shí)間。3.參數(shù)分析

2.算法原理:

在之前的softmax學(xué)習(xí)中,我們知道logisticregression很適合做一些非線性方面的分類問(wèn)題,不過(guò)它只適合處理二分類的問(wèn)題,且在給出分類結(jié)果時(shí)還會(huì)給出結(jié)果的概率。但是假使要進(jìn)行多分類的問(wèn)題,我們就需要用到另外一種算法,softmaxregression.

在Logisticregression中,所學(xué)習(xí)的系統(tǒng)的假設(shè)為:

其對(duì)應(yīng)的損失函數(shù)為:

可以看出,給定一個(gè)樣本,就輸出一個(gè)概率值,該概率值表示的含義是這個(gè)樣本屬于類別’1’的概率,由于總共才有2個(gè)類別,所以另一個(gè)類別的概率直接用1減掉剛剛的結(jié)果即可。假使現(xiàn)在的假設(shè)是多分類問(wèn)題,譬如說(shuō)總共有k個(gè)類別。在softmaxregression中這時(shí)候的系統(tǒng)的假設(shè)為:

其中的參數(shù)?不再是列向量,而是一個(gè)矩陣,矩陣的每一行可以看做是一個(gè)類別所對(duì)應(yīng)分類器的參數(shù),總共有k行。所以矩陣?可以寫成下面的形式:

此時(shí),系統(tǒng)損失函數(shù)的方程為:

其中的1{.}是一個(gè)指示性函數(shù),即當(dāng)大括號(hào)中的值為真時(shí),該函數(shù)的結(jié)果就為1,否則其結(jié)果就為0。

當(dāng)然了,假使要用梯度下降法,牛頓法,或者L-BFGS法求得系統(tǒng)的參數(shù)的話,就必需求出損失函數(shù)的偏導(dǎo)函數(shù),softmaxregression中損失函數(shù)的偏導(dǎo)函數(shù)如下所示:

注意公式中

?J(?)的是一個(gè)向量,表示的是針對(duì)第i個(gè)類別而求得的。??jl所以上面的公式還只是一個(gè)類別的偏導(dǎo)公式,我們需要求出所有類別的偏導(dǎo)公式。

??jJ(?)表示的是損失函數(shù)對(duì)第j個(gè)類別的第l個(gè)參數(shù)的偏導(dǎo)。

比較好玩兒的時(shí),softmaxregression中對(duì)參數(shù)的最優(yōu)化求解不只一個(gè),每當(dāng)求得一個(gè)優(yōu)化參數(shù)時(shí),假使將這個(gè)參數(shù)的每一項(xiàng)都減掉同一個(gè)數(shù),其得到的損失函數(shù)值也是一樣的。這說(shuō)明這個(gè)參數(shù)不是唯一解。為了解決這個(gè)問(wèn)題,可以加

入規(guī)則項(xiàng),參與規(guī)則項(xiàng)后的損失函數(shù)表達(dá)式如下:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論