![29f0528b581cc7000c97bec377376bcf.png](https://i-blog.csdnimg.cn/blog_migrate/5dae2358ec4626bd1221caeef566bed7.png)
OX00 统计学习三要素
统计学习三要素:模型、策略、算法
模型(=假设空间=所有备选模型):决策函数(y=f(x)),条件概率分布,两种形式 (一种是判别式模型,一种是生成式模型)
策略:确定标准,决定最优标准最重要是确定损失函数:测试值与真实值之间差别的惩罚。
算法:如何选择最优模型;
OX01 常见的最优化算法
![a3d22f7e0868bb1a74163e01b5ef3cec.png](https://i-blog.csdnimg.cn/blog_migrate/eade21c6ad14567dea4c5683a1b87989.jpeg)
![5df39d714b1290f03fd9e1e747ba97fb.png](https://i-blog.csdnimg.cn/blog_migrate/ce359582a5e17bd06997f88abd38eb6c.jpeg)
![519578b715eea4bf3f0f6dc3887a0f1a.png](https://i-blog.csdnimg.cn/blog_migrate/4053641b8cec1c1bec938f5b2c702f94.png)
判别模型:感知机,k近邻,决策树,逻辑回归,支持向量机,条件随机场,最大熵模型。
生成模型:朴素贝叶斯,混合高斯,隐马尔科夫。
判别模型由于直接学习决策函数f(x),和条件概率P(y|x),直接面对预测,所以准确率更高!判别模型可以对数据进行各种程度的抽象,定义特征,并使用特征,所以可以简化问题。
生成模型,可以还原出联合概率分布,生成学习方法的收敛速度更快,样本量增加的时候,模型可以更快的收敛。
OX02 为什么需要梯度下降算法
在学习简单线性回归时,我们使用最小二乘法来求损失函数的最小值,但是这只是一个特例。在绝大多数的情况下,损失函数是很复杂的(比如逻辑回归),根本无法得到参数估计值的表达式。因此需要一种对大多数函数都适用的方法。这就引出了“梯度算法”。
我们先了解一下梯度下降是用来做什么的?
首先梯度下降(Gradient Descent, GD),不是一个机器学习算法,而是一种基于搜索的最优化方法。梯度下降(Gradient Descent, GD)优化算法,其作用是用来对原始模型的损失函数进行优化,以便寻找到最优的参数,使得损失函数的值最小。
要找到使损失函数最小化的参数,如果纯粹靠试错搜索,比如随机选择1000个值,依次作为某个参数的值,得到1000个损失值,选择其中那个让损失值最小的值,作为最优的参数值,那这样太笨了。我们需要更聪明的算法,从损失值出发,去更新参数,且要大幅降低计算次数。
梯度下降算法作为一个聪明很多的算法,抓住了参数与损失值之间的导数,也就是能够计算梯度(gradient),通过导数告诉我们此时此刻某参数应该朝什么方向,以怎样的速度运动,能安全高效降低损失值,朝最小损失值靠拢。
OX03 什么是梯度下降算法
简单地来说,多元函数的导数(derivative)就是梯度(gradient),分别对每个变量进行微分,然后用逗号分割开,梯度是用括号包括起来,说明梯度其实一个向量,我们说损失函数L的梯度为:
![476a5df877af51da9fdbe789d389a792.png](https://i-blog.csdnimg.cn/blog_migrate/916b0c8d95e5446010117cea58c49b8b.png)
在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向。
![1a83ecccb748f34f0b2a292eb76f87ec.png](https://i-blog.csdnimg.cn/blog_migrate/26c029b9bac2a163d58df5960df09032.png)
关于梯度下降法的数学推导:
什么是梯度下降法?www.zhihu.com![92c7232b2ddfd13a7fc9234114db6a44.png](https://i-blog.csdnimg.cn/blog_migrate/cedf41150477bd86247cdf430fe5b918.jpeg)
关于学习率 :
我们已经知道,梯度对应的是下山的方向,而参数 对应的是步伐的长度。在学术上,我们称之为“学习率”(learning rate),是模型训练时的一个很重要的超参数,能直接影响算法的正确性和效率:
- 首先,学习率不能太大。因此从数学角度上来说,一阶泰勒公式只是一个近似的公式,只有在学习率很小,也就是很小时才成立。并且从直观上来说,如果学习率太大,那么有可能会“迈过”最低点,从而发生“摇摆”的现象(不收敛),无法得到最低点
- 其次,学习率又不能太小。如果太小,会导致每次迭代时,参数几乎不变化,收敛学习速度变慢,使得算法的效率降低,需要很长时间才能达到最低点。
梯度下降法有个致命缺陷:它只能找到局部最优点,而非全局最优点。也就是说,不同的初始值,会导致最终收敛的极值点不同。那么对应的解决方案如下:首先随机产生多个初始参数集,即多组;然后分别对每个初始参数集使用梯度下降法,直到函数值收敛于某个值;最后从这些值中找出最小值,这个找到的最小值被当作函数的最小值。当然这种方式不一定能找到全局最优解,但是起码能找到较好的。
对于梯度下降来说,初始点的位置,也是一个