站浏览量 站访问人数
目录
  1. 1. 线性回归
  2. 2. 逻辑回归
  3. 3. SVM

机器学习是从大量样本中训练,依照评估指标,不断优化得到自动评判新数据的策略;如果有标签,可分为有监督学习,以及无监督学习;根据目标的离散与否,分为回归分析还是分类分析;依照模型的复杂度,可有集成学习、深度学习等。通过学习ML的方法,可以了解方法的原理、适用范围、以及实践经验等。以下是学习过程的一些记录,基础学习可参加对应的论文和书籍。

线性回归

属于回归分析,预测连续性目标,梯度方向寻找最优参数;特征之间的值别相差量级太大;线性回归的线性含义在于y=wx+b形式,是一条直线,而x存在多个时,即多元线性,特征没有幂的概念。

线性回归有人会觉得样本在特征下必须是正态分布的,其实不是前提,提出此假设有两个原因,一是认为样本在特征的预处理下是很重要的,保证特征之间量级相差不大,以及特征下值没有异常点;二是样本如果遵循一定的规律分布,是很容易拟合出效果的。

问题的数学描述:
有输入样本input,X,$x_{j}$,比如一个房子的面积size,j只是特征的其中一个;

我们需要预测的结果output,Y,y,可以是房子的价格;

假设我们有大量的样本数据,<$x^{i}$,$y^{i}$>,i是第i个实例,即第i个样本或第i个训练样本,目标是找到h(x),这样就可以预测新的房子价格。

线性函数,$h_{w}(x)=\sum_{j}^{N}w_{j}x_{j}=W^{T}X$,函数依赖于参数 $W^{T}$,因此,有如下公式,$y^{i}=h_{w}(x^{i})$,接着设定成本函数,N是总的样本数,
$$J(w)=\frac{1}{2}\sum_{j}^{N}(h_{w}-y^{j})^{2}=\frac{1}{2}\sum_{j}^{N}(w^{T}x^{j}-y^{j})^{2}$$
J(w)是需要优化的成本函数,采取梯度下降方法寻找最优的w,梯度的求解是求函数的偏导。因此,成本函数的偏导为
$$\Delta {w}J(w)=\begin{bmatrix}\frac{\partial J(w)}{\partial w{1}}\ …\ \frac{\partial J(w)}{\partial w_{n}}\\end{bmatrix}$$
也即为
$$\frac{\partial J(w)}{\partial w_{j}}=\sum_{i}^{N}(x_{j}^{i}(h_{w}(x^{i})-y^{i}))$$

伪代码实现

1
2
3
4
5
6
7
8
9
10
11
12
1,计算成本函数
for i = 1:n
f = f + (w'*X(:,i)-y(i))^2;
end
f = (1/2) * f;

2,计算J(w)的梯度,
for j=1:m
for i=1:n
g(j)=g(j)+X(j,i)*(w'*X(:i)-y(i))
end
end

其中X(j,i)标示第i个样本的第j个特征;y(i)是第i个样本的实际值,即标记值;

线性回归采取梯度下降法求得最佳的W值,在实际计算时,会采取随机梯度下降避免陷入局部最优解,即计算梯度时不用全部样本,而是随机每一轮迭代随机选取一些样本;

线性回归的每个特征值范围相差不大最好,如果量级差太大,对w的训练结果不好;

在训练前,最好做每个特征的统计分析,把异常点去除,比如计算每个特征的均差等;

逻辑回归

与线性回归完全不同原理的分析,对离散值的预测,一般的逻辑回归是对二元0/1的预测,简单的分类问题,最后的激活值函数是sigmoid函数;预测的是概率;一般的逻辑回归是0/1的概率事件,属于伯努利事件,因此,前提假设问题是伯努利分布是很必要的。

logistic函数也即是sigmoid函数,$\sigma (x)=\frac{1}{1+e^{-x}}$,对于逻辑回归,我们需要计算的目标是下面两个:
$$p(y=1|X)=h_{\theta }(x)=\frac{1}{1+e^{-\theta ^{T}x}}=\sigma (\theta ^{T}x)$$
$$p(y=0|X)=1-p(y=1|X)=1-h_{\theta }(x)$$
显然,sigmoid函数值域是[0,1],即把$\theta ^{T}x$映射到[0,1]之间,是一个概率值;因此,我们的目标是当样本属于1时,$h_{\theta }(x)$的概率要越大;当样本属于0时,$1-h_{\theta }(x)$的概率要越大;因为,二值问题${(x^{i},y^{i});i=1,2,3,…,n}$的成本函数如下:
$$J(\theta )=-\sum_{i}^{N}\left [ y^{i}log(h_{\theta}(x^{i}))+(1-y^{i})log(1-h_{\theta}(x^{i}))\right ]$$
最小化$J(\theta )$,同样利用梯度下降法求得最佳解。

SVM

SVM((support vector machine)支持向量机,依据样本间的间隔,把样本进行分类;位于分界面上的点是支持向量。SVM是分割面的间隔最大化;

几何间隔是点到线的距离,函数间隔是函数值;SVM的原理是找到分割面$f(x)=w^{T}x+b$,然后最大化边界,几何间隔$\frac{w(x^{+}-x^{-})}{\left | w \right |}=\frac{2}{\left | w \right |}$,支持向量满足$y^{i}(w^{T}x^{i}+b)=1$。

目标是最大化几何间隔$max\frac{2}{\left | w \right |}=>min \left | w \right |^{2}=>\phi (w)=\frac{1}{2}\left | w \right |^{2}$,其中的约束条件是$y^{i}(w^{T}x^{i}+b)\geqslant 1$,当是支持向量时为1,其他样本是大于1.

求解的方法也是梯度方向,但是需要对目标函数进行改造,利用拉格朗日,讲目标函数转化为最小化如下成本函数:
$$L(w,b,a)=\frac{1}{2}\left | w \right |^{2}-\sum_{i=1}^{N}a^{i}(y^{i}(w^{T}x^{i}+b)-1)$$
然后就转为对偶问题求解,最大化如下函数,
$$L_{D}=w(a)=\sum_{i=1}^{N}a^{i}-\frac{1}{2}\sum_{i,j=1}^{N}y^{i}y^{j}a^{i}a^{j}(x^{i},x^{j})$$
计算的方法是求偏导,得到如下两个公式:
$$\frac{\partial L}{\partial b}=0 => \sum_{i=1}^{N}y^{i}a^{i}=0,a^{i}\geq 0$$
$$\frac{\partial L}{\partial w}=0 => w=\sum_{i=1}^{N}a^{i}y^{i}x^{i}$$
可以采取SMO方法不断交替的优化,得到a。

最后的预测时,采取如下计算即可$w^{T}x+b=\sum_{i=1}^{N}a^{i}y^{i}(x^{i},x)+b$。

SVM是实践中效果佳的二分类方法,也可以用于多分类问题下,当线性不可分时,需要对核函数进行操作,即把x映射到新的空间中,再采取分割面的原理分类;