m基于分段蟻群算法優(yōu)化SVM的數(shù)據(jù)預(yù)測(cè)matlab仿真

1.算法描述

支持向量機(jī)(support vector machines, SVM)是二分類算法,所謂二分類即把具有多個(gè)特性(屬性)的數(shù)據(jù)分為兩類库物,目前主流機(jī)器學(xué)習(xí)算法中戚揭,神經(jīng)網(wǎng)絡(luò)等其他機(jī)器學(xué)習(xí)模型已經(jīng)能很好完成二分類撵枢、多分類,學(xué)習(xí)和研究SVM潜必,理解SVM背后豐富算法知識(shí)磁滚,對(duì)以后研究其他算法大有裨益;在實(shí)現(xiàn)SVM過程中维雇,會(huì)綜合利用之前介紹的一維搜索晒他、KKT條件陨仅、懲罰函數(shù)等相關(guān)知識(shí)。本篇首先通過詳解SVM原理触徐,后介紹如何利用python從零實(shí)現(xiàn)SVM算法锌介。

實(shí)例中樣本明顯的分為兩類猾警,黑色實(shí)心點(diǎn)不妨為類別一发皿,空心圓點(diǎn)可命名為類別二穴墅,在實(shí)際應(yīng)用中會(huì)把類別數(shù)值化温自,比如類別一用1表示,類別二用-1表示松捉,稱數(shù)值化后的類別為標(biāo)簽隘世。每個(gè)類別分別對(duì)應(yīng)于標(biāo)簽1丙者、還是-1表示沒有硬性規(guī)定营密,可以根據(jù)自己喜好即可评汰,需要注意的是,由于SVM算法標(biāo)簽也會(huì)參與數(shù)學(xué)運(yùn)算兰绣,這里不能把類別標(biāo)簽設(shè)為0。


線性核:

主要用于線性可分的情況,我們可以看到特征空間到輸入空間的維度是一樣的瓢阴,其參數(shù)少速度快荣恐,對(duì)于線性可分?jǐn)?shù)據(jù)叠穆,其分類效果很理想

通常首先嘗試用線性核函數(shù)來做分類臼膏,看看效果如何渗磅,如果不行再換別的

優(yōu)點(diǎn):方案首選、簡(jiǎn)單仔掸、可解釋性強(qiáng):可以輕易知道哪些feature是重要的

缺點(diǎn):只能解決線性可分的問題


高斯核:


通過調(diào)控參數(shù)起暮,高斯核實(shí)際上具有相當(dāng)高的靈活性鞋怀,也是使用最廣泛的核函數(shù)之一。

如果σ \sigmaσ選得很大的話密似,高次特征上的權(quán)重實(shí)際上衰減得非澈危快,所以實(shí)際上(數(shù)值上近似一下)相當(dāng)于一個(gè)低維的子空間蟆盹;

如果σ \sigmaσ選得很小逾滥,則可以將任意的數(shù)據(jù)映射為線性可分——當(dāng)然寨昙,這并不一定是好事舔哪,因?yàn)殡S之而來的可能是非常嚴(yán)重的過擬合問題槽棍。

優(yōu)點(diǎn):可以映射到無限維炼七、決策邊界更為多維特石、只有一個(gè)參數(shù)

缺點(diǎn):可解釋性差鳖链、計(jì)算速度慢芙委、容易過擬合


多項(xiàng)式核


多項(xiàng)式核函數(shù)可以實(shí)現(xiàn)將低維的輸入空間映射到高緯的特征空間灌侣,

但是多項(xiàng)式核函數(shù)的參數(shù)多

當(dāng)多項(xiàng)式的階數(shù)比較高的時(shí)候牛柒,核矩陣的元素值將趨于無窮大或者無窮小痊乾,計(jì)算復(fù)雜度會(huì)大到無法計(jì)算哪审。

優(yōu)點(diǎn):可解決非線性問題、主觀設(shè)置

缺點(diǎn):多參數(shù)選擇舌狗、計(jì)算量大

sigmoid核


