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

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

Apr 02, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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

آموزش تئوری و عملی با متلب

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

Page 3: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

مقدمهنوع خاصی از شبکه های (SVM)ماشین بردار پشتیبان یا

مانند )عصبی هستند که بر خلاف سایر انواع شبکه عصبی MLP و(RBF به جای کمینه کردن خطا، اقدام به کمینهاین . کردن ریسک عملیاتی طبقه بندی یا مدل سازی می کند

ابزار، بسیار قدرتمند است و در زمینه های مختلفی چون طبقه می تواند مورد (رگرسیون)بندی، خوشه بندی و مدل سازی

بگیرداستفاده قرار

Page 4: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

:مثال .شکل زیر با دو نوع داده را در نظر بگیرید

.

Page 5: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

. که تفکیک کننده این دو مجموعه نمیباشد H3با توجه به شکل اصولا

SVMکه هردو تفکیک کننده هستند و با روش H2و H1در مورد به دنبال بهترین تفکیک کننده مینیمم ریسک عملیاتی هستیم که در

.ادامه به آن میپردازیمکار میکردیم MLPتوجه داشته باشید که هرگاه با یک شبکه عصبی

به یک اندازه میتوانند به عنوان جداکننده عمل کنند H2و H1هردو

.تفکیک کننده بهتری است H2خواهیم دید که SVMولی در

Page 6: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

.به صورت زیر است HyperPlanبعدی معادله با مفهوم nدر یک فضای

𝑤𝑖𝑥𝑖𝑖 +b=0

که در حالت دو بعدی خط و در حالت سه بعدی صفحه زیر را خواهیم داشت

𝑤1𝑥1 + 𝑤2𝑤2 + 𝑏 = 0

𝑤1𝑥1 +𝑤2𝑤2 +𝑤3𝑥3 + 𝑏 = 0

∋W,xکه در آن 𝑅𝑛

ومعادله تفکیک کننده در حالت کلی به صورت

𝑤𝜏x+b=0

.و به صورت زیر فضای صفحه را به دو قسمت تقسیم میکند. میباشد

SVM خطی

Page 7: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

بجای استفاده از این خط دو خط موازی آن را در نظر میگیریم SVMدر

Page 8: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

به طوریکه در فاصله بین دو خط اجازه حضور عنصری وجود ندارد

Page 9: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

11

11

}1,1{,

,...2,1};,{

bif

bif

ni

xwy

xwy

yRx

yx

ii

ii

i

m

i

ii

.در واقع بیان این موارد به صورت زیر میباشد

:داده داریم nفرض کنیدمجموعه ای از

Page 10: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

فاصله ایجاد شده مقاومت در برابر ریسک انتخاب تفکیک کننده را افزایش میدهد .بیشتری داشته باشد d یعنی تفکیک کننده ای بهتر عمل میکند که فاصله

.را محاسبه کنیم d حال میخواهیم این فاصله

و میدانیم هر نقطه روی بردار نرمال w. شکل زیر را در نظر بگیرید .خواهد بود w فاصله اش ز مبدا مضربی از Lخط

Page 11: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

𝑥0 = 𝑡𝑤

𝑤𝜏𝑥0 + 𝑏 = 0 → 𝑡𝑤𝜏w+b=0

T=- 𝑏

𝑤 2=- 𝑏

𝑤𝜏𝑤

𝑥0 =t 𝑤 =- 𝑏

𝑤

یعنی در حالت کلی فاصله از مبدا به صورت زیر میباشد

𝑥0 = 𝑏

𝑤

منفی باشد b فاصله از مبدا وقتی

Page 12: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

𝛾 = 𝛽 − 𝛼 =𝑏−1

𝑤−

𝑏

𝑤=

1

𝑤

𝑑1=𝑑2 =1

𝑤

Page 13: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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 ∀ 𝑖

Page 14: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

برای حل این مساله ضریبی از قیود مساله را به تابع هدف (شبیه مسائل که اصطلاحا تابع جریمه نام دارند)اضافه میکنیم

𝐿𝑃 =1

2𝑤𝜏w- 𝛼𝑖𝑖 𝑦𝑖 𝑤

𝜏𝑥𝑖 + 𝑏 − 1

یعنی مساله . ) است (saddle point)میبینیم که جواب مساله یک نقطه زینی یا LPدر حل مساله

