๋ถ๋ฅ์ ํ๊ท ๋ถ์์ ์ํ ๋ํ์ ์ธ ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฒ์ธ SVM์ ๋ํ ์ ๋ฆฌ
SVM (Support Vector Machine)
๊ฐ์
- SVM(Support Vector Machine)์ ์ ํต์ ์ธ ์ด์ง ๋ถ๋ฅ๋ฅผ ์ํ ๊ธฐ๋ฒ ์ค ํ๋๋ก, N ์ฐจ์ ๊ณต๊ฐ์ N-1 ์ฐจ์์ผ๋ก ๋๋ ์ ์๋ ์ดํ๋ฉด(hyper plane)์ ์ฐพ๋ ๋ถ๋ฅ ๊ธฐ๋ฒ.
- ์ดํ๋ฉด์ ์ด๋ค N์ฐจ์ ๊ณต๊ฐ์์ ํ ์ฐจ์ ๋ฎ์ N-1์ฐจ์์ subspace์ ์๋ฏธํ๋ฉฐ ์๋ฅผ ๋ค์ด, 2์ฐจ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๊ฒฝ์ฐ 2์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํ ์ ์๋ 1์ฐจ์ ์ ์ผ๋ก ์ดํ๋ฉด์ด ๊ฒฐ์ ๋๋ค.
- ๋ ํด๋์ค(๋ฐ์ดํฐ) ์ฌ์ด์ ์กด์ฌํ๋ย โ์ฌ๋ฐฑ(margin)์ ์ต๋ํโ ํ๋ ค๋ ๋ชฉ์ ์ผ๋ก ์ค๊ณ๋จ.
- ๋น์ ํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์ปค๋ ํธ๋ฆญ(Kernel Trick)์ ํ์ฉํ์ฌ ๊ณ ์ฐจ์ ๊ณต๊ฐ์ผ๋ก ๋ณํํ์ฌ ๋ถ๋ฅํจ.
SVM์ Decision Rule
๊ฒฐ์ ์ดํ๋ฉด(Decision Hyperplane)
- ๋ฒ์ ๋ฒกํฐ์ ์์์ ์ค์๋ฅผ ์ด์ฉํ๋ฉด n์ฐจ์ ๊ณต๊ฐ์์์ ์ดํ๋ฉด(hyperplane)์ ์์๋ผ ์ ์๋ค.
- SVM์ ๊ฒฐ์ ๊ท์น(Decision Rule) ์ ํ์ต๋ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ ์ด๋ค ํด๋์ค๋ก ๋ถ๋ฅ๋๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ท์น.
- SVM์ ๋ชฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ ๊ตฌ๋ถํ๋ ๊ฒฐ์ ์ดํ๋ฉด(Decision Hyperplane) ์ ์ฐพ๋ ๊ฒ์ผ๋ก 2์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ์๋ก ๋ค์ด, ์ง์ ์ ๋ฐฉ์ ์์ ์๋์ ๊ฐ๋ค.
- ์ด๋, ๋ ์ดํ๋ฉด์ ๋ฒ์ ๋ฒกํฐ(normal vector) ์ด๊ณ ๋ ๋ฐ์ด์ด์ค(bias)๋ฅผ ์๋ฏธํจ.
- ๋ฐ๋ผ์, ์ดํ๋ฉด ์ง์ ์ ๊ธฐ์ค์ผ๋ก ๋ฒ์ ๋ฒกํฐ ์ ์์์ ๋ฐ์ดํฐ ์ ๋ํด ์ ๊ฐ์ด ํน์ ์์๋ณด๋ค ํฐ์ง ์์์ง๋ฅผ ํ์ธํ์ฌ ํด๋์ค๋ฅผ ๋ถ๋ฅํ ์ ์๋ค.
Margin
- ์ต๋ํํ๋ ค๋ m argin์ ์ ์ํ๊ธฐ ์ ์ ๋จผ์ ์์๋ก 2๊ฐ์ ํํํ ์ง์ ์ ์ ์ํด์ผ ํ๋ค.
- ์ดํ๋ฉด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ํ(support vector)์ ์ด์ฉํ์ฌ ์ดํ๋ฉด์ ํํํ๊ณ ์์์ ๋งํผ ๋์ผํ๊ฒ ๋จ์ด์ง ๋ ์ง์ ์ ์๋ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
- ๋ ์์์ + ํด๋์ค์ ๋ฐ์ดํฐ, ๋ ์์์ - ํด๋์ค์ ๋ฐ์ดํฐ
- ์ ์์ ์ ๊ทํํ์ฌ ๋จ์ํ๊ฒ ๋ง๋ค๋ฉด ์๋์ ๊ฐ๋ค.
- + ํด๋์ค๋ฅผ +1๋ก, -ํด๋์ค๋ฅผ -1๋ก ๋์ด ํด๋์ค๋ฅผ ๋ํ๋ด๋ ๋ฅผ ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
- ๋ฅผ ์ด์ฉํด ๋ ํํํ ์ง์ ์กฐ๊ฑด์ ํ๋์ ์์ผ๋ก ๋ง๋ค๋ฉด ์๋์ ๊ฐ๋ค. ์ ์ฝ์์ด๋ผ ํ ์ ์๋ค.
- ์ด๋ ๋ ํํํ ์ง์ (์ดํ๋ฉด) ์์ ์๋ ๋ชจ๋ ์ ๋ค์ Support Vector๋ผ ํ๋ค.
- ๋ง์ง์ +์ดํ๋ฉด๊ณผ -์ดํ๋ฉด ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์๋ฏธํจ. ์ ๊ทธ๋ฆผ์์ ์ง์ ๊ณผ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์๋ฏธํ๋ฉฐ ๋ง์ง์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ํ ์ ์๋ค.
- ์ํฌํธ ๋ฒกํฐ ์ ๋ ๊ฐ ํํ์ดํ๋ฉด์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ ํฌ์ธํธ์ด๋ฉฐ, ๊ฐ๊ฐ ๋ค์์ ๋ง์กฑํ๋ค.
- ์ ๊ณผ ํ๋ฉด ์ฌ์ด์ ๊ฑฐ๋ฆฌ ๊ณต์์ ์ด์ฉํ์ฌ ๊ฒฐ์ ์ดํ๋ฉด๊ณผ ์ํฌํธ ๋ฒกํฐ ์ ๊ฐ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ฉด ์๋์ ๊ฐ๋ค.
- ๋ฐ๋ผ์, ๋ง์ง(Margin)์ ๋ ์ํฌํธ ๋ฒกํฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ ์ด๋ฏ๋ก, ์๋์ ๊ฐ๋ค.
Optimization
Linear SVM ์ ์
- SVM์ ๋ชฉ์ ์ ๋ง์ง์ ์ต๋ํํ๋ ๊ฒฝ๊ณ๋ฉด์ ์ฐพ๋ ๊ฒ.
- ์ํ์ ๊ณ์ฐ์ ์ฉ์ดํจ์ ์ํด ๋ง์ง์ ์ ๋ฐ์ ์ ๊ณฑํ ๊ฒ์ ์ญ์๋ฅผ ์ทจํ ๋ค ๊ทธ ์ ๋ฐ์ ์ต์ํํ๋ ๋ฌธ์ ๋ก ๋ฐ๊ฟ ์ ์๋ค.(์ด ์ ๊ณฑ๊ทผ์ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํ๊ธฐ ์ด๋ ต๋ค)
- ์ ์์ด SVM ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ชฉ์ ์(Objective) ์ด๋ฉฐ, ๋ง์กฑํด์ผํ๋ ์ ์ฝ์(Constraint) ์ ์๋์ ๊ฐ๋ค.
- ์์์ ์ ์๋ ๋ชฉ์ ์๊ณผ ์ ์ฝ์์ด ์ ํ ๋ถ๋ฆฌ๋ฅผ ์ํ Hard Margin SVM ์ต์ ํ ๋ฐฉ๋ฒ์ด๋ฉฐ ๋ชจ๋ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ๊ฒฐ์ ์ดํ๋ฉด์ผ๋ก๋ถํฐ ์ผ์ ๊ฑฐ๋ฆฌ ์ด์ ๋จ์ด์ ธ ์์ด์ผ ํ๋ฏ๋ก, ์์ ํ ์ ํ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ ์ฉ๋๋ค.
- Soft Margin SVM์ ์ค์ ๋ฐ์ดํฐ๋ ์๋ฒฝํ๊ฒ ์ ํ ๋ถ๋ฆฌ๊ฐ ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก, ํ์ฉ ์ค์ฐจ๋ฅผ ์ถ๊ฐํ์ฌ ์ต์ ์ ์ดํ๋ฉด์ ๊ตฌํ๋๋ก ์ค๊ณ๋์๋ค.(์๋ฒฝํ ์ ํ ๋ถ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ ๋ ์ค๋ฅ๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ)
๋ผ๊ทธ๋์ฃผ ํจ์(Lagrangian) ์ ์
- ์ ์ฝ ์กฐ๊ฑด์ ํฌํจํ ์ต์ ํ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ๋ผ๊ทธ๋์ฃผ ์น์๋ฒ(Lagrange Multipliers) ์ ์ฌ์ฉํจ.
- ์ ์ฝ ์กฐ๊ฑด์ ๋ผ๊ทธ๋์ฃผ ์น์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ๊ทธ๋์ฃผ ํจ์๋ฅผ ์๋์ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์๋ค.
- ์ฌ๊ธฐ์, ์ ์์ ์๋๋ฅผ ๋ง์กฑํจ.
- ๋ชฉ์ ํจ์์ ์ ์ฝ ์กฐ๊ฑด์ด ํฌํจ๋์์
- ๋ ๋ผ๊ทธ๋์ฃผ ์น์ (๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ํด ํ๋์ฉ ์กด์ฌ)
- (KTT* ์กฐ๊ฑด์ ์ํด)
KTT(Karush-Kuhn-Tucker) ์กฐ๊ฑด์ ์ ์ฝ์ด ์๋ ์ต์ ํ ๋ฌธ์ ์ ํด๊ฐ ๋๊ธฐ ์ํ ํ์ ์กฐ๊ฑด์ด๋ฉฐ, ์๋ ์กฐ๊ฑด์ ํฌํจ ํ๋ค.
- ๋ชจ๋ ๋ณ์์ ๋ํ ๋ฏธ๋ถ๊ฐ์ 0์ด๋ค.
- ๋ชจ๋ ๋ผ๊ทธ๋์ฃผ ์น์๊ฐ๊ณผ ์ ์ฝ ์กฐ๊ฑด ๋ถ๋ฑ์์ ๊ณฑ์ 0์ด๋ค.
- ๋ผ๊ทธ๋์ฃผ ์น์๊ฐ์ ์์๊ฐ ์๋๋ค.
- ๋ชฉ์ ํจ์ ๋ฅผ ์ ์ ๋ํด ํธ๋ฏธ๋ถํ์ฌ 0์ผ๋ก ์ค์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.(๊ฐ ํธ๋ฏธ๋ถ 0์ด ๋๋ ์ง์ ์์ ์ต์๊ฐ์ ๊ฐ์ง๋ฏ๋ก)
- ์ฆ, ๋ ์ผ๋ถ ๋ฐ์ดํฐ ์ํ(์ํฌํธ ๋ฒกํฐ)๋ค์ ์ ํ ํฉ์ผ๋ก ๋ํ ๋ผ ์ ์๋ค.
- ์ํฌํธ ๋ฒกํฐ๋ ์ธ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ๋๋ค. ๊ฒฝ๊ณ์ ์ ์กด์ฌํ๋ ์ํย โ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ์ํ์์์ย ย ๊ฐ์ 0์ด ๋๋ค.
- ๋ฐ๋ผ์, ๊ฐ๋ง ์๊ฒ๋๋ฉด ๋ฅผ ๊ตฌํ ์ ์๋ค.
๋์ผ ๋ฌธ์ (Dual Problem) ์ ๋ ๋ฐ ํด๊ฒฐ
- ๋ผ๊ทธ๋์ฃผ ํจ์์(1)์ ์ ์ ํธ๋ฏธ๋ถ ์ (2), (3)์ ๋์ ํ์ฌ ์ ๋ฆฌํ๋ฉด, ๋ผ๊ทธ๋์ฃผ ํจ์ ์์ ๋ณํํ ๋ชฉ์ ํจ์์ dual problem(์๋ ํ์)์ ์ ๋ํ ์ ์๋ค.
- ์๋์ ๊ฐ์ด ์ ๋ํ ์ต์ ๋ฌธ์ ๋ก ์ ๋ฆฌ๋๋ค.
- ๋์ผ ํํ๋ก ๋ณํ ๊ณผ์ ์ ํตํด ์ ๊ดํ ์()์ผ๋ก ๊ฐ๋จํด์ง๊ณ , ์ ์ต๊ณ ์ฐจํญ์ ๊ณ์๊ฐ ์์์ด๋ฏ๋ก ์ต์๊ฐ์ ์ฐพ๋ ๋ฌธ์ ๊ฐ ์ต๋๊ฐ์ ์ฐพ๋ ๋ฌธ์ ๋ก ๋ฐ๋์๋ค. ์ฆ, ํ๊ณ ์ํ๋ ์ ์ฒด ๋ผ๊ทธ๋์ฃผ ์์ ์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ๋ค.
- ์ ๋ฌธ์ ๋ฅผ ํ์ด ๋ฅผ ๊ตฌํ ์ ์๊ณ , ๋ฅผ ์ (2)์ธ ์ ๋์ ํ์ฌ ๋ฅผ ๊ตฌํ ์ ์๊ฒ ๋๋ค.
- ๋ฅผ ์๊ฒ๋๋ฉด ์ ์ฝ์ ์ ์ด์ฉํด ์ญ์ ๊ตฌํ ์ ์๊ฒ ๋๋ค.
- ๋ฐ๋ผ์ support vector๋ค๋ก ์ด๋ฃจ์ด์ง decision boundary๊ฐ ๊ฐ์ฅ ์ต์ ์ boundary๋ผ๊ณ ํ ์ ์๋ค.
Soft Margin
- ๋ชจ๋ ์ํ๋ค์ด ๊ฒฝ๊ณ์ ๋ฐ๊นฅ์ชฝ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ถ๋ฅ๋์ด ์๋ค๋ฉด ํ๋ ๋ง์ง์ด๋ผ๊ณ ํ์ง๋ง, ๋ฐ์ดํฐ๊ฐ ์ ํ์ ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ด์ผ ์ ๋๋ก ๋์ํ๊ณ , ์ด์์น(Outlier)์ ๋ฏผ๊ฐํ๋ค.
- ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์ดํ๋ฉด์ ์๋ชป ๋ถ๋ฅํ๋ ์ ๋๋ฅผ ๋ํ๋ด๋ ํ์ฉ ์ค์ฐจ(Slack Variable) ๋ฅผ ๋์ ํ์ฌโ Margin์ ๊ฐ๋ฅํ ์ต๋๋ก ์ ์งํ๋ ๊ฒ์ Soft Margin์ด๋ผํจ.
- ๋ฐ๋ผ์, Soft Margin์ ๋ง์ง ์ค๋ฅ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๊ฐ๋ฅํ ๋ฅผ ์๊ฒ ๋ง๋๋ ๊ฒ๊ณผ ๋ง์ง์ ์ญ์ ๋ฅผ ๊ฐ๋ฅํ ์๊ฒ ๋ง๋๋ ๊ฒ, ๋ ๊ฐ์ง ๋ชฉํ๋ฅผ ๊ฐ์ง๋ค.
- ํ์ฉ์ค์ฐจ ๋ฅผ ์ ์ฉํ๊ณ , ๋ ๋ชฉํ ์ฌ์ด์ trade-off ๋ฅผ ์กฐ์ ํ๋ ํ์ดํผํ๋ผ๋ฏธํฐ ๋ฅผ ์ ์ํด ์๋์ ๊ฐ์ด ์ ์ฝ๊ณผ ํจ๊ป ์ ์ํ ์ ์๋ค.
- ํ๋ ๋ง์ง๊ณผ ๋์ผํ ๊ฒ KKT ์กฐ๊ฑด์ ๋ง์กฑํ๋๋ก ๋ผ๊ทธ๋์ฃผ ์น์๋ฒ์ ์ ์ฉํ๋ฉด ์๋์ ๊ฐ์ ๋์ผ ๋ฌธ์ ์ ์ต์ ํ๋ฅผ ์ป์ ์ ์๋ค.
- ์ ์ ํ ๋ฅผ ์ ์ฉํ์ฌ Soft Margin ์ต์ ํ๋ฅผ ์ํํ ์ ์๋ค.
- ๊ฐ์ด ํฌ๋ฉด ์ค์ฐจ์ ๋ํ ๊ฐํ ํจ๋ํฐ โ Hard Margin์ ๊ฐ๊น์, ์ค๋ฒํผํ ๊ฐ๋ฅ์ฑ
- ๊ฐ์ด ์์ผ๋ฉด ์ค์ฐจ๋ฅผ ์ด๋ ์ ๋ ํ์ฉ โ ์ค๋ฒํผํ ๋ฐฉ์ง, ์ธ๋ํผํ ๊ฐ๋ฅ์ฑ
Kernel Trick (Non-Linear)
- ๊ธฐ๋ณธ์ ์ผ๋ก SVM์ ์ ํ ๋ถ๋ฅ๊ธฐ์ด๋ฉฐ, ์ ํ์ ์ผ๋ก ๊ตฌ๋ถ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฌ๋ค. ํ์ง๋ง ํ์ค์์๋ ๋น์ ํ์ ์ผ๋ก ๋ถํฌํ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋จ์ํ ์ง์ ๋๋ ์ดํ๋ฉด์ผ๋ก ๋ถ๋ฅํ ์ ์๋ค.
- ์ปค๋ ํธ๋ฆญ(Kernel Trick)์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด, ๋ฐ์ดํฐ๋ฅผ ๋ ๋์ ๊ณต๊ฐ์ ์ฐจ์์ผ๋ก ๋ณํํ์ฌ ์ ํ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋๋ก ํ๋ ํจ๊ณผ๋ฅผ ์ด์ฉํจ.
๊ณ ์ฐจ์์ผ๋ก์ ๋งคํ
- ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ 1์ฐจ์ ๋ฐ์ดํฐ๋ ์ ํ์ผ๋ก ๋ถ๋ฅํ๊ธฐ๊ฐ ํ๋ค๋ค.
- ๊ธฐ์ ํจ์(Basis function) ๋ฅผ ์ด์ฉํ์ฌ 2์ฐจ์ feature space๋ก 1์ฐจ์ ๋ฐ์ดํฐ๋ฅผ 2์ฐจ์์ผ๋ก ๋งคํ(mapping)ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ํ ๋ถ๋ฅ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ์์ฑ๋๋ค.
- ์๋์ ๊ฐ์ด 2์ฐจ์ ๋ฐ์ดํฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ ํ ๋ถ๋ฆฌ๊ฐ ์ด๋ ค์ด ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ฐจ์์ผ๋ก ๋ณํํ์ฌ ์ ํ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์ดํ๋ฉด์ ์ฐพ์ ์ ์๋ค.
- ์ด์ฒ๋ผ, ์ ์ ํ ์ข์ mapping function์ ์ฐพ๋ ๊ฒ์ด ํต์ฌ.
์ฐธ๊ณ
- Support vector machine - Wikipedia
- ์ํฌํธ ๋ฒกํฐ ๋จธ์ - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์
- Jaejun Yooโs Playground: ์ด์ง ๋ํ์์์ ์ ์ฅ์์ ์ดํดํ๋ Support Vector Machine (1)
- 16. Learning: Support Vector Machines - YouTube
- [ํ์ด์ฌ/๋จธ์ ๋ฌ๋] SVM(Support Vector Machine) ๋ถ๋ฅ - ์ด๋ก : ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
- ์ํฌํธ ๋ฒกํฐ ๋จธ์ (Support Vector Machine) ยท ratsgoโs blog
- [๋ฐ์ดํฐ๋ง์ด๋] Support Vector Machine (SVM)
- [ML] Support Vector Machine(SVM)
- [๋จธ์ ๋ฌ๋] Kernel/Kernel trick(์ปค๋, ์ปค๋ํธ๋ฆญ)