美文网首页
机器学习算法推导(一)

机器学习算法推导(一)

作者: 咸鱼干lili | 来源:发表于2018-09-04 17:46 被阅读0次

目录


Content

PCA(Principal Components Analysis) 主成分分析

  • 主要用于对数据降维:把高维数据投影到方差最大的几个方向上

    • 高维数据中有很多特征相关

    • 高维数据难以计算

  • 衡量指标

    • ​ 前K大个特征与总特征m之比

    • 一般要大于85%

  • 手推计算过程

    • 参考文章:http://blog.codinglabs.org/articles/pca-tutorial.html

    • 降维问题实际上是一种基变换,当基的个数K小于数据维度N时,达到降维的目的

    • 基变换的矩阵表示为:其中基为​,每一条记录为​
      \begin{equation} \left( \begin{matrix} p_1 \\ p_2 \\ .\\ .\\ .\\ P_k \\ \end{matrix} \right) \ \left( a_1 \ a_2\ ...\ a_n \right) \end{equation}

    • 协方差矩阵:是一个实对称矩阵。负对角元素为字段a和b的方差,主对角元素为字段a和b的协方差。我们需要找到方差最大的方向,和字段之间无线性相关性(即协方差为0)的新的基。
      X = \left( \begin{matrix} a_1\ a_2\ ...\ a_n \\ b_1\ b_2\ ...\ b_n \\ \end{matrix} \right) \tag{3} \\ \frac{1}{m}XX^T = \left( \begin{matrix} \frac{1}{m} \sum_{i=1}^m a_i^2 \ \ \ \frac{1}{m} \sum_{i=1}^m a_ib_i \\ \frac{1}{m} \sum_{i=1}^m a_ib_i \ \ \ \frac{1}{m} \sum_{i=1}^m b_i^2 \\ \end{matrix} \right) \

    • 实对称矩阵:设A为实对称矩阵,则存在正交矩阵Q,使得A对角化,即 Q^{-1}AQ = Q^TAQ = \Lambda
      由性质:1)不同特征值对应的特征向量必然正交;2)设特征向量λλ重数为r,则必然存在r个线性无关的特征向量对应于λλ,因此可以将这r个特征向量单位正交化。一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量。

    • 优化目标变成了寻找一个矩阵P,满足PCP^T​是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。P为协方差矩阵对角化的P

    PCA 计算过程

    计算实例:求矩阵特征值与特征向量的步骤

    求矩阵特征值与特征向量的步骤

    具体例子:

求特征值和特征向量 求特征值和特征向量g

KNN(K Nearest Neighbor) K近邻

KNN Regression: ​f(x) = \frac{1}{k} \sum_{x_i \in N_k(x)} y_i

K \to 1​, more flexible

K \to \infty​,​ a traight line that is similar to linear regression

在高维数据下误差增大

LR(Logistic Regression)

相关问题

  1. 为什么不能用线性回归?

    1. 值域不同,LR是在(0,1)之间,而Linear Regression在(-\infty, \infty)取值

    2. Linear Regression对所有点敏感

  2. 为什么使用Sigmoid函数?

    1. 取值在(0,1)之间

    2. 连续函数,求导方便

    3. 在靠近0附近对数据敏感,而对远离0的数据点鲁棒

model ​: ​Pr(y = c_1|x): log\frac{Pr(y=c_1|x)}{Pr(y=c_2|x)} = \beta_0+\beta^Tx

可以解出 ,其中​\theta = (\beta_0, \beta_1)
Pr(y = c_1|x) = \frac{e^{\beta_0+\beta_1^Tx}}{1+e^{\beta_0+\beta_1^Tx}} = h_{\theta}(x)\\ Pr(y = c_2|x) = \frac{1}{1+e^{\beta_0+\beta_1^Tx } } = 1-h_{\theta}(x)

接下来使用极大似然估计点方法求解损失函数,

1)首先根据伯努利公式,可得到一个点的概率密度函数:​Pr(y|x; \theta) = (h_{(\theta)}(x))^y * (1-h_{(\theta)}(x))^{(1-y)}

