zoukankan      html  css  js  c++  java
  • 机器学习笔记(七)支持向量机

    Support vector machine(支持向量机 SVM)

    1、推导:

    (1)对于逻辑回归,cost函数为:

    ① 当 y = 1时,即 θTx >> 0时 ,cost = - log(1 / (1 + e-z)) ,图像如下:

    用新的代价函数产生新的曲线:cost1(z)

    ② 当 y = 0时,即 θTx << 0时 ,cost = - log(1 - 1 / (1 + e-z)) ,图像如下:

    用新的代价函数产生新的曲线:cost0(z)

    (2)产生新的目标函数:

    (3)模型修改:

    2、Large margin intuition(大间距分类器):

    (1)问题简写:min C * A + B

    当 C 比较大时,理想的结果会使得左边的求和式子 A 趋近0,使得问题转化为 min B,即:

    (2)SVM决策边界:

    下图的分类问题,有很多种划分方法,但是下面举例的两种分法显然不够科学。

     利用SVM,可以实现最大间距的分类(蓝色线条为决策边界)。

     缺陷:若C特别大,易受到奇异点影响;

    (3)数学原理:

    ① Vector inner product(向量內积):

    ② 简化SVM问题:设置 θ0 = 0(决策边界必须经过原点), n = 2

    ③ 问题转化:

    3、Kernels(核函数):

    (1)问题背景:

    在进行非线性分类时,使用高次项作为特征变量计算量大,需要更好的方法来构造特征变量。

    (2)相似度:

    手动取标记点 l(1),l(2),l(3),度量样本x与标记点之间的相似度:

    举例与第一个标记点之间的核函数相似度公式(这里采用了高斯核函数):

    如果 x ≈ l(1): f1 ≈ exp(- 0 / 2σ²) = 1;

    如果 x is far from l(1) : f1 ≈ exp(- large_number² / 2σ²) ≈ 0;

    同理,获得f2,f3

    (3)高斯核函数的参数σ:

    大σ:特征变量 f 较平稳,高偏差,低方差;

    小σ:特征变量 f 较陡,低偏差,高方差。

    (4)问题转化:

    y = 1  when  θ0 + θ1f+ θ2f2 + θ3f3 ≥ 0     

    y = 0  when  θ0 + θ1f+ θ2f2 + θ3f<0         

    (5)应用举例:

    假设 θ0 = -0.5,θ1 = 1,θ2 = 1,θ3 = 0;

    取靠近 l(1)的某一个样本,可以得出 f1 ≈ 1,f2 ≈ 0,f3 ≈ 0. 计算结果得出 0.5 > 0,y = 1.

    取靠近 l(2)的某一个样本,可以得出 f1 ≈ 0,f2 ≈ 1,f3 ≈ 0. 计算结果得出 0.5 > 0,y = 1.

    取靠近 l(3)的某一个样本,可以得出 f1 ≈ 0,f2 ≈ 0,f3 ≈ 1. 计算结果得出 -0.5 < 0,y = 0.

    通过大量样本,可以得出决策边界:靠近 l(1) 和 l(2) 的样本更可能取1,靠近 l(3) 的样本更可能取0.

    (6)SVM with Kernels:

    ① 直接把样本点作为标记点,如 l(1) = x(1) ,l(2) = x(2),...,l(m) = x(m)

    ② 对于训练集 (x(i), y(i)):

    f1(i) = similarity(x(i), l(1));

    f2(i) = similarity(x(i), l(2));

    ...

    fm(i) = similarity(x(i), l(m));

    获得特征变量 f(m+1 维特征向量);

    ③ 预测:

    predict y = 1 if θTf ≥ 0;

    predict y = 0 if θTf < 0;

    ④ 训练:(注:求和变量 n 实际等于 m )

    ⑤ 参数 C 的选择:

    C太大(即 lambda 太小):低偏差,高方差;

    C太小(即 lambda 太大):高偏差,低方差;

    4、SVM的使用:

    (1)使用SVM软件包求解 θ :liblinear、libsvm .

    (2)自主操作:

    ① 设置参数C.

    ② 选择核函数计算特征量(没有核函数即为线性核函数).

    选择的核函数必须满足Mercer's Theorem(默塞尔定理).

    除了线性核函数和高斯核函数,还有满足默塞尔定理的核函数有:

    多项式核函数: k(x, l) = (xTl + constant)degree 其中constant、degree是参数; 

    字符串核函数、卡房核函数、直方图交叉核函数等.

    ③ 对于大小差距很大的特征量,需要进行归一化处理.

    5、逻辑回归 vs 支持向量机:

    当 n 对与训练集大小来说较大时(例如,n = 10000,m = 10~1000),使用逻辑回归或者线性核函数SVM;

    当 n 较小,而 m 大小适中时(例如,n = 1~1000,m = 10~10000),使用高斯核函数SVM;

    当 n 较小,m较大时(例如,n = 1~1000,m = 50000+),新增更多特征,再使用逻辑回归或者线性核函数SVM.

  • 相关阅读:
    QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?
    边缘推流与中心推流对比
    推流协议 支持RTMP协议推流
    改变原型
    window.onbeforeunload 埋点 页面停留时间
    修改/etc/hosts 云服务器 没有做外网转内网的优化
    :nohlsearch
    z waiting to receive.**B0100000023be50
    Powered by Flink
    负载均衡
  • 原文地址:https://www.cnblogs.com/orangecyh/p/11735147.html
Copyright © 2011-2022 走看看