zoukankan      html  css  js  c++  java
  • ###《机器学习》

    点击查看Evernote原文

    #@author:       gr
    #@date:         2014-12-08
    #@email:        forgerui@gmail.com
    

    机器学习的基本知识框架。

    一、引言

    1. 设计一个学习系统

    • 选择训练经验
    • 选择目标函数
    • 选择目标函数的表示
    • 选择函数逼近算法
    • 最终设计

    二、概念学习和一般到特殊序

    1. 归纳学习假设

    任一假设如果在足够大的训练样例集中很好地逼近目标函数,它也能在未见实例中很好地逼近目标函数。

    2. FIND-S

    例子见课本P19, 算法步骤如下:

    1. 将h初始化为H中最特殊假设 // 一般全是空,h <-- {phi, phi, ... phi}
    2. 对每个正例x
        对h的每个属性约束a_i
        如果x满足a_i
        那么不做任何处理
        否则将h中a_i替换为x满足的下一个更一般约束
    3. 输出假设h
    

    主要是利用正例对最特殊的假设不断地一般化,FIND-S算法对反例不做出任何反应。
    看书上的例子就知道这种思想很朴素了:-)

    3. 候选消除算法

    FIND-S问题:因为FIND-S的朴素,导致了许多问题。如下,

    1. 无法知道学习过程是否收敛到了正确的目标概念
    2. 如果有多个假设与训练样例一致,FIND-S选取最特殊的假设,为什么不选择一般的假设?
    3. 存在噪声对FIND-S干扰很大。
    4. 多个极大特殊假设。

    变型空间: 关于假设空间 H 和训练例集 D 的变型空间,标记为 (VS_{H,D}),是H中与训练样例D一致的所有假设构成的子集。

    [VS_{H,D} equiv { h in H mid Consistent(h, D) } ]

    候选消除算法: 同时从最一般和最特殊开始,正例使变型空间的S边界逐渐一般化,反例使G边界逐渐特殊化。
    例子见书P25(图2-4, 图2-5), P26(图2-6, 图2-7)。

    候选消除的归纳偏置: 目标概念c包含在给定的假设空间H中。

    4. 归纳偏置

    归纳偏置: L 的归纳偏置是最小断言集合B,它使任意目标概念c和相应的训练样例(D_c)满足:

    [(forall x_i in X) ~~ [ (B wedge D_c wedge x_i) vdash L(x_i, D_c)] ]

    三、决策树学习

    1. 特征的选择

    随机变量X的熵定义为:

    [H(X) = -sum_{i = 1}^{n} p_i log{p_i} ]

    熵值越小则说明分类更加明确,即特征的判别度高,我们就选择这样的特征。信息增益是选择特征A的熇增加的衡量,如下所示

    [g(D, A) = H(D) - H(D|A) ]

        熵与概率的关系

    使用熵增益来选择特征,优先选择使信息增益最大的特征。归纳偏置为奥卡姆剃刀,即优先选择拟合数据的最简单的假设。

    2. ID3

    ID3算法使用信息增益来选择特征通过迭代构建决策树。

    3. C4.5

    对ID3算法进行改进,使用信息增益比来选择特征。

    [g(D, A) = frac{g(D, A)}{H_A(D)} ]

    4. 决策树的剪枝

    上面递归产生的决策树对训练数据很准确,对未知测试数据未必那么准确。因为,在学习过程中过多考虑如何提高对训练数据的正确分类,从而构建了过于复杂的决策树
    对于过拟合的决策树进行剪枝,从已生成的树上裁掉一些枝叶,从而简化分类树模型。

    剪枝通过极小化决策树整体的损失函数或代价函数来实现。决策树的损失函数定义为:

    [C_alpha (T) = sum_{t=1}^{mid T mid} N_t H_t(T) + alpha mid T mid ]

    其中,树 (T) 的叶结点个数为 (mid T mid), (t) 是树 (T) 的叶结点,该叶结点有 (N_t) 个样本点,其中 (k) 类的样本点有 (N_{tk}) 个,(H_t(T))为叶结点 (t) 上的经验熵,$ alpha ge 0 $ 为参数。

    其中经验熵 (H_t(T)) 定义如下:

    [H_t(T) = - sum_{t=1}^{N_{tk}} log frac{N_{tk}}{N_t} ]

    那么损失函数的第一项可以记作:

    [C(T) = sum_{t=1}^{mid T mid} N_t H_t(T) = - sum_{t=1}^{mid T mid}sum_{k=1}^{K}N_{tk} log frac{N_{tk}}{N_t} ]

    这时损失表示为如下:

    [C_{alpha}(T) = C(T) + alpha mid T mid ]

    这里面,(mid T mid) 表示模型的复杂度,(alpha) 可以控制模型的复杂度。较大的 (alpha) 倾向选择简单的模型,较小的 (alpha) 倾向选择复杂的模型。(alpha = 0) 意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂程度。

    具体算法:

    1. 计算每个结点的经验熵
    2. 递归地从树叶开始向上回缩,设回缩到父结点之前与之后的整体树分别为 (T_B)(T_A)。为了使损失函数最小,那么就有:
      当$ C_alpha (T_A) le C_alpha (T_B) $时,即损失函数变小,就进行剪枝,即将父结点设为叶结点。
    3. 返回(2),直到不能继续为止,得到损失函数最小的子树(T_alpha)

    注意:
    因为在做损失函数比较时,只考虑到两棵树(剪枝之前与之后),所以剪枝算法可以由一种动态规划算法实现。

    四、人工神经网络

    1. 感知器

    [o(x_1, cdots , x_n) = lbrace^{~~~1 ~~ if ~ w_0 + w_1x_1 + w_2x_2 + cdots + w_nx_n > 0}_{-1 ~~ otherwise} ]

    表征能力: 训练样例要线性可分
    感知器训练法则: $ delta w_i = eta (t - o)x_i$, 前提是训练样例线性可分,并且使用了充分小的 (eta)

    2. 梯度下降法

    解决问题: 感知器法则在线性不可分时,不能收敛

    [E(overrightarrow w) = frac{1}{2}sum_{d in D} ~ (t_d - o_d)^2 ]

    其中,(t_d) 是训练样例 (d) 的目标输出,(o_d)是线性单元对训练样例 (d) 的输出。
    通过 (E) 相对向量 (overrightarrow{w}) 的每个分量的导数来推导,可得如下:

    [frac{partial E} {partial w_i} = sum_{d in D} (t_d - o_d)(-x_{id}) ]

    更新(w_i) :

    [Delta w_i = eta sum_{d in D} (t_d - o_d)(x_{id}) ]

    批量梯度下降算法就是每步利用上面的式子进行更新 (w_i)

    [w_i = w_i + Delta w_i ]

    3. 随机梯度下降(增量梯度下降)

    批量梯度下降存在的问题:

    • 收敛过程可能非常慢
    • 容易陷入局部极小值

    随机梯度下降:
    批量梯度下降需要需要对所有 (D) 中的训练样例求和后计算权值更新,随机梯度下降是根据每个单独样例的误差增量权值更新,得到挖梯度下降搜索。

    随机梯度下降计算量比批量梯度下降计算量更小;有时可以避免陷入局部最优。

    4. sigmoid单元

    感知器的阈值是不连续的,所以不可微。需要一种输出是输入的非线性函数,并且输出是输入的可微函数。
    一种答案是sigmoid单元。

    [sigma (y) = frac {1}{1 + e^{-y} } ]

          sigmoid
    可以看出sigmoid函数是一个很好的阈值函数。连续、光滑、单调。

    5. 反向传播算法

    输出单元k误差: (delta_k = o_k (1 - o_k)(t_k - o_k))
    隐藏单元h误差: (delta_h = o_h (1 - o_h)sum_{k in output} w_{kh} delta_k)
    更新网络权值: $ w_{ji} = w_{ji} + Delta w_{ji}(, 其中)Delta w_{ji} = eta delta_j x_{ji}$

    五、评估假设

    1. 估计假设精度

    2. 采样理论基础

    3. 置信区间

    六、贝叶斯学习

    1. MAP、ML、MDL

    MAP(maximym a posteriori):
    最小描述长度准则(MDL)建议选取使假设的描述长度和给定假设下数据的描述长度的和最小化。

    2. 贝叶斯最优分类器

    新实例的最可能分类可通过合并所有假设的预测得到,用后验概率来加权

    概率(P(v_j mid D))表示新实例的正确分类为(v_j)的概率,其值为:

    [P(v_j mid D) = sum_{h_i in H} ~~ P(v_j mid h_i) P(h_i mid D) ]

    新实例的最优分类为使(P(v_j mid D))概率最大的(v_j)值,则贝叶斯最优分类器:

    [arg max_{v_j in V} sum_{h_i in H} P(v_j mid h_i) P(h_i mid D) ]

    它所做的分类可以对应于 (H) 中不存在的假设,将贝叶斯分类器看成是不同于假设空间 (H) 的另一空间 (H^{'})

    3. GIBBS算法

    贝叶斯最优分类器能从给定训练数据中获得最好的性能,但算法的开销却很大
    一种替代的、非最优的方法是Gibbs算法,定义如下:

    1. 按照H上的后验概率分布,从H中随机选择假设h。
    2. 使用h来预言下一实例x的分类。

    4. 朴素贝叶斯分类器

    前提:
    每个实例 (x) 可由属性值的合取描述,在给定描述实例的属性值 (<a_1, ldots , a_n>)下,得到最可能的目标值(V_{MAP})

    朴素贝叶斯通过训练数据集学习联合概率分布(P(X, Y))

    利用数据集先计算先验概率分布:

    [P(Y = c_k), k = 1, 2, cdots , K ]

    计算条件概率分布:

    [P(X = x mid Y = c_k) = P( X^{(1)} = x^{(1)}, X^{(2)} = x^{(2)}, cdots , X^{(j)} = x^{(j)} mid Y = c_k) ]

    这里有个强假设,即是所有条件之间是条件独立的,朴素贝叶斯也因此得名,也就有下面的式子:

    [P(X = x mid Y = c_k) = Pi_{j = 1}^{n} P( X^{(j)} = x ^{(j)} mid Y = c_k) ]

    我们要求的是(P(Y=c_k mid X=x)),根据贝叶斯公式有:

    [P(Y = c_k mid X = x) = frac{P(X = x mid Y = c_k)P(Y = c_k)}{sum_{k}P(X = x mid Y = c_k)P(Y = c_k)} ]

    我们要选择最大的概率做为数据的标签,分母都相同,分子最大即可:

    [y = arg max_{c_k} ~~ P(Y = c_k) Pi_{j} P(X^{(j)} = x^{(j)} mid Y = c_k) ]

    当样本很小时,很容易得出概率为0,这样相乘会影响整个结果。解决方法是采用平滑技术,m-估计

    [frac{n_c}{n} ightarrow frac{n_c + mp}{ n + m} ]

    这里,增加了(m, p)两个参数。(m) 称为等效样本大小的常量,它确定了对于观察到的数据如何衡量 (p) 的作用。(p) 是先验概率,一般取 (1/k) ,这里如果一个属性有两种值,则置为(1/2 = 0.5)

    (m) 被称为等效样本大小的原因是:式子将 (n) 个实例扩大,加上 (m) 个按 (p) 分布的虚拟样本。

    5. 贝叶斯信念网

    贝叶斯网表示一组变量的联合概率分布。
    每个节点在给定其父结点时,条件独立于其非后代结点。

    6. EM算法

    只有一部分特征可被观察到。EM是处理隐变量的一种学习方法。
    用途:

    • 用于贝叶斯网的训练。
    • 用于马尔可夫模型的训练。

    EM算法的要点:
    当前的假设用于估计未知变量,而这些变量的期望值再被用于改进假设。

    七、支持向量机(SVM)

    1. 间隔最大化

    函数间隔: 超平面 ((w, b)) 关于样本点(a(x_i, y_i))的函数间隔定义为:

    [widehat{gamma}_i = y_i (w cdot x_i + b) ]

    定义超平面((w, b))关于训练数据集(T)的函数间隔为超平面((w, b))关于(T)中所有样本点((x_i, y_i))的函数间隔之最小值,即:

    [widehat{gamma} = min_{i=1,cdots,N} ~ widehat{gamma}_i ]

    函数间隔还不够,如果成比例地改变w和b,例如它们改为2w和2b,超平面没有改变,但函数间隔根据定义变为原来的2倍,这不是我们想要的结果。
    我们希望对于一个固定的超平面,有固定的间隔,我们便引入了几何间隔,就是原来的函数除以(parallel w parallel),定义如下:

    [gamma_i = y_i (frac{w}{parallel w parallel} cdot x_i + frac{b}{parallel w parallel}) ]

    可以得出:

    [gamma = min_{i=1, cdots , N} gamma_i ]

    函数间隔与几何间隔关系: $ gamma = frac{widehat{gamma}} {parallel w parallel}$

    间隔最大化:(max_{w,b} frac{widehat{gamma}}{parallel w parallel}) ,它与最小化(frac{1}{2}parallel w parallel^2)最小等价。

    优化问题:利用拉格朗日对偶性KKT条件求解,可得如下:

    [w^* = sum_{i=1}^{N} alpha_i^* y_i x_i ]

    [b^* = y_j - sum_{i=1}^{N}alpha_i^* y_i(x_i cdot x_j) ]

    分离超平面: (w^* cdot x + b^* = 0)
    分类决策函数: (f(x) = sgn(w^* cdot x + b^*))

           硬间隔支持向量
    间隔:
    间隔依赖于分离超平面的法向量(w),等于(frac{2}{parallel w parallel})
    支持向量:
    训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量。
    支持向量使约束条件(y_i (w cdot x_i + b) - 1 =0) 成立,
    超平面由支持向量决定,在间隔边界以外移动甚至删除实例点对超平面不产生影响。

    2. 软间隔最大化

    训练数据中有一些特异点,使得数据不可分,可以加入松弛变量解决这个问题。
    原来的(frac{1}{2}parallel w parallel ^2)变成:

    [min_{w,b,xi} ~ frac{1}{2}parallel w parallel ^2 + Csum_{i=1}^{N}xi_i \ s.t. ~~~~~~~~~~ y_i(wcdot x_i + b) ge 1- xi_i , i = 1,2,cdots,N \ ~~~~~~~~~~~~~~~~ xi_i ge 0, i = 1,2,cdots,N]

    使用上面同样的方法求解这个优化问题,可得:

    [w^* = sum_{i=1}^{N} alpha_i^* y_i x_i ]

    这样:

    [b^* = y_j - sum_{i=1}^{N}alpha_i^* y_i(x_i cdot x_j) ]

           软间隔支持向量

    支持向量:
    软间隔的支持向量(x_i)有三种情况:

    1. 在间隔边界上 ((xi_i = 0))
    2. 在间隔边界与超平面之间 ((0 lt xi_i lt 1))
    3. 在误分的一侧 ((xi_i gt 1))

    3. 非线性支持向量机和核函数

    线性不可分的情况:利用核技巧,使输入空间(R^n)超曲面模型变换为特征空间(H)的超平面模型,这样便线性可分。

    核函数:
    (X)是输入空间,(H)为特征空间,如果存在一个从(X)(H)的映射:

    [phi(x): X ightarrow H ]

    使得对所有(x,z in X),函数(K(x, z))满足条件

    [K(x, z) = phi(x) cdot phi(z) ]

    则称(K(x, z)) 为核函数, (phi(x))为映射函数,式中(phi(x) cdot phi(z))(phi(x))(phi(z))的内积。

    4. 序列最小最优化(SMO)

  • 相关阅读:
    Advanced Configuration Tricks
    Reviewing the Blog Module
    Editing and Deleting Data
    Making Use of Forms and Fieldsets
    Understanding the Router
    SQL Abstraction and Object Hydration
    Preparing for Different Databases
    Java学习理解路线图
    Openstack学习历程_1_视频
    CentOS安装Nginx负载
  • 原文地址:https://www.cnblogs.com/gr-nick/p/4190581.html
Copyright © 2011-2022 走看看