.(ماکزیمم شود (α) و نسبت به تعدادی دیگر (b,w)باید نسبت به تعدادی از متغیرها مینیمم

𝜕𝐿𝑝

𝜕𝑤=0 → 𝑤 − 𝛼𝑖𝑖 𝑦𝑖𝑥𝑖=0 → 𝑤 = 𝛼𝑖𝑖 𝑦𝑖𝑥𝑖

𝜕𝐿𝑃

𝜕𝑏=0 → 𝛼𝑖𝑖 𝑦𝑖=0

.به صورت زیر به دست میآید LDمساله LPبا جایگذاری این مقادیر در مساله

Page 15: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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

Page 16: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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

Page 17: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

لذا مساله دوگان به صورت زیر خواهد بود

i

tS

H

oblemDoal

i

ii

i y

f

,0

0

.

2

1min

Pr

است که 2یا برنامه ریزی درجه Quadratic Programmingاین یک مساله

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

Page 18: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

برای بهینه سازی روی این مساله اعمال شود K.K.Tهرگاه شرایط

برای جواب بهینه باید شرایط زیر برقرار باشد

𝛼𝑖 = 0 → 𝑦𝑖 𝑤

𝜏𝑥𝑖 + 𝑏 − 1 > 0

𝛼𝑖 > 0 → 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 − 1 = 0

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

𝑤𝜏𝑥𝑖 + 𝑏 =𝑦𝑖 if 𝛼𝑖 > 0

را به صورت زیر تعریف میکنیممجموعه بردارهای پشتیبان

S= 𝑖 | 𝛼𝑖 > 0

𝛼𝑖 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 − 1 =0

Page 19: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

xwyb

y

yxw

iii

i

iibSi

1,1

,

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

Si

iiSi

i xwybSS

b11

Page 20: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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

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

bsigny xw i

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

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

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

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

. میکنیم

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

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

Page 21: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

دایره های توپر هستند B دایره های توخالی و اعضای کلاس Aاعضای کلاس

Page 22: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

𝑖𝑓 y=+1 → 𝑤𝑡𝑥𝑖+b+𝛿𝑖 ≥ 1 𝑤𝑡𝑥𝑖+b≥ 1 − 𝛿𝑖 𝛿 ≥ 0 𝑖𝑓 y=+1 → 𝑤𝑡𝑥𝑖+b-𝛿𝑖 ≤ −1 𝛿 ≥ 0 𝑤𝑡𝑥𝑖+b≤ −1 + 𝛿𝑖

→ 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 ≥ 1 − 𝛿𝑖

ام را نشان دهد iمیزان جریمه برای تخدی عضو 𝛿𝑖 فرض کنید

min 1

2𝑤𝜏w+C 𝛿𝑖𝑖

𝑆. 𝑡 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 ≥ 1 − 𝛿𝑖 ∀𝑖 𝛼𝑖

𝛿𝑖 ≥ 0 ∀𝑖 𝜇𝑖

:مساله به صورت زیر در می اید

Page 23: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

نام دارد و مولفه هایی که با رنگ قرمز نشان داده شده اند ضرایب لاگرانژ 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

Page 24: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

لذا سه مولفه زیر را داریم

𝛼𝑖 ≥ 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قسمت

Page 25: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

iC

tS

H

i

ii

i y

f

,0

0

.

2

1min

است که 2یا برنامه ریزی درجه Quadratic Programmingاین یک مساله

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

را به صورت زیر تعریف میکنیممجموعه بردارهای پشتیبان

𝑆 = 𝑖 | 0 ≤ 𝛼𝑖 ≤ 𝐶

Si

iiSi

i xwybSS

b11

QP(***)

𝑤 = 𝛼𝑖𝑦𝑖𝑖

𝑥𝑖

Page 26: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

:برای مساله خواهیم داشت K.K.Tبا بررسی شرایط

𝛼𝑖 𝑦𝑖 𝑤𝜏𝑥𝑖 + 𝑏 − 1 + 𝛿𝑖 =0

𝜇𝑖𝛿𝑖= 𝐶 − 𝛼𝑖 𝛿𝑖=0

در حالتهای𝛼𝑖=0 𝛼𝑖=C

بردارهای پشتیبان بدست نمی آیند و لذا تنها حالت زیر را بررسی میکنیم

0 < 𝛼𝑖 < 𝐶 → 0 < 𝜇𝑖 < 𝐶 → 𝛿𝑖=0 𝑦𝑖 𝑤

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

𝜏𝑥𝑖 S= 𝑖 | 0 < 𝛼𝑖 < 𝐶

Page 27: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

در عمل به صورت Cرا در نرم افزار متلب پیاده سازی خواهیم کرد و میزان Soft marginبه صورت عملی

یا PSOیا GAاز الگوریتمهای بهینه سازی Cآزمون و خطا تعیین میشود البته میتوان برای تعیین بهینه مقدار

ICA میتوان استفاده کرد.... و

برای حل حالت باینری در نظر گرفته شده است که کلاسبندی SVMیک Boxbinformaticدر نرم افزار متلب

.مسائل باینری را میتوان با آن انجام داد

.در ادامه آنچه تا بدین جا را آموخته ایم را در متلب پیاده سازی میکنیم

. در نظر گرفته ایم 1-و 1شامل عنصرهای 10با اندازه yویک بردار xداده دو بعدی 10برای این کار

Page 28: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

در متلب 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

Page 29: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

.را در متلب فراخوانی میکنیم تا با روش این مساله بیشتر آشنا شویم Quadprogحال برای حل مساله

متلب همین کلمه را فراخوانی کنید خواهید دید که برای حل این مساله آبشن هایی helpهرگاه در

نیز در نظر گرفته شده است از جمله این دو الگوریتم که ما از الگوریتم دوم برای حل مساله استفاده

کردیم

Algorithm Choose the algorithm: •'interior-point-convex' (default) •'trust-region-reflective'

را با توجه به فرمولهای زیر بدست می آوریم bو wو Sمقادیر مجموعه alpha بعد از حل این مساله و محاسبه

𝑤 = 𝛼𝑖𝑦𝑖𝑖

𝑥𝑖

𝑆 = 𝑖 | 0 ≤ 𝛼𝑖 ≤ 𝐶

Si

iiSi

i xwybSS

b11

Page 30: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

و خطوط موازی با آن رسم شده است 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

Page 31: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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

Page 32: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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);

