PART I. 知识点总结[1]
支持向量机(Support Vector Machine):
- 几何理解:选择能够让到每边最近的数据点的距离最大化的超平面
![654631a680434f279909fdf0a86bd604.png](https://i-blog.csdnimg.cn/blog_migrate/84bd203e1a7901a8772826d07539b89a.jpeg)
- 数学模型:
- 如何处理异常值(outlier):
- 处理一:放松限制
![cbf6aa12133fea87a489fd3d1594a2ab.png](https://i-blog.csdnimg.cn/blog_migrate/5d4f46115eb10b5658737bfec1d1d1a3.jpeg)
-
- 处理二:不放松限制
![0ec5f6e071334dbe1e022262cbfe4e50.png](https://i-blog.csdnimg.cn/blog_migrate/4ce799ad84416154f4f2e5d10592382c.jpeg)
-
- 处理三:必须放松限制(处理线性不可分的情形)
- 带松弛变量的SVM数学模型:
- Hinge Loss损失函数(合页损失函数/铰链损失函数)
- 带松弛变量的SVM数学模型:
- 处理三:必须放松限制(处理线性不可分的情形)
![1a1c5538e30771d4d9d2327c25647b17.png](https://i-blog.csdnimg.cn/blog_migrate/df8b28989fc7e2225050076134a0fa5f.jpeg)
PART II. 使用SVM检测蘑菇 是否有毒
import
![62721597391246e09d2b7d9931f56182.png](https://i-blog.csdnimg.cn/blog_migrate/8566bc8297bc0f3b5ad847e5901d7cfc.png)
PART III. 拓展学习与Python代码实现
以上的例子我们讨论了数据线性可分的情况。当我们的数据线性不可分时,我们可以考虑引入核函数(Kernel)。[2]
- 数学模型:
其中
在两个数据点属于同一类别时值增加,否则值减少。
衡量两个数据之间的相似性。
- 代码:
from
我们可以通过一个可视化来理解同一组数据在使用核函数和不使用核函数的模型表现:
from
![8aa14fc6781eac339379b1aadb54bd84.png](https://i-blog.csdnimg.cn/blog_migrate/3f2afba411be5ce86f30ea76ea780c6f.png)
当我们使用高斯核(Gaussian Kernel/Radial Basis Function(RBF) Kernel)
,返回的结果更为准确:
svc
![f4186f3169806a7601afe287f27774e6.png](https://i-blog.csdnimg.cn/blog_migrate/cb1c0145b794f282ced47927cd0e57b1.png)
参考
- ^贪心学院 http://www.greedyai.com
- ^Machine Learning with Python Cookbook