其中y = {0或者1}。

2) 似然函数:L(\theta) = \prod_{i=1}^n Pr(y^{(i)}|x^{(i)},\theta) = \prod_{i=1}^n (h_{(\theta)}x^{(i)})^{y^{(i)}} * (1-h_{(\theta)}x^{(i)}))^{(1-y^{(i)})}
3)取对数:​l(\theta) = log(L(\theta)) = \sum_{i=1}^n y^{(i)}log(h_{(\theta)}x^{(i)}) + (1-y^{(i)})log((1- h_{(\theta)}x^{(i)})) \\ =\sum_{i =1}^n y^{(i)}(\beta_0+\beta_1^Tx^{(i)}) -y^{(i)}log(1+e^{\beta_0+\beta_1^Tx^{(i)}}) \\+y^{(i)}log(1+e^{\beta_0+\beta_1^Tx^{(i)}}) - log(1+e^{\beta_0+\beta_1^Tx^{(i)}}) \\ =\sum_{i=1}^n y^{(i)}(\beta_0+\beta_1^Tx^{(i)}) - log(1+e^{\beta_0+\beta_1^Tx^{(i)}}) \\ = \sum_{i=1}^n y^{(i)}(\theta ^Tx^{(i)}) - log(1+e^{\theta^Tx^{(i)}})

  1. 要适当似然函数取到最大,对​求导得到
    \frac{\partial l(\theta)}{\partial \theta} = \sum_{i=1}^n x_i(y_i- \frac{e^{\theta^Tx_i}}{(1+e^{\theta^T x_i})}) = 0

5)利用梯度上升法可求解​\theta

OLS (Ordinary Least Squares)+ Lasso + Ridge

OLS

X = (x_1, x_2, …, x_n)^T \in R^{n*p}​ ,y = (y_1, y_2,…, y_n)^T \in R^n ​ 分别表述数据矩阵和标签向量

那么\hat{f(x)} = \sum_{i=1}^n \hat{\beta_0} + \hat{\beta_1}x_1 + … +\hat{\beta_p }x_p = \beta^TX​, 其中​\beta为列向量

损失函数为预测值尽可能靠近真实值,因此:
J(\beta) = \frac{1}{n} \sum_{i=1}^n(y_i - \hat{f(x_i)})^2 = \frac{1}{n} ||y-\beta^TX||^2 = \frac{1}{n} ||y-X\beta||^2

求导令其等于0,可解得解析解:
X^T(y - X \beta) = 0 \\ X^TX\beta = X^Ty \\ \hat{\beta} = (X^TX)^{-1}X^Ty

那么​ \hat{y} = X(X^TX)^{-1}X^Ty

Goodness of Fit: ​R^2= 1- \frac{RSS}{\sum(y_i - \bar{y})}

Ridge Regression minimizes loss function:
\sum_{i=1}^n(y_i - \beta_0-\sum_{j=1}^p \beta_jx_{ij})^2 +\lambda\sum_{j=1}^p\beta_j^2

主要:1)解决​X^TX矩阵奇异 2)使预测值方差小

Lasso
\sum_{i=1}^n(y_i - \beta_0-\sum_{j=1}^p \beta_jx_{ij})^2 +\lambda\sum_{j=1}^p|\beta_j|

主要解决:1)不重要的变量衰减至0

可以利用交叉验证定\lambda​, ​ \lambda \to 0与OLS相同, ​ \lambda \to \infty所有系数为0

SVM(Support Vector Machine)

线性可分的情况

线性可分的情况

需要找到一个超平面(hyperplane)分开两类不同的点,标签y \in \{-1,1\}​。定义超平面为​\{x: W^Tx + b = 0\}, 任意x_0在该超平面的点​满足W^Tx_0 = -b​ 。
定义间隔(margin)为m , 表示支持向量到超平面的距离,即所有距离里的最小值。当间隔 m 越大,表示分类越正确。
对任意的点 ​x_i 到超平面的距离为<\frac{W}{||W||}, x_i- x_0> = \frac{W^Tx_i -W^Tx_0}{||W||} = \frac{W^Tx_i+b}{||W||}​ 。距离可正可负,因此乘以 ​y恒大于等于0。

