zoukankan      html  css  js  c++  java
  • 机器学习(5)- 支持向量机

    根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。

    1 支持向量机(Support Vector Machine)

    从逻辑回归一点一点修改来得到本质上的支持向量机

    优化目标

    [min_{ heta}Csum_{i=1}^m[y^{(i)}cost_1( heta^Tx^{(i)})+(1-y^{(i)}cost_0( heta^Tx^{(i)}))]+frac{1}{2}sum_{i=1}^n heta_j^2 ]

    由此可以得到具体的( heta)

    假设函数

    [h_ heta(x)=left{ egin{aligned} 1 && if heta^Tx ge 0 \ 0 && otherwise \ end{aligned} ight. ]

    大间距

    更准确地,如果(y=1),我们希望( heta^Tx ge 1);反之,如果(y=0),我们希望( heta^Tx le -1)

    最小化问题转变为

    [minfrac{1}{2}sum_{j=1}^n heta_j^2 s.tleft{ egin{aligned} heta^Tx ge 1 && if y^{(i)}=1 \ heta^Tx le -1 && if y^{(i)}=0 \ end{aligned} ight. ]

    根据向量内积,问题变为

    [minfrac{1}{2}sum_{j=1}^n heta_j^2=frac{1}{2}|| heta||^2 s.tleft{ egin{aligned} p^{(i)}|| heta|| ge 1 && if y^{(i)}=1 \ p^{(i)}|| heta|| le -1 && if y^{(i)}=0 \ end{aligned} ight. ]

    其中(p^{(i)})(x^{(i)})( heta)上的投影。

    ( heta)和决策边界是正交的。(( heta^Tx=0,x)是决策边界上的点)

    核函数(相似度函数)(k(x,l^{(i)}))

    高斯核函数(exp(-frac{||x-l^{(i)}||^2}{2delta^2}))

    在预测时,我们采用的特征不是训练样本本身的特征,而是通过标记点和核函数计算出的新特征(f1,f2,f3)

    选取标记点

    直接将训练样本作为标记点,(l^{(1)},cdots,l^{(m)})

    [left{ egin{aligned} y^{(i)}=1 && if heta^Tf ge 0 \ y^{(i)}=0 && otherwise\ end{aligned} ight. ]

    优化目标

    [min_{ heta}Csum_{i=1}^m[y^{(i)}cost_1( heta^Tf^{(i)})+(1-y^{(i)}cost_0( heta^Tf^{(i)}))]+frac{1}{2}sum_{i=1}^m heta_j^2 ]

    由此可以得到具体的( heta)

    参数

    (C):大,则高方差;低,则高偏差

    (delta^2):大,则(f_i)平滑,高偏差;低,则(f_i)不平滑,高方差

    使用SVM

    使用软件包:liblinear,libsvm,……

    确定参数C

    确定核函数

    线性核函数No kernel(linear kernel):比如n很大,但是m很小,此时不使用内核参数

    高斯核函数Gaussian kernel确定(delta^2);比如n很小,但是m很大(使用前记得特征缩放)

    多项式核函数(Polynomial Kernel):((x^Tl+constant)^{degree})

    字符串核函数(String kernel

    卡方核函数( chi-square kernel

    直方图交集核函数(histogram intersection kernel

    默塞尔算法

    多类

    • SVM包
    • one vs. all

    逻辑回归 vs. SVMs

    1. n>m,使用逻辑回归,或者线性核函数的SVM(训练集数据量不够支持我们训练一个复杂的非线性模型)
    2. n小,m中等大小,使用高斯核函数的SVM
    3. n小,m大,首先增加特征数量,然后使用逻辑回归,或者线性核函数的SVM(训练集数据量不太大,SVM速度会很慢)
  • 相关阅读:
    【JAVA基础】正则表达式
    【JAVA基础】常用类的概述和使用
    【JAVA基础】反射机制
    献芹奏曝-Python面试题
    饮冰三年-人工智能-Python-65-Apollo之07 Docker环境部署
    饮冰三年-人工智能-Python-64-Apollo之06测试环境部署
    饮冰三年-人工智能-Docker-63-Docker部署文件帮助系统Mezzanine
    饮冰三年-人工智能-Python-62-ZooKeeper之04实战
    饮冰三年-人工智能-Python-61-ZooKeeper之03原理
    饮冰三年-人工智能-Python-60-ZooKeeper之02安装
  • 原文地址:https://www.cnblogs.com/angelica-duhurica/p/10957870.html
Copyright © 2011-2022 走看看