有监督学习1--线性回归

有监督学习1–线性回归

对于有监督学习首先要理解几个概念:
有监督学习的预备知识:
什么是机器学习:
机器学习主要是研究如何使计算机从给定的数据中学习规律,即从观测数据(样本)中寻找规律,并利用学习到的规律(模型)对位置或无法观测的数据进行预测。
所谓“学习”是指:针对经验E(experience)和一系列的任务T(tasks)和一定表现的衡量P,如果随着经验E的积累,针对定义好的任务T可以提高表现P,就说计算机具有学习能力。
下图为E,T,P的关系图:
有监督学习1--线性回归
机器学习分类:
有监督学习:利用已知类别的样本,训练学习得到一个最优模型,使其达到所要求性能,再利用这个训练所得模型,将所有的输入映射为相应的输出,对输出进行简单的判断,从而实现分类的目的,即可以对未知数据进行分类。
无监督学习:对于没有标记的样本,学习算法直接对输入数据集进行建模,例如聚类,即“物以类聚,人以群分”。我们只需要把相似度高的东西放在一起,对于新来的样本,计算相似度后,按照相似程度进行归类。
半监督学习:试图让学习器自动地对大量未标记数据进行利用以辅助少量有标记数据进行学习。
强化学习:学习系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,强化学习不同于连接主义学习中的监督学习,主要表现在教师信号上,强化学习中由环境提供的强化信号是对产生动作的好坏作一种评价(通常为标量信号),而不是告诉强化学习系统如何去产生正确的动作。

监督学习主要的两种类型算法是回归算法和分类算法。
回归用于预测输入变量和输出变量之间的关系,即回归模型是表示输入变量到输出变量之间映射的函数。
回归问题的学习等价于函数拟合:使用一条函数曲线,使其很好的拟合已知函数且很好的预测未知数据。
回归问题分为模型的学习和预测两个过程。基于给定的训练数据集构建一个模型,根据新的输入数据预测相应的输出。且预测值是连续的,即连续的输出值。
回归问题按照输入变量的个数可以分为一元回归和多元回归;按照输入变量和输出变量之间关系的类型, 可以分为 :
线性回归
非线性回归

分类算法是通过构造一个分类函数或分类器的方法把数据库中的数据项映射到给定类别中的某一个,从而可以用于预测未知数据。
通常根据数据情况将分类问题分为线性可分和线性不可分

基本术语与概念 (偏差/方差)
偏差:bias指的是算法的期望预测与真实值之间的偏差程度,反映了模型本身的拟合能力。
拟合能力:把现有数据透过数学方法来代入一条数式的表示方式
当模型越复杂时,拟合能力就越好,模型的偏差就越小。但此时如果换一组数据可能模型的变化就会很大,即模型方差变大,所以复杂的模型容易造成过拟合;当模型简单的时候,即使换一组数据,得到的学习器的分类效果与之前分类器的效果的差别也不会很大,即模型方差很小,但由于模型过于简单,导致偏差会很大。
1.绝对偏差:是指某一次测量值与平均值的差异。
2.相对偏差:是指某一次测量的绝对偏差占平均值的百分比。
3.标准偏差:是指统计结果在某一个时段内误差上下波动的幅度。
4.平均偏差:是指单项测定值与平均值的偏差( 取绝对值)之和,除以测定次数。
5.相对平均偏差:是指平均偏差占平均值的百分率。平均偏差和相对平均偏差都是正值。
注意:
如果偏差越小,就更加符合当前的数据集,对未来数据的预测能力降低
如果偏差越大,对当前数据集不太符合,但是适合越策未来的数据
正比关系

方差:variance度量了同等大小训练集的变动导致学习性能的变化,刻画了数据扰动所导致的影响。
模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性
模型间差异,随着数据量增加,模型是否稳定。
在不同的训练集上即使是同一模型我们可能会得到不同的参数,
那么不同训练集上得到的假设函数对新样本做出的估值是不同的。
我们用这些不同估值的期望作为最终这个模型对新样本的估值,
那么我们想看一下这个期望的估值与不同训练集训练结果得到的估值的离散程度。
明显右边的图比左边的图更离散一些。
试想一个极端情况,当模型就是一个常数时,这个时候模型复杂度最低,同时Variance也为
0。
所以我们可以得出结论:当模型复杂度低时,Variance更低,当模型复杂度高时,Variance
更高。有监督学习1--线性回归
注意:
如果 方差比较小的话,模型简单
尽可能的匹配了,当前的数据值,对未来数据的预测能力降低
如果 方差比较大的话,模型比较复杂
尽可能的匹配了,当前的数据值,对未来数据的预测能力降低
反比的关系