Page 33: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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;

Page 34: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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;

Page 35: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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');

Page 36: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

برای حل مسائل غیر خطی بیان میشود SVMدر ادامه مبحث

.پرداخته خواهد شد SVMو در آخر به معرفی توابع داخل متلب برای حل مساله

ودر نهایت آنچه که در تصویر برای حل این مساله میبینیم به صورت شکل زیر است

Page 37: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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 )(

Page 38: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

𝜑(𝑥𝑖)𝜏𝜑(𝑥𝑗)=K(𝑥𝑖 , 𝑥𝑗)

را به صورت زیر تعریف خواهیم کرد yو این عمل باعث میشودمدل ما توابع غیرخطی پیچیده رو هم پوشش بدهد

K(x,x) در حالت کلی غیر خطی است و کرنلKernel نام دارد

Si jjiiii xxyy Ker

Sb ),(

1

𝑆 = 𝑖 | 0 ≤ 𝛼𝑖 ≤ 𝐶

𝑦 = 𝑠𝑖𝑔𝑛( 𝛼𝑖𝑖∈𝑠 𝑦𝑖K(𝑥𝑖,𝑥𝑗)+b)

Page 39: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

iC

tS

H

i

ii

i y

f

,0

0

.

2

1min

میباشد و تنها تفاوت در قدرت تفکیک پذیر است softmarginمساله ای که حل خواهیم کرد به صورت مساله

که توسط تابع کرنل افزایش می یابد و میتوانیم تفکیک کننده های غیر خطی را نیز به کار ببریم

..........در ادامه به معرفی انواع کرنل می پردازیم

Page 40: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

Kernelانواع

چند جمله ای -1

گوسی-2

3-MLP یا کرنلtan

𝐾(𝑥𝑖,𝑥𝑗)=(1 + 𝑥𝑖𝜏𝑥𝑗)

𝑝

K(𝑥𝑖,𝑥𝑗)=exp(- 1

2𝜎2𝑥𝑖 − 𝑥𝑗

2

K(𝑥𝑖,𝑥𝑗)=tanh(𝛽0+𝛽1𝑥𝑖𝜏𝑥𝑗)

.صرفا برای هر بتا مساله شدنی نیست MLPدر حالت

.هم است RBFمیدانیم که کرنل گوسی یک تابع

را تشکیل میدهد که به صورت RBFتابع گوسی طراحی شود شبکه عصبی KernelTrickبا تابع SVMهرگاه

.(را مطالعه بفرمایید RBFلطفا شبکه عصبی . )هوشمند تعداد کرنل ها را تعیین میکند

Page 41: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

در متلب SVM (softmargin)+KernelTrickنوشتن کد

کدنویسی این بخش را نیز ابتدا با داده های بخش قبل انجام میدهیم

میباشد wو Hتفاوتی که با بخش قبل دارد در تعریف تابع کرنل و در نتیجه محاسبه

𝑦 = 𝑠𝑖𝑔𝑛( 𝛼𝑖𝑖∈𝑠 𝑦𝑖K(𝑥𝑖,𝑥𝑗)+b)

𝑔 𝑥 = 𝛼𝑖𝑖∈𝑠

𝑦𝑖K(𝑥𝑖,𝑥𝑗)

Si jjiiii xxyy Ker

Sb ),(

1

با کرنل خواهیم رسید SVMبا اعمال این تغییرات در کدهای قبلی به

Page 42: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

تعریف میکنیم 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

Page 43: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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کد )و تغییرات را به این گونه اعمال میکنیم

Page 44: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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

Page 45: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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;

Page 46: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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;

Page 47: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

%% 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');

Page 48: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

ودر نهایت آنچه که در تصویر برای حل این مساله میبینیم به صورت شکل زیر است

.با تنظیم بهتر مقدار سیگما در برنامه ، همبندی مساله را میتوان بهبود داد

Page 49: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

SVMاستفاده از توابع داخل تولباکس متلب برای

کد زیر استفاده. است svmtrainیکی از این توابع از این تابع برای همان داده های مساله قبل میباشد

و mlp, rbfدر این کد ما توسط سه تابع کرنل . کرنل چند جمله ای تفکیک را انجام دادیم

Page 50: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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)

Page 51: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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)

Page 52: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

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)

Page 53: )نابیتشپ رادرب یاهنیشام (svm یبصع هکبش Support VectorMachine

پرداخت SVMو حتی به پردازش تصویر با multiclassificationSVMو SVRبرای بحث تکمیلی میتوان به

[email protected]