機(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è),還剩18頁(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)介

1、Gradient Descent1.題目描述: 用梯度下降法對(duì)所給數(shù)據(jù)進(jìn)行一元線性回歸。2.算法描述及步驟:回歸在數(shù)學(xué)上來(lái)說(shuō)是給定一個(gè)點(diǎn)集,能夠用一條曲線去擬合之,如果這個(gè)曲線是一條直線,那就被稱為線性回歸,如果曲線是一條二次曲線,就被稱為二次回歸,回歸還有很多的變種,如locally weighted回歸,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ù)(loss funct

2、ion)或者錯(cuò)誤函數(shù)(error function),描述h函數(shù)不好的程度,在下面,我們稱這個(gè)函數(shù)為J函數(shù)。在這兒我們可以做出下面的一個(gè)錯(cuò)誤函數(shù):梯度下降法是按下面的流程進(jìn)行的:(1)首先對(duì)賦值,這個(gè)值可以是隨機(jī)的,也可以讓是一個(gè)全零的向量。(2)改變的值,使得J()按梯度下降的方向進(jìn)行減少。對(duì)于函數(shù)J()求偏導(dǎo):下面是更新的過(guò)程,也就是i會(huì)向著梯度最小的方向進(jìn)行減少。i表示更新之前的值,-后面的部分表示按梯度方向減少的量,表示步長(zhǎng),也就是每次按照梯度減少的方向變化多少。3.程序代碼及解釋:clear all;load shujusizeshuju=size(shuju);x=shuju(:,

3、1)'y=shuju(:,2)'plot(x,y,'+');hold on;syms theta0 theta1theta00=1;%初始化值theta11=1; alpha=0.005;%設(shè)定迭代步長(zhǎng)n=0;J=0;while 1 n=n+1; J=0; for i=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,the

