监督学习和非监督学习
监督学习(回归问题): 需要的数据有正确答案(部分数据集已有正确答案。)
分类问题(少量预测值):如图所示,下面的图中,两部分数据有着各自独特的特征,机器在学习过程中,通过不断预测值,并通过其和实际值的误差,来调整曲线进行更好的分类,这样就是用监督学习进行分类。
回归: 根据之前的数据预测出一个准确的输出值
无监督学习:数据集中的数据对电脑来说都是一类的,没有区别(没有正确答案)
下面的数据中没有明显的分类,无监督学习通常使用聚类算法对数据进行分类。最终可以将数据分类成多种样式。
线性回归的H(x)和J(Θ)
符号 | 意义 |
---|---|
m | 训练数据样本 |
x | 输入量/特征值 |
y | 输出值/预测值 |
(x,y) | 训练样本 |
(xi, yi) | 第i个训练样本 |
(hypothesis)h :预测函数 h(x) = Θ₁ + Θ₂x
Θ为参数,不同的参数会导致不同的结果
为了达到最佳拟合效果,我们需要找到可以最好拟合数据的参数Θ,使用代价函数(cost function)可以找到最佳的参数。
代价函数 J(Θ):
意义:选取适当的参数使预测函数h(Θ)最接近训练数据。
函数值的大小代表着预测函数与实际数据的误差大小。故J(Θ)越小,预测函数拟合数据效果就越好。
线性回归中通过不断改变参数,J(Θ)会趋向于零。当代价函数为零时,参数就是我们想要的参数。使用例子:下图中Θ=1时,J(Θ)最小。此时误差最小,h(x)拟合数据效果最好。
预测函数h(Θ)和代价函数J(Θ)的公式如下:
通过寻找使J(Θ)最小的的Θ值,h(Θ)可以得到最佳拟合效果。那么我们如何寻找最小Θ呢,当参数只有一个时,我们可以把J(Θ)的函数图像画出来,寻找最小的Θ值。但当参数大于等于两个时,J(Θ)的图片会很难画出,例如下图是两个参数的J(Θ)
故当参数较多时,我们需要一种方法来寻找最小的Θ值,需求和期望如下图所示
梯度下降算法是完成这件事的一种比较好的方法。
梯度下降
梯度下降类似于蒙上眼睛下山,每一次只走一小步。一步一步最终会走到你所在位置附近的最低部。
如图所示:从高处一步一步走到谷底
这种下降有一个有趣的特点,就是起始点不同的话,下降到的最低点可能会不同。在上图中,如果起始点换个位置,会有不一样的结果。因为这个特点,梯度下降得到的最优解只能是局部最优解,未必是全局中的最优解!
梯度下架算法的核心是迭代,开始于参数值Θ1,Θ2。之后不断的更新Θ的值,Θ的值基本不变时,则J(Θ)获取局部最小值。
实现算法如下:
对Θ值进行更新的公式是:
更新Θ的值,即用Θi减去J(Θ)中关于Θi的偏导数。
- 当J(Θ)有下降趋势时,其关于Θi的偏导数为负数,Θ增加J(Θ)变小。
- 当J(Θ)有上升趋势时,其关于Θi的偏导数为正数,Θ减小J(Θ)变小。
- 当J(Θ)取到局部最小值时,其关于Θ的偏导数为0,Θ不变J(Θ)不变。
α为学习率:影响梯度下降的速度
- α过小,算法运行过于缓慢
- α过大,可能导致函数无法收敛,甚至发散。即α过大会导致参数Θi一次更新时变化过大,导致跳过J(Θ)最小时的Θi值。
当α为固定值且不是很大时,一般不用担心这样会导致J(Θ)无法收敛,因为梯度在逐渐变小,下降趋势会逐渐变得平缓,所以步子会越迈越小。最终得到最小值。
线性回归算法
现在我们知道如何对数据进行拟合,也学了关于梯度下降这种改进拟合的方法。接下来我们将h(Θ)和梯度下降结合起来,即线性回归算法。
线性回归模型:
算法:
特征缩化
关于梯度下降,大部分内容已经学完了,但还有一个细节(小技巧)应该注意。
特征缩化: 每个Θ的取值范围都应该近似的在-1~1这个区间里,使梯度下降速度变快。
因为当不同Θi的取值范围相差过大时,J(Θ)的轮廓图会特别窄,以至于梯度下降的非常慢。
- 缩化方法1: Θ除以该特征的最大范围。如上右图所示
- 均值归一化:Θ = (Θ - avg(Θ))/ range(Θ)
就写到这里啦,剩下的以后再写了。准备好好整理一下最近学的东西,另外这个博客写的确实不好,以后再修改整理吧。那就这样吧!初步学习结束啦。