因此上述问题可以写为一个凸优化问题:
max \ \ \ m \\ s.t. \ \frac{1}{||W||}y_i(W^Tx_i+b) \ge m \ \ \ \forall x_i

m = \frac{1}{||W||} ​, 上述等价于
max \ \ \ \frac{1}{||W||} \\ s.t. \ \ \ y_i(W^Tx_i+b) \ge 1 \ \ \ \forall x_i

又等价于
min \ \ \ \frac{1}{2} ||W||^2\\ s.t. \ \ \ y_i(W^Tx_i+b) \ge 1 \ \ \ \forall x_i
如何求解?首先转化为对偶问题:https://www.jianshu.com/p/96db9a1d16e9
L(W, b, \alpha) = \frac{1}{2} ||W||^2 - \sum_{i=1}^m \alpha_i (y_i (b+W^Tx_i) -1)
g(\alpha) = inf_{W, b} L(W, b, \alpha) = inf_{W,b}(\frac{1}{2} ||W||^2 - \sum_{i=1}^m \alpha_i (y_i (b+W^Tx_i) -1)

对​W, b求导
\frac{\partial L}{\partial W} = W- \sum_{i=1}^m \alpha_iy_ix_i = 0 \\ \frac{\partial L}{\partial b} = - \sum_{i=1}^m \alpha_i y_i = 0

因此
L(W,b,\alpha)= \frac{1}{2}||W||^T - b\sum_{i=1}^m \alpha_iy_i - W^T \sum_{i=1}^m \alpha_i y_ix_i + \sum_{i=1}^m \alpha_i \\ = \frac{1}{2}W^T(W-2\sum_{i=1}^m \alpha_i y_ix_i) - b\sum_{i=1}^m \alpha_iy_i + \sum_{i=1}^m \alpha_i \\ = -\frac{1}{2}(\sum_{i=1}^m \alpha_i y_ix_i)^T(\sum_{i=1}^m \alpha_i y_ix_i) - b\sum_{i=1}^m \alpha_iy_i + \sum_{i=1}^m \alpha_i \\= - \frac{1}{2} \sum_{i,j=1}^m \alpha_i \alpha_j x_i x_j y_i y_j - b\sum_{i=1}^m \alpha_iy_i + \sum_{i=1}^m \alpha_i

那么其对偶问题为:
max \ \ \ \sum_{i=1}^m \alpha_i- \frac{1}{2} \sum_{i,j=1}^m \alpha_i \alpha_j x_i x_j y_i y_j \\ s.t. \ \ \ \alpha_i \ge 0 \ \ \ \forall i \\ \sum_{i=1}^m \alpha_i y_i = 0

Naive Bayse 朴素贝叶斯(生成模型)

假设某个体有n项特征(Feature),分别为F_1, F_2,…,F_n ; 有m个类别(Category),分别为C_1, C_2, …, C_m

由贝叶斯公式得到:

P(C_i|F_1, F_2,..F_n) = \frac{P(F_1,F_2,…,F_n|C_i)P(C_i)}{P(F_1,F_2,..,F_n)} \\ \propto P(F_1,F_2,…,F_n)P(C_i)

重要假设:所有特征条件独立

那么上式等价于:P(C_i|F_1, F_2,..F_n) \propto P(F_1|C_i)P(F_2|C_i)…P(F_n|C_i)

最后计算出概率最大的那个分类:C^* = argmax_{C_i} P(F_1|C_i)P(F_2|C_i)…P(F_n|C_i)

离散的情况:可直接根据样本计算 P(F_1|C_i) = \frac{ \#F_1}{\#C_i}

连续的情况:假设P(X|C_i)服从正态分布,参数估计出 \hat{\mu} |_{C_i} = \bar X |_{C_i} , \ \hat{\sigma^2} |_{C_i}= \frac{1}{n-1}\sum_{i=1}^n(x_i-\bar{x})|_{C_i}

那么 P(x_i|C_i) =\frac{1}{\sqrt{2 \pi} \hat{\sigma}}e^{-\frac{(x-\hat{\mu})^2}{2 \hat{\sigma}^2}}|_{C_i} 再带回计算即可。

Tree-Based

A Single Tree : Grow a large tree, then prune it.

Nodes:Root Node、Terminal Node(Leaf Node)、Parent Node、Child Node

纯度(Impurity)是树分裂判断标准(Split Criteria),包括:Gini index、Entropy、Misclassification Error

  • Gini index:Gini(node) = \sum_{i=1}^n p_k(1-p_k)
  • Entropy: Entropy(node) = -\sum_{k=1}^k p_k \ log\ p_k
  • Misclassification Error: Error(node) = 1- max_{k} p_k

以红色点和绿色点二分类为例子,p_k = \frac{\# red \ points}{\# total \ points}

每次选择使纯度(Impurity)降低最多的划分,属于贪心算法,不是全局优化。

X_{Split} = argmax \{Q_{split}\} =\\ argmax \{ Impurity(parent) - [\frac{N_{left}}{N_{parent}} Impurity(left) + \frac{N_{right}}{N_{parent}} Impurity(left)] \}

决策树足够大时,会出现过拟合。一般来说,会进行CCP剪枝。

CCP(Cost-Complexity Pruning): 实际上是纯度与模型复杂度的Trade Off, 模型复杂度(叶子结点的个数)作为正则项。

C_\alpha = \sum_{t=1}^{|T|} N_t Impurity(S_t) + \alpha * |T|

其中|T|为叶子节点个数,S_t为第t个小空间

优点:1)容易实现;2)可以做变量选择;3)交互项的影响可以表示;4)树小的时候模型解释性好;5)连续型和离散型变量均可;