基本术语与概念 (性能描述)
泛化能力:机器学习的目标是使学得的模型能够很好地适用于新的样本,而不是仅仅在训练样本上工作的很好,学得的模型适用于新样本的能力称为泛化能力。
误差:学习到的模型在样本上的预测结果与样本的真实结果之间的差。
训练误差:模型在训练集上的误差。
泛化误差:在新样本上的误差。显然,我们更希望得到泛化误差小的模型。
误差:error
模型得到了之后,准确率的计算
error = bias + variance

基本术语与概念 (过拟合/欠拟合)
欠拟合:模型没有很好地捕捉到数据特征,不能够很好地拟合数据。也就是高偏差,低方差。
过拟合:通俗一点地来说过拟合就是模型把数据学习地太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确地分类,模型泛化能力太差。也就是高方差,低偏差。
有监督学习1--线性回归
基本术语与概念 (凹凸函数)
凸集:集合中任意两点连线的点都在该集合中,则称该集合为凸集。
凹集:非凸集。
函数的凹凸是由函数“上方”集合的凹凸性决定的。该集合为凸集则该函数为凸函数,相反若该集合为凹集则该函数为凹函数。
凸函数:简单理解为对曲线上任意两点连线上的点对应的函数值不大于该两点对应的函数值。
凹函数:简单理解为对曲线上任意两点连线上的点对应的函数值不小于该点对应的函数值连线上的值

线性回归 (Linear regression):
是利用数理统计中回归分析来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
如果回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
预测值与误差:
有监督学习1--线性回归
b:斜率
a:截距
误差:真实值与预测值之间肯定存在差异,常用ε来表示。
有监督学习1--线性回归
独立:张三和李四一起办卡,他们两个人是没有关系的。
同分布:张三和李四来的是同一家银行。
高斯分布:银行可能会多给,也可能会少给,但绝大多数情况下浮动不会太大,极小的情况下浮动较大,符合正常情况。
有监督学习1--线性回归
一元线性回归:
首先确定目标:尽可能地拟合样本数据集,即使误差最小化。带着这个思想去寻找我们的损失函数。
有监督学习1--线性回归

多元线性回归目标函数
有监督学习1--线性回归
通常有两种方式来确定多元回归的系数,进而获得回归方程:
梯度下降(Gradient Descent)
正规方程(Normal Equation)

对目标函数进行优化 (损失函数)
有监督学习1--线性回归
对于正规方程来说,我们化简的结果涉及到了矩阵的逆,但对于没有逆的矩阵则无法使用此方法。
梯度下降:是一-种求局部最优的方法,在不断总结经验和优化的过程中,有三种不同的梯度下降的方法被应用到线性回归以及其他机器学习算法中。
批量梯度下降
随机梯度下降
小批量梯度下降
梯度下降已经在数学基础课程中介绍过,这里直接展开三种优化方式。
如果只是单纯来看梯度下降,因为每次只迭代一个样本,如果目标函数不是凸函数,很容易陷入局部最优。线性函数的目标函数为凸函数所以不会存在这个问题。但是如果是非凸函数则不能直接使用。 因此进化出批量梯度下降。

批量梯度下降(Batch Gradient Descent, BGD): 是指每更新一次权重需要对所有的数据样本点进行遍历。在最小化损失函数的过程中,需要不断的反复地更新权重使得误差函数减小,更新过程如下:
有监督学习1--线性回归
注意:主要特点是每- -次参数的更新都用到了 所有的训练数据,因此BGD优化方法会非常耗时,且样本数据量越大,训练速度也会变得越慢
但是批量梯度下降需要一次遍历所有样本,然后求均值,速度很慢。因此随机梯度下降被提出来。

随机梯度下降(Stochastic Gradient Descent , SGD)的诞生是为了解决批量梯度下降训练速度过慢的问题。它是利用随机选取每个样本的损失函数对θ求偏导得到对应的梯度来更新θ :
有监督学习1--线性回归
参数更新的伪代码如下:
有监督学习1--线性回归
因为随机梯度下降是随机选择一个样本进行迭代更新一 -次 ,所以SGD伴随的一一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体优化方向。

小批量梯度下降(Mini-Batch Gradient Descent , MBGD)的诞生是为了解BGD和SGD的缺点,使得算法的训练过程比较快,而且也要保证最终参数训练的准确率。它是通过增加每次迭代个数来实现的,相当于-个Batch.

参数更新的伪代码如下:
有监督学习1--线性回归
通过矩阵运算,每次在一 个batch.上优化参数并不会比单个数据慢太多。但是每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。

当模型的复杂度提高的时候,对训练集的数据拟合很好,但会出现过拟合现象,为了防止出现过拟合,应该加入惩罚项,根据惩罚因子的不同可分为以下几种:
有监督学习1--线性回归