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

下載本文檔

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

文檔簡(jiǎn)介

GradientDescent1.題目描述:用梯度下降法對(duì)所給數(shù)據(jù)進(jìn)行一元線性回歸。2.算法描述及步驟:回歸在數(shù)學(xué)上來說是給定一個(gè)點(diǎn)集,能夠用一條曲線去擬合之,如果這個(gè)曲線是一條直線,那就被稱為線性回歸,如果曲線是一條二次曲線,就被稱為二次回歸,回歸還有很多的變種,如locallyweighted回歸,logistic回歸,等等。對(duì)于梯度下降法來說,可以先對(duì)數(shù)據(jù)作出一個(gè)估計(jì)函數(shù):θ在這兒稱為參數(shù),表示每個(gè)特征的重要性。為了如果我們令X0=1,就可以用向量的方式來表示了:然后需要一個(gè)機(jī)制去評(píng)估θ是否比較好,所以說需要對(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ìn)行減少。對(duì)于函數(shù)J(θ)求偏導(dǎo):下面是更新的過程,也就是θi會(huì)向著梯度最小的方向進(jìn)行減少。θi表示更新之前的值,-后面的部分表示按梯度方向減少的量,α表示步長(zhǎng),也就是每次按照梯度減少的方向變化多少。3.程序代碼及解釋:clearall;loadshujusizeshuju=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;endJ=J/(2*sizeshuju(1));gJ=[diff(J,theta0)diff(J,theta1)];gJ=subs(gJ,theta1,theta11);gJ=subs(gJ,theta0,theta00);ifnorm(gJ)<0.3break;endtheta00=theta00-alpha*gJ(1);%根據(jù)公式,更新值。theta11=theta11-alpha*gJ(2);endh=theta11.*x+theta00;J=0;;fori=1:sizeshuju(1)J=J+(h(i)-y(i)).^2;endx2=1:0.01:5;%畫擬合直線和點(diǎn)數(shù)據(jù)分布y2=theta00+theta11.*x2;plot(x2,y2,'r');theta00%顯示最終theta11J=J/(2*sizeshuju(1));%計(jì)算損失函數(shù)值n%顯示算法迭代次數(shù)4.實(shí)驗(yàn)結(jié)果:由結(jié)果可知,算法迭代63次才得以收斂,theta的值為[1.2463,1.9055]。擬合直線:損失函數(shù)J隨n的變化曲線:LogisticRegression1.題目描述:YouareofferedaYaleandORLdataset(Facialdatasets).YouareaskedtowriteaprograminMATLAB,touselogisticregressiontodoabinaryclassificationtaskandtestyourmethod.Theclasses(twoclasses)、thenumberoftrainingsamplesandtestsamplesaredecidedbyyourself.Pleasecomputetherecognitionaccuracy.2.算法描述:對(duì)于目標(biāo)值是離散變量的兩分類問題,假設(shè)目標(biāo)值是{0,1},所以先改變模型使其預(yù)測(cè)值在[0,1]之間,選擇這樣一個(gè)函數(shù):有了這個(gè)函數(shù),對(duì)于對(duì)于一個(gè)樣例,就可以得到它分類的概率值:將上述公式組合起來,就可以得到公式如下:而在logistic回歸問題中的損失函數(shù)與線性回歸中的損失函數(shù)不同,這里定義的為:對(duì)上式求最大似然估計(jì)并用梯度下降法求解極值,得到參數(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.程序代碼及解釋:clearall;%因?yàn)閘ogistic只能進(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ù)的第二、三類挑出來,作為要處理數(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&&iter<maxiterhypothesis=-(train_data*theta);%fori=1:300hypothesis(i)=1/(1+exp(hypothesis(i)));endloss=0;%更新theta值forj=1:thetasizeupdata=(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;endifabs(J-J_old)<esp%判斷損失函數(shù)值是否收斂flag=0;enditer=iter+1;enditerright=0;fori=1:60%對(duì)測(cè)試樣本進(jìn)行測(cè)試,計(jì)算準(zhǔn)確率hypo=1/(1+exp(-test_data(i,:)*theta));ifhypo>=0.5iftest_label(i)==1right=right+1;endelseiftest_label(i)==0right=right+1;endendendacc=right/605.運(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容易產(chǎn)生過擬合的現(xiàn)象,這對(duì)分類結(jié)果顯然是很不利的。Perceptron1.題目描述: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)該設(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.程序代碼及解釋: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;endendthetabx2=-2:0.1:3;y2=(-b(1)-theta(1,1).*x2)/theta(1,2);%畫兩條判別線,將數(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:3T_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è)輸出的形式,剛開始做的時(shí)候有點(diǎn)丈二和尚摸不著頭腦,后來思考了一會(huì)兒才想出來可以把每個(gè)輸出都進(jìn)行一次感知器學(xué)習(xí),每一端都輸出一個(gè)0,1,這樣最后再一組合,就可以把數(shù)據(jù)進(jìn)行多分類了。Softmaxregression1.問題描述:用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í)中,我們知道logisticregression很適合做一些非線性方面的分類問題,不過它只適合處理二分類的問題,且在給出分類結(jié)果時(shí)還會(huì)給出結(jié)果的概率。但是如果要進(jìn)行多分類的問題,我們就需要用到另外一種算法,softmaxregression.在Logisticregression中,所學(xué)習(xí)的系統(tǒng)的假設(shè)為:其對(duì)應(yīng)的損失函數(shù)為:可以看出,給定一個(gè)樣本,就輸出一個(gè)概率值,該概率值表示的含義是這個(gè)樣本屬于類別’1’的概率,因?yàn)榭偣膊庞?個(gè)類別,所以另一個(gè)類別的概率直接用1減掉剛剛的結(jié)果即可。如果現(xiàn)在的假設(shè)是多分類問題,比如說總共有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ù)如下所示:注意公式中的是一個(gè)向量,表示的是針對(duì)第i個(gè)類別而求得的。所以上面的公式還只是一個(gè)類別的偏導(dǎo)公式,我們需要求出所有類別的偏導(dǎo)公式。表示的是損失函數(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ù)值也是一樣的。這說明這個(gè)參數(shù)不是唯一解。為了解決這個(gè)問題,可以加入規(guī)則項(xiàng),加入規(guī)則項(xiàng)后的損失函數(shù)表達(dá)式如下:這個(gè)時(shí)候的偏導(dǎo)函數(shù)表達(dá)式如下所示:接下來就是用數(shù)學(xué)優(yōu)化的方法來求解了,顯而易見,softmaxregression是logisticregression的擴(kuò)展。3.編程實(shí)現(xiàn)步驟:Step0:初始化常數(shù)和參數(shù);Step1:導(dǎo)入數(shù)據(jù);Step2:計(jì)算softmaxCost;Step3:梯度下降法求解;Step4:參數(shù)學(xué)習(xí);Step5:數(shù)據(jù)測(cè)試。4.程序代碼及解釋:clearall;A=load('C:\Users\lisai\Desktop\IndianaPines.mat');alpha=1e-10;data=A.pixels;data=data';label=A.Label;label(label==0)=17;%將類標(biāo)為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(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);whileabs(cost_old-cost)<0.000000001%更新thetacost_old=cost;m=train_data*theta';m=exp(m);forj=1:17fori=1:trsize(1)h(i,j)=m(i,j)/sum(m(i,:));iftrain_label(i)==jsign=1;%指示變量elsesign=0;end%此處theta是一個(gè)二維向量,所以更新公式和logistic不太一樣thetagrad(j,:)=thetagrad(j,:)-1/trsize(1)*(sign-h(i,j))*train_data(i)+lambda*theta(j,:);endendtheta=theta+thetagrad*alpha;%theta更新公式fori=1:trsize(1)forj=1:17iftrain_label(i)==jsign=1;elsesign=0;endcost=cost-1/trsize(1)*sign*log(h(i,j));%+lambda/2*sum(theta(:).^2);endendcost=cost+lambda/2*sum(theta(:).^2);iter=iter+1;endsoft=theta*test_data';[M,I]=max(soft);right=0;esch_right=zeros(1,17);fori=1:size(test_data,1)%統(tǒng)計(jì)準(zhǔn)確率forj=1:17ifI(i)==test_label(i)right=right+1;ifI(i)==j-1esch_right(j)=esch_right(j)+1;endendendendfori=1:17each_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)行說明:6.實(shí)驗(yàn)總結(jié):Softmaxregression就是對(duì)logisticregression的擴(kuò)展,它可以進(jìn)行多分類,有了logisticregression的基礎(chǔ),在實(shí)現(xiàn)Softmaxregression的時(shí)候就容易了許多,只需要把原來的一列的變?yōu)橐粋€(gè)二維的值即可,在思維和數(shù)據(jù)處理上都增加了一定的難度。Svm1.問題描述:用svm分類器實(shí)現(xiàn)對(duì)IndianPines遙感數(shù)據(jù)的分類:2.算法描述及基本流程:SVM的主要思想可以概括為兩點(diǎn):⑴它是針對(duì)線性可分情況進(jìn)行分析,對(duì)于線性不可分的情況,通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間使其線性可分,從而使得高維特征空間采用線性算法對(duì)樣本的非線性特征進(jìn)行線性分析成為可能;⑵它基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化理論之上在特征空間中建構(gòu)最優(yōu)分割超平面,使得學(xué)習(xí)器得到全局最優(yōu)化,并且在整個(gè)樣本空間的期望風(fēng)險(xiǎn)以某個(gè)概率滿足一定上界。先把svm算法的基本流程說明一下。首先是函數(shù)間隔與幾何間隔,由它們引出最優(yōu)間隔分類器;為了多快好的解決最優(yōu)間隔分類器問題,使用了拉格朗日對(duì)偶性性質(zhì),于是,先要理解原始優(yōu)化問題與對(duì)偶問題及它們?cè)谑裁礂l件(KKT條件)下最優(yōu)解等價(jià),然后寫出最優(yōu)間隔分類器的對(duì)偶形式;通過對(duì)最有間隔分類器對(duì)偶問題求解,發(fā)現(xiàn)求解時(shí)目標(biāo)函數(shù)中存在內(nèi)積形式的計(jì)算,據(jù)此引入了核技法;引入核技法后就得到了完完全全的svm求解問題,使用序列最小化算法(SMO)進(jìn)行求解,svm算法很復(fù)雜,這只是對(duì)其作出的一個(gè)很抽象的解釋。聲明一下,svm算法講原來的類標(biāo)[0,1]變?yōu)榱薣-1,1],假設(shè)函數(shù)變?yōu)椋菏褂脭?shù)學(xué)語言對(duì)最優(yōu)間隔分類器進(jìn)行表示:該問題不易解決,因?yàn)榧s束是非凸性約束,最優(yōu)解容易達(dá)到局部最優(yōu)。于是,我們對(duì)該問題進(jìn)行轉(zhuǎn)換該問題對(duì)應(yīng)的拉格朗日方程是:然后再求解其對(duì)偶問題:再利用核技法等對(duì)其進(jìn)行求解即可。3.程序代碼及解釋:clearall;load('IndianaPines.mat');%導(dǎo)入數(shù)據(jù)maxnum=21025;classnum=16;traintestnum=0;fivenum=0;k=1;everynum=30;eachnum=zeros(classnum,1);thenum=0;fori=1:maxnumif(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);fori=1:16forj=1:traintestnumif(train_test_label(j)==i)pixel_train(:,k)=train_test(:,j);traineachnum(i)=traineachnum(i)+1;label_train(k)=i;k=k+1;thenum=th

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論