缺点:2)不稳定:对扰动和噪声非常敏感

Bagging :Fit many large trees to bootstrap resampled versions of the training data, and classify by majority vote

1)有放回抽样至原来数据集大小。假设每次被采到的概率是\frac{1}{n},那么一次也没有采到的概率是(1-\frac{1}{n})^n, 当n \to \infty \ \ , \lim \limits_{n \to \infty } (1-\frac{1}{n})^n = \frac{1}{e} \approx 0.368 。即每一颗树大约有1/3的数据没有使用,称之为袋外数据(Out of Bag)

2)采取Majority Vote的方式给出最后的分类

3)主要是降低方差

4)树与树之间是高度相关的(协方差高)

Random Forests:a random sample of m predictors is chosen as split candidates from the full set of p predictors (Usually m ≈ \sqrt{p}).

1)有放回的从所有特征里随机抽取m个特征,根据这m个特征构建树(小树即可)

2)减小树与树之间的相关性,能减少更多的方差

3)优点

  • 几乎没有需要提前设置的参数
  • 高维度数据依然可行
  • 可以输出特征的重要性

AdaBoost :调整分类错误的数据点的权重

1)每一次新建一颗树都是在上一颗分类结果上调整权重后,初始权重均为\frac{1}{n}

2)权重调整公式:

w_i \leftarrow w_i*exp[\alpha_m * I(y_i \ne T_m(x_i)]

最后renormalize w_i ,使得和为1;

其中
\alpha_m = log(\frac{1-err_m}{err_m}) \\ err_m = \frac{\sum_{i=1}^n w_i I(y_i \ne T_m{x_i}) }{\sum_{i=1}^n w_i}

可以看到0 \le err_m \le 1 \ \ , \frac{1-err_m}{err_m} \ge 0 ,当err_m = \frac{1}{2}时, \alpha_m = 0,意思是有一半的分类是错误的。而我们知道完全随机的情况,猜错的概率为1/2,因此如果该树具有一定的判断能力,那么一定有err_m \le \frac{1}{2}。 此时\alpha_m \ge 0,对于错误的分类的权重会变大。

最后的分类结果:\hat{C(x)} = sign[\sum_{m=1}^M \alpha_m T_m(x)]

相关文章

网友评论

      本文标题:机器学习算法推导(一)

      本文链接:https://www.haomeiwen.com/subject/wvknwftx.html