4、ta0,theta00); if norm(gJ)<0.3 break; end theta00=theta00-alpha*gJ(1);%根據(jù)公式,更新值。 theta11=theta11-alpha*gJ(2);endh=theta11.*x+theta00; J=0; for i=1:sizeshuju(1) J=J+(h(i)-y(i).2; endx2=1:0.01:5;%畫(huà)擬合直線和點(diǎn)數(shù)據(jù)分布y2=theta00+theta11.*x2;plot(x2,y2,'r');theta00 %顯示最終theta11J=J/(2*sizeshuju(1) ;%計(jì)算損失

5、函數(shù)值n %顯示算法迭代次數(shù)4.實(shí)驗(yàn)結(jié)果:由結(jié)果可知,算法迭代63次才得以收斂,theta 的值為1.2463,1.9055。擬合直線:損失函數(shù)J隨n的變化曲線:Logistic Regression1.題目描述:You are offered a Yale and ORL dataset (Facial datasets). You are asked to write a program in MATLAB, to use logistic regression to do a binary classification task and test your method. The cla

6、sses (two classes)、the number of training samples and test samples are decided by yourself . Please compute the recognition accuracy.2.算法描述:對(duì)于目標(biāo)值是離散變量的兩分類問(wèn)題,假設(shè)目標(biāo)值是0,1,所以先改變模型使其預(yù)測(cè)值在0,1之間,選擇這樣一個(gè)函數(shù):有了這個(gè)函數(shù),對(duì)于對(duì)于一個(gè)樣例,就可以得到它分類的概率值:將上述公式組合起來(lái),就可以得到公式如下:而在logistic回歸問(wèn)題中的損失函數(shù)與線性回歸中的損失函數(shù)不同,這里定義的為:對(duì)上式求最大似然估計(jì)并用梯度下

7、降法求解極值,得到參數(shù)的更新迭代公式:根據(jù)上式,將預(yù)測(cè)得到的數(shù)據(jù)的分類,標(biāo)準(zhǔn)分類帶入上式并迭代,直至算法收斂,就可以得到最終的參數(shù)。3.編程實(shí)現(xiàn)步驟:(1)初始化參數(shù),迭代步長(zhǎng);(2)導(dǎo)入數(shù)據(jù);(3)計(jì)算損失函數(shù);(4)梯度下降法求解;(5)參數(shù)更新;(6)測(cè)試數(shù)據(jù),得到準(zhǔn)確率。4.程序代碼及解釋:clear all;%因?yàn)閘ogistic只能進(jìn)行2分類,而Yale and ORL數(shù)據(jù)中卻有很多類,從中選擇兩類的話難免數(shù)據(jù)兩太少,所以,本程序用到了weather數(shù)據(jù),同樣可以進(jìn)行正確的練習(xí)A=load('C:UserslisaiDesktopweather.mat');data

8、=A.Data;label=A.Label;%原始數(shù)據(jù)有多類,但是由于logistic regression只能進(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);dat

9、a=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;wh

10、ile flag && iter<maxiter hypothesis=-(train_data*theta);% for i=1:300 hypothesis(i)=1/(1+exp(hypothesis(i); end loss=0;%更新theta值 for j=1:thetasize updata=(hypothesis-train_label)'*train_data(:,j)*alpha; theta(j)=theta(j)-updata; end J_old=J; for i=1:300%計(jì)算損失函數(shù) J=J+(hypothesis(i)-train

11、_label(i)2; end if abs(J-J_old)<esp %判斷損失函數(shù)值是否收斂 flag=0; end iter=iter+1;enditerright=0;for i=1:60 %對(duì)測(cè)試樣本進(jìn)行測(cè)試,計(jì)算準(zhǔn)確率 hypo=1/(1+exp(-test_data(i,:)*theta); if hypo>=0.5 if test_label(i)=1 right=right+1; end else if test_label(i)=0 right=right+1; end endendacc=right/605.運(yùn)行結(jié)果:6.反思總結(jié):老師給的數(shù)據(jù)有好多種類,不適

12、合用logistic進(jìn)行分類,所以從中選擇了兩類數(shù)據(jù)進(jìn)行分類。在數(shù)據(jù)處理上不是很熟練,本道題需要隨機(jī)在原始數(shù)據(jù)中選擇訓(xùn)練樣本和測(cè)試樣本,才能得到較好的結(jié)果。算法原理很簡(jiǎn)單,就是不停的迭代,更新系數(shù),但logistic容易產(chǎn)生過(guò)擬合的現(xiàn)象,這對(duì)分類結(jié)果顯然是很不利的。Perceptron1.題目描述:Train the designed network using the training samples provided below,and test the effectiveness of the network using the test samples.The training exa

13、mples are:P_train=-1 1 0 3 2 2 1 -1 -2 -1;0 1 2 1 -1 0 -2 2 1 1;T_train=0 0 0 0 0 0 0 1 1 1; 0 0 0 0 1 1 1 0 0 0;The testing examples are:P_test= -2,0,3;2,1,-1;T_test=1,0,0;0,0,1;After the above process, draw the learned classification line and the corresponding samples in the 2D space.2.算法描述: (1)本題

14、中感知器有兩個(gè)輸出,有三個(gè)類別,所以應(yī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,令,則下次迭代的(5)重復(fù)上述步驟,直至達(dá)到最大迭代次數(shù)100。3.程序代碼及解釋:clear all;p_train=-1 1 0 3 2 2 1 -1 -2 -1; 0 1 2 1 -1 0 -2 2 1 1;t_train=0 0 0 0 0 0 0 1 1 1; 0 0 0 0 1 1 1 0 0 0;P_test= -2,0,3; 2,1,-1;'T_test=zeros(2,3);p

15、=p_train'x=p(:,1);P_test(:,1)y=p(:,2);P_test(:,2)plot(x,y,'*');hold ont=t_train'psize=size(p);theta=0 0;0 0; %初始化thetab(1)=0;for time=1:100 for i=1:psize(1) e=t_train(1,i)-hardlim(theta(1,:)*p(i,:)'+b(1);%e=t-a theta(1,:)=theta(1,:)+e*p(i,:);%theta=theta+e*p b(1)=b(1)+e;%b=b+e,以下

16、同上 endendb(2)=0;for time=1:100 for i=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; endendthetabx2=-2:0.1:3;y2=(-b(1)-theta(1,1).*x2)/theta(1,2);%畫(huà)兩條判別線,將數(shù)據(jù)分類plot(x2,y2,'r');hold onx3=-2:0.1:3;y2=(-b(2)-theta(2,1).*x2)/theta(2,2);p

17、lot(x2,y2,'g')for i=1:2 for j=1:3 T_test(i,j)=hardlim(theta(i,:)*P_test(j,:)'+b(i); endendT_test4.運(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)行多分類了。Soft

18、max regression1.問(wèn)題描述: 用Softmax分類器 實(shí)現(xiàn)對(duì)IndianPines 遙感數(shù)據(jù)的分類:實(shí)驗(yàn)要求:1. 統(tǒng)計(jì)分類正確率(AA,OA即:每一類的正確率的平均,和整體正確率)2. 訓(xùn)練時(shí)間。3. 參數(shù)分析2.算法原理:在之前的softmax學(xué)習(xí)中,我們知道logistic regression很適合做一些非線性方面的分類問(wèn)題,不過(guò)它只適合處理二分類的問(wèn)題,且在給出分類結(jié)果時(shí)還會(huì)給出結(jié)果的概率。但是如果要進(jìn)行多分類的問(wèn)題,我們就需要用到另外一種算法,softmax regression.在Logistic regression中,所學(xué)習(xí)的系統(tǒng)的假設(shè)為:其對(duì)應(yīng)的損失函數(shù)為:可

19、以看出,給定一個(gè)樣本,就輸出一個(gè)概率值,該概率值表示的含義是這個(gè)樣本屬于類別1的概率,因?yàn)榭偣膊庞?個(gè)類別,所以另一個(gè)類別的概率直接用1減掉剛剛的結(jié)果即可。如果現(xiàn)在的假設(shè)是多分類問(wèn)題,比如說(shuō)總共有k個(gè)類別。在softmax regression中這時(shí)候的系統(tǒng)的假設(shè)為:其中的參數(shù)不再是列向量,而是一個(gè)矩陣,矩陣的每一行可以看做是一個(gè)類別所對(duì)應(yīng)分類器的參數(shù),總共有k行。所以矩陣可以寫(xiě)成下面的形式:此時(shí),系統(tǒng)損失函數(shù)的方程為:其中的1.是一個(gè)指示性函數(shù),即當(dāng)大括號(hào)中的值為真時(shí),該函數(shù)的結(jié)果就為1,否則其結(jié)果就為0。當(dāng)然了,如果要用梯度下降法,牛頓法,或者L-BFGS法求得系統(tǒng)的參數(shù)的話,就必須求出損

20、失函數(shù)的偏導(dǎo)函數(shù),softmax regression中損失函數(shù)的偏導(dǎo)函數(shù)如下所示: 注意公式中的是一個(gè)向量,表示的是針對(duì)第i個(gè)類別而求得的。所以上面的公式還只是一個(gè)類別的偏導(dǎo)公式,我們需要求出所有類別的偏導(dǎo)公式。表示的是損失函數(shù)對(duì)第j個(gè)類別的第l個(gè)參數(shù)的偏導(dǎo)。比較有趣的時(shí),softmax regression中對(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á)式如下:這個(gè)時(shí)候的偏導(dǎo)函數(shù)表達(dá)式如下所示:接下來(lái)就是用數(shù)學(xué)優(yōu)化的方法來(lái)求解了,顯

21、而易見(jiàn),softmax regression 是logistic regression的擴(kuò)展。3.編程實(shí)現(xiàn)步驟:Step 0: 初始化常數(shù)和參數(shù);Step 1: 導(dǎo)入數(shù)據(jù);Step 2: 計(jì)算softmaxCost;Step 3: 梯度下降法求解;Step 4: 參數(shù)學(xué)習(xí);Step 5: 數(shù)據(jù)測(cè)試。4.程序代碼及解釋:clear all;A=load('C:UserslisaiDesktopIndianaPines.mat');alpha=1e-10;data=A.pixels;data=data'label=A.Label;label(label=0)=17;%將類標(biāo)

22、為0的數(shù)據(jù)類標(biāo)換位17dsize=size(data);column=ones(dsize(1),1);data=column,data;dsize=size(data);lsize=size(label);ran=randperm(dsize(1);data=data(ran,:);label=label(ran,:);train_data=data(1:15000,:);%選擇訓(xùn)練樣本和測(cè)試樣本train_label=label(1:15000,:);test_data=data(15001:end,:);test_label=label(15001:end,:);trsize=size(

23、train_data);tesize=size(test_data);theta=0.005*randn(17*dsize(2),1);theta=reshape(theta,17,dsize(2);lambda=1e-4;cost=0;cost_old=0;%初始化各個(gè)參數(shù)iter=0;sign=0;thetagrad=zeros(17,dsize(2);h=zeros(trsize(1),17);while abs(cost_old-cost)<0.000000001 %更新theta cost_old=cost; m=train_data*theta' m=exp(m);

24、for j=1:17 for i=1:trsize(1) h(i,j)=m(i,j)/sum(m(i,:); if train_label(i)=j sign=1; %指示變量 else sign=0; end %此處theta是一個(gè)二維向量,所以更新公式和logistic不太一樣thetagrad(j,:)=thetagrad(j,:)-1/trsize(1)*(sign-h(i,j)*train_data(i)+lambda*theta(j,:); end end theta=theta+thetagrad*alpha; %theta更新公式 for i=1:trsize(1) for j

25、=1:17 if train_label(i)=j sign=1; else sign=0; end cost=cost-1/trsize(1)*sign*log(h(i,j);%+lambda/2*sum(theta(:) . 2); end end cost=cost+lambda/2*sum(theta(:) . 2); iter=iter+1;endsoft=theta*test_data'M,I=max(soft);right=0;esch_right=zeros(1,17); for i=1:size(test_data,1)%統(tǒng)計(jì)準(zhǔn)確率 for j=1:17 if I(i

26、)=test_label(i) right=right+1; if I(i)=j-1 esch_right(j)=esch_right(j)+1; end end end endfor i=1:17 each_acc(i)=esch_right(i)/size(find(test_label=i)endacc=right/6025each_accitertheta5.實(shí)現(xiàn)結(jié)果:(1)整體準(zhǔn)確率:每一類的準(zhǔn)確率:其均值為0.4366。(2)訓(xùn)練時(shí)間:可以發(fā)現(xiàn),迭代次數(shù)為2344次。(3)參數(shù)分析: Theta數(shù)據(jù)太大,不能全部展示,只截一部分進(jìn)行說(shuō)明:6.實(shí)驗(yàn)總結(jié): Softmax regres

27、sion就是對(duì)logistic regression的擴(kuò)展,它可以進(jìn)行多分類,有了logistic regression的基礎(chǔ),在實(shí)現(xiàn)Softmax regression的時(shí)候就容易了許多,只需要把原來(lái)的一列的變?yōu)橐粋€(gè)二維的值即可,在思維和數(shù)據(jù)處理上都增加了一定的難度。Svm1.問(wèn)題描述: 用svm分類器 實(shí)現(xiàn)對(duì)IndianPines 遙感數(shù)據(jù)的分類:2.算法描述及基本流程:SVM的主要思想可以概括為兩點(diǎn):它是針對(duì)線性可分情況進(jìn)行分析,對(duì)于線性不可分的情況,通過(guò)使用非線性映射算法將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間使其線性可分,從而 使得高維特征空間采用線性算法對(duì)樣本的非線性特征進(jìn)

28、行線性分析成為可能;它基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化理論之上在特征空間中建構(gòu)最優(yōu)分割超平面,使得學(xué)習(xí)器得到全局最優(yōu)化,并且在整個(gè)樣本空間的期望風(fēng)險(xiǎn)以某個(gè)概率滿足一定上界。 先把svm算法的基本流程說(shuō)明一下。首先是函數(shù)間隔與幾何間隔,由它們引出最優(yōu)間隔分類器;為了多快好的解決最優(yōu)間隔分類器問(wèn)題,使用了拉格朗日對(duì)偶性性質(zhì),于是,先要理解原始優(yōu)化問(wèn)題與對(duì)偶問(wèn)題及它們?cè)谑裁礂l件(KKT 條件)下最優(yōu)解等價(jià),然后寫(xiě)出最優(yōu)間隔分類器的對(duì)偶形式;通過(guò)對(duì)最有間隔分類器對(duì)偶問(wèn)題求解,發(fā)現(xiàn)求解時(shí)目標(biāo)函數(shù)中存在內(nèi)積形式的計(jì)算,據(jù)此引入了核技法;引入核技法后就得到了完完全全的svm求解問(wèn)題,使用序列最小化算法(SMO)進(jìn)行求解,

29、svm算法很復(fù)雜,這只是對(duì)其作出的一個(gè)很抽象的解釋。 聲明一下,svm算法講原來(lái)的類標(biāo)0,1變?yōu)榱?1,1,假設(shè)函數(shù)變?yōu)椋菏褂脭?shù)學(xué)語(yǔ)言對(duì)最優(yōu)間隔分類器進(jìn)行表示:該問(wèn)題不易解決,因?yàn)榧s束是非凸性約束,最優(yōu)解容易達(dá)到局部最優(yōu)。于是,我們對(duì)該問(wèn)題進(jìn)行轉(zhuǎn)換該問(wèn)題對(duì)應(yīng)的拉格朗日方程是:然后再求解其對(duì)偶問(wèn)題:再利用核技法等對(duì)其進(jìn)行求解即可。3.程序代碼及解釋:clear all;load('IndianaPines.mat');%導(dǎo)入數(shù)據(jù)maxnum = 21025 ;classnum=16;traintestnum=0;fivenum=0 ; k=1;everynum=30;eachnu

30、m =zeros(classnum,1);thenum=0 ; for i=1:maxnum if(Label(i)=0) eachnum(Label(i)=eachnum(Label(i)+1; traintestnum = traintestnum+1; train_test(:,traintestnum) = pixels(:,i); train_test_label(traintestnum) = Label(i); endendtraineachnum=zeros(classnum,1);for i=1:16 for j=1:traintestnum if( train_test_label(j) = i ) pixel_train(:,k) = train_test( :,j ); traineachnum(i) = traineachnum(i)+1; label_train(k) = i ; k=k+1; thenum=thenum+1; if( thenum

溫馨提示

  • 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)論