#@author: gr
#@date: 2014-10-19
#@email: [email protected]
读书笔记。
《统计学习方法》 李航著 清华大学出版社
统计学习包括监督学习、非监督学习、半监督学习及强化学习。
模型选择方法:
生成模型与判别模型:
模型:
$$f(x) = sign( w \cdot x + b)$$
损失函数:
$$\min_{w, b} ~ L(w, b) = - \sum_{x_i \in M} ~ y_i(w \cdot x + b)$$
$$ s.t. ~~~~~ y \in { -1, 1 }$$
优化过程:
使用梯度下降法对损失函数进行优化。
求解过程:
kd树:
因为上面的这种方法在数据集特别大的时候效率很低,所以可以用kd树去优化。
朴素贝叶斯通过训练数据集学习联合概率分布$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)$$
随机变量X的熵定义为:
$$ H(X) = -\sum_{i = 1}^{n} p_i log{p_i} $$
熵值越小则说明分类更加明确,即特征的判别度高,我们就选择这样的特征。信息增益是选择特征A的熇增加的衡量,如下所示
$$ g(D, A) = H(D) - H(D|A) $$
使用熵增益来选择特征,优先选择使信息增益最大的特征。归纳偏置为奥卡姆剃刀,即优先选择拟合数据的最简单的假设。
ID3算法使用信息增益来选择特征通过迭代构建决策树。
对ID3算法进行改进,使用信息增益比来选择特征。
$$ g(D, A) = \frac{g(D, A)}{H_A(D)}$$
上面递归产生的决策树对训练数据很准确,对未知测试数据未必那么准确。因为,在学习过程中过多考虑如何提高对训练数据的正确分类,从而构建了过于复杂的决策树。
对于过拟合的决策树进行剪枝,从已生成的树上裁掉一些枝叶,从而简化分类树模型。
剪枝通过极小化决策树整体的损失函数或代价函数来实现。决策树的损失函数定义为:
$$ 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$ 意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂程度。
具体算法:
注意:
因为在做损失函数比较时,只考虑到两棵树(剪枝之前与之后),所以剪枝算法可以由一种动态规划算法实现。
CART生成:
CART剪枝:
输出 $Y=1$ 的对数几率是由输入 $x$ 的线性函数表示的模型,即logistic regression。
$$ P(Y=1 \mid x) = \dfrac{1}{1+e^{-z}} = \dfrac{1}{1 + e^{-w \cdot x}} = \dfrac{e^{w \cdot x}}{1 + e^{w \cdot x}} $$
$$ P(Y=0 \mid x) = 1- P(Y=1 \mid x) = \dfrac{1}{1 + e^{w \cdot x}}$$
求事件的对数几率:
$$logit(p) = log\dfrac{p}{1-p} = w \cdot x$$
对数几率是一个关于x的线性函数。
模型参数估计:
逻辑回归的参数估计可以采用极大似然估计求得。
$$l(\theta) = \Pi_{i=1}^N (p_i)^{y_i}(1-p_i)^{1-y_i}$$
$$ = \sum_{i=1}^{N} [y_i\log{(p_i)} + (1-y_i)\log{(1 - p_i)}] $$
$$ = \sum_{i=1}^{N} [ y_i \log{(\dfrac{p_i}{1-p_i})} + \log{(1-p_i)}]$$
$$ = \sum_{i=1}^N [y_i(w \cdot x_i) - \log{(1 + e^{(w \cdot x )})}]$$
对$L(w)$求极大值,就可以得到$w$的估计值。可以采用梯度下降法及拟牛顿法求解。
代价函数:
这里使用对数函数作为损失函数:
$$J(\theta) = -\dfrac{1}{m}[\sum_{i=1}^m y_i\log(h_\theta(x_i)) + (1-y_i)\log(1-h_\theta(x_i))]$$
推广:
将二分类问题推广为多分类问题。
函数间隔: 超平面 $(w, b)$ 关于样本点$a(x_i, y_i)$的函数间隔定义为:
$$ \widehat{\gamma}i = yi (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 = yi (\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$ 成立,
超平面由支持向量决定,在间隔边界以外移动甚至删除实例点对超平面不产生影响。
训练数据中有一些特异点,使得数据不可分,可以加入松弛变量解决这个问题。
原来的$\frac{1}{2}\parallel w \parallel ^2$变成:
$$\min_{w,b,\xi} ~ \frac{1}{2}\parallel w \parallel ^2 + C\sum_{i=1}^{N}\xi_i \
s.t. ~~~~~~~~~~ y_i(w\cdot 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$有三种情况:
线性不可分的情况:利用核技巧,使输入空间$R^n$超曲面模型变换为特征空间$H$的超平面模型,这样便线性可分。
核函数:
设$X$是输入空间,$H$为特征空间,如果存在一个从$X$到$H$的映射:
$$ \phi(x): X \rightarrow 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)$的内积。