采用sigmoid核函數(shù)扔水,支持向量機(jī)實(shí)現(xiàn)的就是只包含一個(gè)隱層,激活函數(shù)為 Sigmoid 函數(shù)的神經(jīng)網(wǎng)絡(luò)恋日。

應(yīng)用SVM方法岂膳,隱含層節(jié)點(diǎn)數(shù)目(它確定神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu))谈截、隱含層節(jié)點(diǎn)對(duì)輸入節(jié)點(diǎn)的權(quán)值都是在設(shè)計(jì)(訓(xùn)練)的過程中自動(dòng)確定的簸喂。

而且支持向量機(jī)的理論基礎(chǔ)決定了它最終求得的是全局最優(yōu)值而不是局部最小值喻鳄,也保證了它對(duì)于未知樣本的良好泛化能力而不會(huì)出現(xiàn)過學(xué)習(xí)現(xiàn)象除呵。

如圖爪喘,輸入層->隱藏層之間的權(quán)重是每個(gè)支撐向量颜曾,隱藏層的計(jì)算結(jié)果是支撐向量和輸入向量的內(nèi)積,隱藏層->輸出層之間的權(quán)重是支撐向量對(duì)應(yīng)的



蟻群算法是受到對(duì)真實(shí)螞蟻群覓食行為研究的啟發(fā)而提出秉剑。生物學(xué)研究表明:一群相互協(xié)作的螞蟻能夠找到食物和巢穴之間的最短路徑,而單只螞蟻則不能泛豪。生物學(xué)家經(jīng)過大量細(xì)致觀察研究發(fā)現(xiàn),螞蟻個(gè)體之間的行為是相互作用相互影響的。螞蟻在運(yùn)動(dòng)過程中,能夠在它所經(jīng)過的路徑上留下一種稱之為信息素的物質(zhì),而此物質(zhì)恰恰是螞蟻個(gè)體之間信息傳遞交流的載體侦鹏。螞蟻在運(yùn)動(dòng)時(shí)能夠感知這種物質(zhì),并且習(xí)慣于追蹤此物質(zhì)爬行,當(dāng)然爬行過程中還會(huì)釋放信息素诡曙。一條路上的信息素蹤跡越濃,其它螞蟻將以越高的概率跟隨爬行此路徑,從而該路徑上的信息素蹤跡會(huì)被加強(qiáng),因此,由大量螞蟻組成的蟻群的集體行為便表現(xiàn)出一種信息正反饋現(xiàn)象。某一路徑上走過的螞蟻越多,則后來者選擇該路徑的可能性就越大略水。螞蟻個(gè)體之間就是通過這種間接的通信機(jī)制實(shí)現(xiàn)協(xié)同搜索最短路徑的目標(biāo)的价卤。


蟻群算法是對(duì)自然界螞蟻的尋徑方式進(jìn)行模擬而得出的一種仿生算法。螞蟻在運(yùn)動(dòng)過程中聚请,能夠在它所經(jīng)過的路徑上留下信息素進(jìn)行信息傳遞炸卑,而且螞蟻在運(yùn)動(dòng)過程中能夠感知這種物質(zhì),并以此來指導(dǎo)自己的運(yùn)動(dòng)方向洒敏。因此,由大量螞蟻組成的蟻群的集體行為便表現(xiàn)出一種信息正反饋現(xiàn)象:某一路徑上走過的螞蟻越多,則后來者選擇該路徑的概率就越大。


2.仿真效果預(yù)覽

matlab2022a仿真結(jié)果如下:


3.MATLAB核心程序

%% 第一步:初始化

M ?= length(LB);%決策變量的個(gè)數(shù)

%蟻群位置初始化

X ?= zeros(M,N);

for i=1:M

x=unifrnd(LB(i),UB(i),1,N);

X(i,:)=x;

end

%輸出變量初始化

BESTX = cell(K,1);%細(xì)胞結(jié)構(gòu),每一個(gè)元素是M×1向量,記錄每一代的最優(yōu)個(gè)體

BESTY = zeros(K,1);%K×1矩陣,記錄每一代的最優(yōu)個(gè)體的評(píng)價(jià)函數(shù)值

k ????= 1;%迭代計(jì)數(shù)器初始化

Tau ??= ones(1,N);%信息素初始化

