最近想搞点新东西,然后就选择了机器学习,刚开始学(斯坦福大学的公开课),有很多不懂地方,如果有什么错误,欢迎指正。
首先来介绍一下什么叫回归
回归在数学上来说是给定一个点集,能够用一条曲线去拟合,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归.
引入一个房屋销售的例子:
假设这里存在
m
组数据
现在介绍一下几个变量以及他们代表的含义:
m:训练集合的个数,也就是样本的个数
x:输入数据,输入的房屋面积
y:输出数据,输出的房屋价格
n:特征的个数,有多少个影响因素
引入公式以及介绍
现在让你输入一个房屋面积,让你求出他需要卖出多少钱?
这就是一个机器学习的简单例子,通过一些大量的数据让机器自己慢慢的学习和推断,让其来预测结果,我感觉这就是机器学习的本质吧。
那么今天就来学习一下线性回归方法。
因为是线性回归方法: 所以我们将这些数据用线性模型
y=kx+b
来表示,为此我们建立一维线性回归模型。假设一维线性模型表达式如下,用
n
表示输入特征个数,为方便计算,所有的样本都加入了
根据数据我们可以做出一个估计函数
h(x)
:
hθ(x)=θ0∗x0+θ1∗x1+θ2∗x2+...+θn∗xn =∑ni=0θi∗xi
其中 θ 在这儿称为参数,表示调整 feature(特征) 中每个分量的影响力,究竟是哪个特征更为重要一些。为了方便计算,令
x0=1
,就可以用向量的方式来表示:
hθ(x)=θ∗x(其中θ与x是向量)
代表含义如下:
x=[x0,x1,x2,...,xn]
,
θ=⎡⎣⎢⎢⎢⎢⎢⎢θ0θ1θ2...θn⎤⎦⎥⎥⎥⎥⎥⎥
为了计算确定
θ
的值,我们又引入了一个误差函数或者叫为损失函数(loss function),被叫做
J
函数,其中:
我们要求的也就是使得
J(θ)
最小,那么就几种方法。
第一种方法(最小二乘法):
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得
未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化
能量或最大化熵用最小二乘法来表达。
——摘自百度百科
其中最小二乘法的局限性感觉很大,首先来举个比较简单易懂的例子,
A∗θ=B
,其中
A、θ、B
都是向量,
⎡⎣⎢⎢⎢A00A10...Am0A01A11...Am1............A0nA1n...Amn⎤⎦⎥⎥⎥
*
⎡⎣⎢⎢⎢θ0θ1...θn⎤⎦⎥⎥⎥
=
⎡⎣⎢⎢⎢B0B1...Bm⎤⎦⎥⎥⎥
其中,我们要求解的是向量
θ
, 因为这个矩阵
A(m∗n)
不一定是方阵,所以不一定有秩,所以我们需要将
A∗θ=B
这个式子的”=”两侧乘以
AT(A的转置)
,因为
ATA
一定是方阵,即有如下推导:
A∗θ=BATA∗θ=ATBθ=(ATA)−1∗ATB
所以根据最小二乘法确定的
J(θ)
中的参数
θ=(xTx)−1∗xThθ(x)
因为根据最小二乘法的规则是求解最好的
θ
值,使误差平方和达到最小。在上式中,我们用输出值
y
替换
最小二乘法的局限性:输入向量
x
是列满秩,而且求解矩阵的逆的时候,花费时间较多。
第二种方法(梯度下降法):
梯度下降算法是一种求局部最优解的方法,对于
其中梯度下降法又分为两种:批梯度下降法和随机(增量)梯度下降法。
(1)批梯度下降法
批梯度下降法针对的是整个数据集(training set),通过对所有的样本的计算来求解梯度的方向,肯定找的是斜率最大的。
将误差函数或者损失函数对
θ
求导:
∂J(θ)∂θi=∑mj=1(hθ(x(j))−y(j))x(j)i
解得:
局限性:当训练样本数目很多时,所用的时间会很长,效率不高。
(2)随机/增量梯度下降法
随机梯度下降算法可以看成是批梯度下降的一个特殊的情形,即在随机梯度下降法中每次仅根据一个样本对模型中的参数进行调整。