)نابیتشپ رادرب یاهنیشام (svm یبصع هکبش support vectormachine

53
شبکه عصبیsvm ( ر پشتیبانی بردا ماشینها) Support VectorMachine ا متلب و عملی ب آموزش تئوری

Upload: others

Post on 02-Apr-2022

11 views

Category:

Documents


0 download

TRANSCRIPT

(ماشینهای بردار پشتیبان) 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 خطی

بجای استفاده از این خط دو خط موازی آن را در نظر میگیریم 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 فاصله از مبدا وقتی

𝛾 = 𝛽 − 𝛼 =𝑏−1

𝑤−

𝑏

𝑤=

1

𝑤

𝑑1=𝑑2 =1

𝑤

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

xwyb

y

yxw

iii

i

iibSi

1,1

,

𝑏𝑖و میانگین همه این را مشخص میکنند bضریب بایاس

Si

iiSi

i xwybSS

b11

𝑦𝑖 = +1 → 𝑤𝜏𝑥𝑖 + 𝑏 > +1

𝑦𝑖 = −1 → 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 < −1

bsigny xw i

بیشینه dوزنها و بایاس به نحوی تعیین میشوند که . میباشد single perseptronکه شکل کلی یک

.میبرد H2شودو این همان راه حلی است که جواب مساله را به سمت

و در حالت کلی کاربردی است SVM hard margin آنچه که تا بدین جای کار گفته شد مربوط به

را معرفی SVM soft marginنیست زیرا یک طبقه بندی صرفا خطی است و برای کاربردی کردن

. میکنیم

باشد یا برعکس در اینصورت برای بردار پشتیبان Bدر داخل کلاس Aفرض کنید عنصری از کلاس

.یک مقدار جریمه در نظر گرفته میشود ان عنصر

دایره های توپر هستند 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برای بحث تکمیلی میتوان به

[email protected]