Y ????= zeros(1,N);%適應(yīng)值初始化


%% 第二步:迭代過程

while k<=K

k

YY=zeros(1,N);

for n=1:N

x ????= X(:,n);

J ????= func_fitness(X_train,X_test,T_train,T_test,x(1),x(2),x(3));

YY(n) = J;

end

maxYY ??= max(YY);

temppos = find(YY==maxYY);

POS ????= temppos(1);


%螞蟻隨機(jī)探路

for n=1:N

x ??= X(:,n);

J ??= func_fitness(X_train,X_test,T_train,T_test,x(1),x(2),x(3));

Fx ?= J;

mx ?= x + Lambda*rand*x; ??????????

J ??= func_fitness(X_train,X_test,T_train,T_test,mx(1),mx(2),mx(3));

Fmx = J;

if Fmx<Fx

X(:,n)=mx;

Y(n)=Fmx;

else

X(:,n)=x;

Y(n)=Fx;

end

end

%朝信息素最大的地方移動(dòng)

for n=1:N

rng(n*k);

if n~=POS & rand <= 1-k/K

.............................................................

end

end

indy ????= find(Y==0);

Y(indy) ?= 1;

%更新信息素并記錄

Tau ?????= Tau*(1-Rho);

maxY ????= max(Y);

minY ????= min(Y);

DeltaTau = Q*(maxY-Y)/(maxY-minY)/1e1;

p ???????= 0.05*Tau;

Tau ?????= (1-p).*Tau + DeltaTau;

minY ????= min(Y);

pos4 ????= find(Y==minY);

BESTX{k} = X(:,pos4(1));


%更新移動(dòng)速度

if k <= 1

e1 ????= minY;

Lambda = Lambda;

else

Lambda = Lambda + 0.15*(minY-e1);

e1 ????= minY;

end


k=k+1;

end

C0 ?????= BESTX{end}(1);

gamma0 ?= BESTX{end}(2);

tt0 ????= BESTX{end}(3);

save ACO.mat C0 gamma0 tt0

end



if SEL == 2

load ACO.mat

%調(diào)用四個(gè)最優(yōu)的參數(shù)

C ????= C0;

gamma = gamma0;

tt ???= tt0;


cmd ??????= ['-s 3',[' -t ', num2str(ceil(tt))],[' -c ', num2str(C)],[' -g ',num2str(gamma)],' -p 0.00001'];


model ????= svmtrain(T_train,X_train,cmd);


[yIn,input1ps] = mapminmax(In');

[Predict1,error1] = svmpredict(Out,yIn',model);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末圣勒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖啄骇,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件明未,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡披摄,警方通過查閱死者的電腦和手機(jī)虾标,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門善炫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窜醉,“玉大人擂涛,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵湿弦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)庸队,這世上最難降的妖魔是什么纽谒? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘希痴。我一直安慰自己刽辙,他們只是感情好撵溃,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹅心,像睡著了一般。 火紅的嫁衣襯著肌膚如雪先口。 梳的紋絲不亂的頭發(fā)上坑匠,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼称诗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜈首,可吹牛的內(nèi)容都是我干的艺蝴。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼缩擂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼博脑!你這毒婦竟也來了叉趣?” 一聲冷哼從身側(cè)響起阵谚,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤翼馆,失蹤者是張志新(化名)和其女友劉穎丢胚,沒想到半個(gè)月后仅乓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓬戚,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夸楣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了子漩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豫喧。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖痛单,靈堂內(nèi)的尸體忽然破棺而出嘿棘,到底是詐尸還是另有隱情,我是刑警寧澤旭绒,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布鸟妙,位于F島的核電站,受9級(jí)特大地震影響挥吵,放射性物質(zhì)發(fā)生泄漏重父。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一忽匈、第九天 我趴在偏房一處隱蔽的房頂上張望房午。 院中可真熱鬧,春花似錦丹允、人聲如沸郭厌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽折柠。三九已至,卻和暖如春批狐,著一層夾襖步出監(jiān)牢的瞬間扇售,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留承冰,地道東北人华弓。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像困乒,于是被迫代替她去往敵國(guó)和親寂屏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容