شبکه عصبیsvm ( ر پشتیبانی بردا ماشینها) Support VectorMachine ا متلب و عملی ب آموزش تئوری
• فهرست SVM Hardmargin(Linear SVM)
• SVM Softmargin(Linear SVM)
• Code of SVM Softmargin
• SVM Softmargin+ Kernel
• Code of SVM Softmargin+ Kernel
• Toolbox SVM in Matlab with code
Producer by: FatemeOrdikhani
مقدمهنوع خاصی از شبکه های (SVM)ماشین بردار پشتیبان یا
مانند )عصبی هستند که بر خلاف سایر انواع شبکه عصبی MLP و(RBF به جای کمینه کردن خطا، اقدام به کمینهاین . کردن ریسک عملیاتی طبقه بندی یا مدل سازی می کند
ابزار، بسیار قدرتمند است و در زمینه های مختلفی چون طبقه می تواند مورد (رگرسیون)بندی، خوشه بندی و مدل سازی
بگیرداستفاده قرار
. که تفکیک کننده این دو مجموعه نمیباشد H3با توجه به شکل اصولا
SVMکه هردو تفکیک کننده هستند و با روش H2و H1در مورد به دنبال بهترین تفکیک کننده مینیمم ریسک عملیاتی هستیم که در
.ادامه به آن میپردازیمکار میکردیم MLPتوجه داشته باشید که هرگاه با یک شبکه عصبی
به یک اندازه میتوانند به عنوان جداکننده عمل کنند H2و H1هردو
.تفکیک کننده بهتری است H2خواهیم دید که SVMولی در
.به صورت زیر است HyperPlanبعدی معادله با مفهوم nدر یک فضای
𝑤𝑖𝑥𝑖𝑖 +b=0
که در حالت دو بعدی خط و در حالت سه بعدی صفحه زیر را خواهیم داشت
𝑤1𝑥1 + 𝑤2𝑤2 + 𝑏 = 0
𝑤1𝑥1 +𝑤2𝑤2 +𝑤3𝑥3 + 𝑏 = 0
∋W,xکه در آن 𝑅𝑛
ومعادله تفکیک کننده در حالت کلی به صورت
𝑤𝜏x+b=0
.و به صورت زیر فضای صفحه را به دو قسمت تقسیم میکند. میباشد
SVM خطی
11
11
}1,1{,
,...2,1};,{
bif
bif
ni
xwy
xwy
yRx
yx
ii
ii
i
m
i
ii
.در واقع بیان این موارد به صورت زیر میباشد
:داده داریم nفرض کنیدمجموعه ای از
فاصله ایجاد شده مقاومت در برابر ریسک انتخاب تفکیک کننده را افزایش میدهد .بیشتری داشته باشد d یعنی تفکیک کننده ای بهتر عمل میکند که فاصله
.را محاسبه کنیم d حال میخواهیم این فاصله
و میدانیم هر نقطه روی بردار نرمال w. شکل زیر را در نظر بگیرید .خواهد بود w فاصله اش ز مبدا مضربی از Lخط
𝑥0 = 𝑡𝑤
𝑤𝜏𝑥0 + 𝑏 = 0 → 𝑡𝑤𝜏w+b=0
T=- 𝑏
𝑤 2=- 𝑏
𝑤𝜏𝑤
𝑥0 =t 𝑤 =- 𝑏
𝑤
یعنی در حالت کلی فاصله از مبدا به صورت زیر میباشد
𝑥0 = 𝑏
𝑤
منفی باشد b فاصله از مبدا وقتی
max𝑑1 + 𝑑2 =1
𝑤+
1
𝑤=
2
𝑤
لذا مساله ای که میخواهیم حل کنیم به صورت زیر است
و این معادل است با
min1
2𝑤 2=
1
2𝑤𝜏w
S.t if 𝑦𝑖=1 → 𝑤𝜏 𝑥𝑖 + 𝑏 ≥ 1 ∀ 𝑖 if 𝑦𝑖=1 → 𝑤𝜏 𝑥𝑖 + 𝑏 ≤ −1 ∀ 𝑖
نوشت primal problemو همچنین میتوان قیدهای مساله را به صورت زیر به عنوان
min1
2𝑤𝜏w
S.t 𝑦𝑖(𝑤𝜏 𝑥𝑖 + 𝑏) − 1 ≥ 1 ∀ 𝑖
برای حل این مساله ضریبی از قیود مساله را به تابع هدف (شبیه مسائل که اصطلاحا تابع جریمه نام دارند)اضافه میکنیم
𝐿𝑃 =1
2𝑤𝜏w- 𝛼𝑖𝑖 𝑦𝑖 𝑤
𝜏𝑥𝑖 + 𝑏 − 1
یعنی مساله . ) است (saddle point)میبینیم که جواب مساله یک نقطه زینی یا LPدر حل مساله
.(ماکزیمم شود (α) و نسبت به تعدادی دیگر (b,w)باید نسبت به تعدادی از متغیرها مینیمم
𝜕𝐿𝑝
𝜕𝑤=0 → 𝑤 − 𝛼𝑖𝑖 𝑦𝑖𝑥𝑖=0 → 𝑤 = 𝛼𝑖𝑖 𝑦𝑖𝑥𝑖
𝜕𝐿𝑃
𝜕𝑏=0 → 𝛼𝑖𝑖 𝑦𝑖=0
.به صورت زیر به دست میآید LDمساله LPبا جایگذاری این مقادیر در مساله
iiijjj
i ji
jijjji
ii
iiii
xxyy
xxyyxyxy
i
b
jjjjLD
2
1
12
1
:ماکزیمم سازی بود αبا توجه به اینکه مساله نسبت به
i
tS
i
ii
i
iijijij
i ji
y
xxyy
,0
0
.
2
1max
i
tS
i
ii
i
iijijij
i ji
y
xxyy
,0
0
.
2
1min
با قرار دادن
Hh
hxxyy
ijji j
i
ijjiji
2
1
RRnnn
H ,
𝑓 =−1⋮−1
− 𝛼𝑖𝑖 =𝑓𝜏𝛼
Rn
f
لذا مساله دوگان به صورت زیر خواهد بود
i
tS
H
oblemDoal
i
ii
i y
f
,0
0
.
2
1min
Pr
است که 2یا برنامه ریزی درجه Quadratic Programmingاین یک مساله
𝛼این مساله را حل میکند و جواب quadprogدر متلب برنامه .را بدست میدهد
برای بهینه سازی روی این مساله اعمال شود K.K.Tهرگاه شرایط
برای جواب بهینه باید شرایط زیر برقرار باشد
𝛼𝑖 = 0 → 𝑦𝑖 𝑤
𝜏𝑥𝑖 + 𝑏 − 1 > 0
𝛼𝑖 > 0 → 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 − 1 = 0
𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 =1 → 𝑦2 𝑤𝜏𝑥𝑖 + 𝑏 =𝑦𝑖
𝑤𝜏𝑥𝑖 + 𝑏 =𝑦𝑖 if 𝛼𝑖 > 0
را به صورت زیر تعریف میکنیممجموعه بردارهای پشتیبان
S= 𝑖 | 𝛼𝑖 > 0
𝛼𝑖 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 − 1 =0
𝑦𝑖 = +1 → 𝑤𝜏𝑥𝑖 + 𝑏 > +1
𝑦𝑖 = −1 → 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 < −1
bsigny xw i
بیشینه dوزنها و بایاس به نحوی تعیین میشوند که . میباشد single perseptronکه شکل کلی یک
.میبرد H2شودو این همان راه حلی است که جواب مساله را به سمت
و در حالت کلی کاربردی است SVM hard margin آنچه که تا بدین جای کار گفته شد مربوط به
را معرفی SVM soft marginنیست زیرا یک طبقه بندی صرفا خطی است و برای کاربردی کردن
. میکنیم
باشد یا برعکس در اینصورت برای بردار پشتیبان Bدر داخل کلاس Aفرض کنید عنصری از کلاس
.یک مقدار جریمه در نظر گرفته میشود ان عنصر
𝑖𝑓 y=+1 → 𝑤𝑡𝑥𝑖+b+𝛿𝑖 ≥ 1 𝑤𝑡𝑥𝑖+b≥ 1 − 𝛿𝑖 𝛿 ≥ 0 𝑖𝑓 y=+1 → 𝑤𝑡𝑥𝑖+b-𝛿𝑖 ≤ −1 𝛿 ≥ 0 𝑤𝑡𝑥𝑖+b≤ −1 + 𝛿𝑖
→ 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 ≥ 1 − 𝛿𝑖
ام را نشان دهد iمیزان جریمه برای تخدی عضو 𝛿𝑖 فرض کنید
min 1
2𝑤𝜏w+C 𝛿𝑖𝑖
𝑆. 𝑡 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 ≥ 1 − 𝛿𝑖 ∀𝑖 𝛼𝑖
𝛿𝑖 ≥ 0 ∀𝑖 𝜇𝑖
:مساله به صورت زیر در می اید
نام دارد و مولفه هایی که با رنگ قرمز نشان داده شده اند ضرایب لاگرانژ Primal Problemمساله فوق
.بکار میرود Doalنام دارد که برای تعریف مساله
𝐿𝑃 =1
2𝑤𝜏w+C 𝛿𝑖 − 𝛼𝑖𝑖𝑖 𝑦𝑖 𝑤
𝜏𝑥𝑖 + 𝑏 − 1 + 𝛿𝑖 - 𝜇𝑖𝛿𝑖 (1)𝑖
w,b, 𝛿را نسبت به LPلذا مساله
𝜇و𝛼مینیمم و نسبت به
.توجه کنید که جواب بهین یک نقطه زینی برای مساله است. ماکزیمم خواهیم کرد
iiii
i
ii
i
iii
i
CCLP
b
LP
ww
LP
y
xy
00
00
00
لذا سه مولفه زیر را داریم
𝛼𝑖 ≥ 0, 𝜇𝑖 ≥ 0 𝛼𝑖+𝜇𝑖=C
0 ≤ 𝛼𝑖 ≤ 𝐶0 ≤ 𝜇𝑖 ≤ 𝐶
معروف هستند را به دست می آوریم Box Constraintو نتایج زیر را که به
.مساله به صورت زیر در می آید Hard marginهمانند بخش ( 1)و با جایگذاری در
iC
tS
i
ii
i
iijijij
i ji
y
xxyy
,0
0
.
2
1min
میباشد و میتوان گفت در Hardو Softتنها تفاوت بین box consدر واقع
برابر بینهایت است Cضریب Hardقسمت
iC
tS
H
i
ii
i y
f
,0
0
.
2
1min
است که 2یا برنامه ریزی درجه Quadratic Programmingاین یک مساله
𝛼این مساله را حل میکند و جواب quadprogدر متلب برنامه .را بدست میدهد
را به صورت زیر تعریف میکنیممجموعه بردارهای پشتیبان
𝑆 = 𝑖 | 0 ≤ 𝛼𝑖 ≤ 𝐶
Si
iiSi
i xwybSS
b11
QP(***)
𝑤 = 𝛼𝑖𝑦𝑖𝑖
𝑥𝑖
:برای مساله خواهیم داشت K.K.Tبا بررسی شرایط
𝛼𝑖 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 − 1 + 𝛿𝑖 =0
𝜇𝑖𝛿𝑖= 𝐶 − 𝛼𝑖 𝛿𝑖=0
در حالتهای𝛼𝑖=0 𝛼𝑖=C
بردارهای پشتیبان بدست نمی آیند و لذا تنها حالت زیر را بررسی میکنیم
0 < 𝛼𝑖 < 𝐶 → 0 < 𝜇𝑖 < 𝐶 → 𝛿𝑖=0 𝑦𝑖 𝑤
𝜏𝑥𝑖 + 𝑏 =1 𝑤𝜏𝑥𝑖 + 𝑏=𝑦𝑖 → 𝑏 = 𝑦𝑖-𝑤
𝜏𝑥𝑖 S= 𝑖 | 0 < 𝛼𝑖 < 𝐶
در عمل به صورت Cرا در نرم افزار متلب پیاده سازی خواهیم کرد و میزان Soft marginبه صورت عملی
یا PSOیا GAاز الگوریتمهای بهینه سازی Cآزمون و خطا تعیین میشود البته میتوان برای تعیین بهینه مقدار
ICA میتوان استفاده کرد.... و
برای حل حالت باینری در نظر گرفته شده است که کلاسبندی SVMیک Boxbinformaticدر نرم افزار متلب
.مسائل باینری را میتوان با آن انجام داد
.در ادامه آنچه تا بدین جا را آموخته ایم را در متلب پیاده سازی میکنیم
. در نظر گرفته ایم 1-و 1شامل عنصرهای 10با اندازه yویک بردار xداده دو بعدی 10برای این کار
در متلب SVM (softmargin)نوشتن کد
می باشد را وارد yو بردار xورودی های مساله که شامل ماتریس dataدر قسمت
تقسیم میکنیم ClassBو ClassAداده های خود را به دو کلاس yمیکنیم و رحسب بردار
.هم این دو کلاس را به صورت مجزا نشان داده ایم plotدر قسمت
:حال برای حل مساله
iC
tS
H
i
ii
i y
f
,0
0
.
2
1min
QuadProg
را محاسبه میکنیم و سپس با تعریف Hابتدا با توجه به تعریف
اماده حل مساله فوق میشویم fو همچنین بردار Cمقدار
𝑓 =−1⋮−1
hxxyy ijjiji
.را در متلب فراخوانی میکنیم تا با روش این مساله بیشتر آشنا شویم Quadprogحال برای حل مساله
متلب همین کلمه را فراخوانی کنید خواهید دید که برای حل این مساله آبشن هایی helpهرگاه در
نیز در نظر گرفته شده است از جمله این دو الگوریتم که ما از الگوریتم دوم برای حل مساله استفاده
کردیم
Algorithm Choose the algorithm: •'interior-point-convex' (default) •'trust-region-reflective'
را با توجه به فرمولهای زیر بدست می آوریم bو wو Sمقادیر مجموعه alpha بعد از حل این مساله و محاسبه
𝑤 = 𝛼𝑖𝑦𝑖𝑖
𝑥𝑖
𝑆 = 𝑖 | 0 ≤ 𝛼𝑖 ≤ 𝐶
Si
iiSi
i xwybSS
b11
و خطوط موازی با آن رسم شده است wx+b=0و همینطور خط A,Bهم مقادیر کلاسهای plotدر قسمت
هم با دایره هایی دور انها نشان داده شده اند Sو اعضای مجموعه
داده هایی که برای این مساله استفاده کرده ام به قرار زیر است 1.5000 0.3000 -1.0000 0.3000 0.4000 -1.0000 1.0000 1.3000 -1.0000 1.9000 0.8000 1.0000 1.8000 1.9000 1.0000 1.4000 3.0000 1.0000 1.8000 3.0000 1.0000 0.3000 1.4000 -1.0000 1.4000 4.0000 1.0000 2.3000 2.1000 1.0000 3.0000 1.0000 1.0000 0.7000 2.4000 -1.0000 -0.8000 1.2000 -1.0000 3.5000 2.4000 1.0000 2.3000 4.1000 1.0000 1.3000 5.1000 1.0000 -2.0000 0.5000 -1.0000 -2.0000 -1.0000 -1.0000 -1.0000 -0.8000 -1.0000 0.9000 -0.5000 -1.0000
clc; close all; %% data syms x y x=[]’; size(x) y=[]; size(y) data=[x' y']; n=numel(y); ClassA=find(y==1); ClassB=find(y==-1);
مورد نظر خود را در yبردار xبرای استفاده از کدها کافیست فقط ماتریس
ورودی این دو قرار دهید ودر متلب اجرا کنید
%SVM SoftMargin
%% desine svm H=zeros(n,n); for i=1:n for j=i:n H(i,j)=y(i)*y(j)*x(:,i)'*x(:,j);H(j,i)=H(i,j); end end %% f=-ones(n,1); C=10; %% QuadProg %with use of quadprog in matlab: we solve QP(***) Aeq=y; beq=0; lb=zeros(n,1); ub=C*ones(n,1);
%% Calling QP-function Algorithm{1}='trust-region-reflective'; %we don't use this Alg Algorithm{2}='interior-point-convex'; options=optimset('Algorithm',Algorithm{2},'display','iter','MaxIter',10); alpha=quadprog(H,f,[],[],Aeq,beq,lb,ub,[],options)'; AlmostZero=(abs(alpha)<max(abs(alpha))/1e5); alpha(AlmostZero)=0;
%% Calculation set(S) And w,b S=find(alpha>0 & alpha<C); S w=0; for i=S w=w+alpha(i)*y(i)*x(:,i); end w b=mean(y(S)-w'*x(:,S)); b %% plot Suport Vector %Line is aline in space 2 dimansion Line=@(x1,x2) w(1)*x1+w(2)*x2+b; Line1=@(x1,x2) w(1)*x1+w(2)*x2+b+1; Line2=@(x1,x2) w(1)*x1+w(2)*x2+b-1;
%% plotdata figure; plot(x(1,ClassA),x(2,ClassA),'ro'); hold on plot(x(1,ClassB),x(2,ClassB),'bs'); %% find element of SVM in S in the Image plot(x(1,S),x(2,S),'ko','MarkerSize',25); x1min=min(x(1,:)); x1max=max(x(1,:)); x2min=min(x(2,:)); x2max=max(x(2,:)); handle=ezplot(Line,[x1min x1max x2min x2max]); set(handle,'Color','g','LineWidth',3); handle1=ezplot(Line1,[x1min x1max x2min x2max]); set(handle1,'Color','g','LineWidth',1); handle2=ezplot(Line2,[x1min x1max x2min x2max]); set(handle2,'Color','g','LineWidth',1); legend('ClassA','ClassB');
برای حل مسائل غیر خطی بیان میشود SVMدر ادامه مبحث
.پرداخته خواهد شد SVMو در آخر به معرفی توابع داخل متلب برای حل مساله
ودر نهایت آنچه که در تصویر برای حل این مساله میبینیم به صورت شکل زیر است
SVM خطی با طبقه بندی غیر برای حل مسائل Kernel Trick
بکار میبریم Zرا در فضای SVMتصویر کند لذا Zرا به مجموعه Xنگاشتی تعریف میکنیم که
𝜑 ∶ 𝑋 → 𝑍 z=𝜑(𝑥)
به عبارت دیگر
𝑤𝜏x+b=0 → 𝑤𝜏𝜑 𝑥 + 𝑏 = 0 → 𝑤𝜏z+b=0
انجام میدیم Zانجام بدیم در فضای Xیعنی بجای اینکه تفکیک را در فضای
و در حالت کلی مساله به صورت زیر خواهد شد
iC
tS
i
i
ii
i
ii
kKernelTric
jjiji j
i
y
xxyy
,0
0
.
)(2
1min )(
𝜑(𝑥𝑖)𝜏𝜑(𝑥𝑗)=K(𝑥𝑖 , 𝑥𝑗)
را به صورت زیر تعریف خواهیم کرد yو این عمل باعث میشودمدل ما توابع غیرخطی پیچیده رو هم پوشش بدهد
K(x,x) در حالت کلی غیر خطی است و کرنلKernel نام دارد
Si jjiiii xxyy Ker
Sb ),(
1
𝑆 = 𝑖 | 0 ≤ 𝛼𝑖 ≤ 𝐶
𝑦 = 𝑠𝑖𝑔𝑛( 𝛼𝑖𝑖∈𝑠 𝑦𝑖K(𝑥𝑖,𝑥𝑗)+b)
iC
tS
H
i
ii
i y
f
,0
0
.
2
1min
میباشد و تنها تفاوت در قدرت تفکیک پذیر است softmarginمساله ای که حل خواهیم کرد به صورت مساله
که توسط تابع کرنل افزایش می یابد و میتوانیم تفکیک کننده های غیر خطی را نیز به کار ببریم
..........در ادامه به معرفی انواع کرنل می پردازیم
Kernelانواع
چند جمله ای -1
گوسی-2
3-MLP یا کرنلtan
𝐾(𝑥𝑖,𝑥𝑗)=(1 + 𝑥𝑖𝜏𝑥𝑗)
𝑝
K(𝑥𝑖,𝑥𝑗)=exp(- 1
2𝜎2𝑥𝑖 − 𝑥𝑗
2
K(𝑥𝑖,𝑥𝑗)=tanh(𝛽0+𝛽1𝑥𝑖𝜏𝑥𝑗)
.صرفا برای هر بتا مساله شدنی نیست MLPدر حالت
.هم است RBFمیدانیم که کرنل گوسی یک تابع
را تشکیل میدهد که به صورت RBFتابع گوسی طراحی شود شبکه عصبی KernelTrickبا تابع SVMهرگاه
.(را مطالعه بفرمایید RBFلطفا شبکه عصبی . )هوشمند تعداد کرنل ها را تعیین میکند
در متلب SVM (softmargin)+KernelTrickنوشتن کد
کدنویسی این بخش را نیز ابتدا با داده های بخش قبل انجام میدهیم
میباشد wو Hتفاوتی که با بخش قبل دارد در تعریف تابع کرنل و در نتیجه محاسبه
𝑦 = 𝑠𝑖𝑔𝑛( 𝛼𝑖𝑖∈𝑠 𝑦𝑖K(𝑥𝑖,𝑥𝑗)+b)
𝑔 𝑥 = 𝛼𝑖𝑖∈𝑠
𝑦𝑖K(𝑥𝑖,𝑥𝑗)
Si jjiiii xxyy Ker
Sb ),(
1
با کرنل خواهیم رسید SVMبا اعمال این تغییرات در کدهای قبلی به
تعریف میکنیم functionیک gابتدا برای محاسبه
function g=SVMKer(X,alpha,y,x,Kernel) n=numel(alpha); g=0; for i=1:n g=g+alpha(i)*y(i)*Kernel(x(:,i),X); end end
clc; close all; %% data syms x y x=[]’; size(x) y=[]; size(y) data=[x' y']; n=numel(y); ClassA=find(y==1); ClassB=find(y==-1);
%SVM Softmargin+KernelTrick
(غیرخطی SVMکد )و تغییرات را به این گونه اعمال میکنیم
%% desine svm %% f=-ones(n,1); C=10; sigma=1; %define Kernel Gussi Kernel=@(xi,xj) exp(-1/(2*sigma^2)*norm(xi-xj)^2); H=zeros(n,n); for i=1:n for j=i:n H(i,j)=y(i)*y(j)*Kernel(x(:,i),x(:,j)); H(j,i)=H(i,j); end end
%% QuadProg %with use of quadprog in matlab: we solve QP(***) Aeq=y; beq=0; lb=zeros(n,1); ub=C*ones(n,1); %% Calling QP-function Algorithm{1}='trust-region-reflective'; %we don't use this Alg Algorithm{2}='interior-point-convex'; options=optimset('Algorithm',Algorithm{2},'display','iter','MaxIter',10); alpha=quadprog(H,f,[],[],Aeq,beq,lb,ub,[],options)'; AlmostZero=(abs(alpha)<max(abs(alpha))/1e5); alpha(AlmostZero)=0;
%% Calculation set(S) And b S=find(alpha>0 & alpha<C); S; b=0; for i=S b=b+y(i)-SVMKer(x(:,i),alpha(S),y(S),x(:,S),Kernel); end b=b/numel(S); b;
%% plot Suport Vector %Line is aline in space 2 dimansion Curve=@(x1,x2) SVMKer([x1;x2],alpha(S),y(S),x(:,S),Kernel)+b; Curve1=@(x1,x2) SVMKer([x1;x2],alpha(S),y(S),x(:,S),Kernel)+b+1; Curve2=@(x1,x2) SVMKer([x1;x2],alpha(S),y(S),x(:,S),Kernel)+b-1;
%% plotdata figure; plot(x(1,ClassA),x(2,ClassA),'ro'); hold on plot(x(1,ClassB),x(2,ClassB),'bs'); %% find element of SVM in S in the Image plot(x(1,S),x(2,S),'ko','MarkerSize',25); x1min=min(x(1,:)); x1max=max(x(1,:)); x2min=min(x(2,:)); x2max=max(x(2,:)); handle=ezplot(Curve,[x1min x1max x2min x2max]); set(handle,'Color','g','LineWidth',3); handle1=ezplot(Curve1,[x1min x1max x2min x2max]); set(handle1,'Color','g','LineWidth',1); handle2=ezplot(Curve2,[x1min x1max x2min x2max]); set(handle2,'Color','g','LineWidth',1); legend('ClassA','ClassB');
ودر نهایت آنچه که در تصویر برای حل این مساله میبینیم به صورت شکل زیر است
.با تنظیم بهتر مقدار سیگما در برنامه ، همبندی مساله را میتوان بهبود داد
SVMاستفاده از توابع داخل تولباکس متلب برای
کد زیر استفاده. است svmtrainیکی از این توابع از این تابع برای همان داده های مساله قبل میباشد
و mlp, rbfدر این کد ما توسط سه تابع کرنل . کرنل چند جمله ای تفکیک را انجام دادیم
clc; close all; x=[]'; size(x); y=[]; size(y); data=x'; target=y'; f=svmtrain(data,target) n=numel(y); ClassA=find(y==1); ClassB=find(y==-1); %% Now we will use of other optins C=10; %% svmtrain with kernel (rbf) f=svmtrain(data,target,'boxconstraint',C,'kernel_function','rbf','rbf_sigma',0.5,'showplot',true);
svmtrain with kernel (rbf)
clc; close all; x=[]'; size(x); y=[]; size(y); data=x'; target=y'; f=svmtrain(data,target) n=numel(y); ClassA=find(y==1); ClassB=find(y==-1); %% Now we will use of other optins C=10; %% svmtrain with kernel (Polynomial) f=svmtrain(data,target,'boxconstraint',C,'kernel_function','Polynomial','rbf_sigma',0.5,'polyorder',3,'showplot',true);
svmtrain with kernel (Polynomial)
clc; close all; x=[]'; size(x); y=[]; size(y); data=x'; target=y'; f=svmtrain(data,target) n=numel(y); ClassA=find(y==1); ClassB=find(y==-1); %% Now we will use of other optins C=10; %% svmtrain with kernel (mlp) f=svmtrain(data,target,'boxconstraint',C,'kernel_function','mlp','rbf_sigma',0.5,'mlp_params',[1 -1],'showplot',true);
svmtrain with kernel (mlp)
پرداخت SVMو حتی به پردازش تصویر با multiclassificationSVMو SVRبرای بحث تکمیلی میتوان به