机器学习学习笔记--线性回归

本文介绍了机器学习中的线性回归算法,包括回归的概念、线性回归模型、梯度下降法以及最小二乘法。讨论了如何通过梯度下降法寻找损失函数最小值,并介绍了线性回归在分类问题上的应用——逻辑回归。

线性回归是学习机器学习过程中最先接触到的一个算法,这里写一下自己在学习过程中的一些理解。

回归与梯度下降

  回归在数学上来说就是给定一个点集,能够用一条曲线去拟合它,如果这条曲线是一条直线,那就称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。回归还有很多变种,比如逻辑回归。

  下面举一个简单的例子。现在要做一个房屋价值的评估系统,一个房屋价值来自很多地方,比如说面积、房间的数量、地段等,这些影响房屋价值的变量称为特征(feature),feature在机器学习中是一个重要的概念,这里为了简单我们假设房屋的价值是单变量影响的,就是房屋的面积。假设房屋的销售数据如下:

面积(平方米)销售价值(万元)
123250
150320
87160
102220

  对于这个表格我们可以做出一个图,x轴表示房屋的面积,y轴表示房屋的售价,如下:

如果来了一个新的面积,假设在销售记录中没有,我们该怎么办?

我们可以用一条曲线去尽量准的拟合这些数据,然后当有新的数据输入时,我们可以将曲线上这个点对应的值返回。

首先给出一些概念和常用的符号。

房屋销售记录表:训练集(training set或者训练数据(training data),是我们流程中输入的数据,一般记为X。

房屋销售价钱:输出数据,一般称为y

拟合函数(或者称为假设或者模型):一般写作y=h(x)

回归方法可以解决特征多维,结果是一维多离散值或者一维连续值的问题。

线性回归

    线性回归假设特征和结果满足线性关系,线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。

   我们用X1,X2....Xn去描述feature里面的分量,比如x1=房间的面积,x2=房间的朝向等等,我们可以做出一个估计函数:了  

\theta在这里称为参数,在这里的意思是调整feature中每个分量的影响力,为了方便表示我们令X0=1,就可以用向量的形式表示了。

h_{\theta}(x)=\theta^{^{T}}X

我们的程序需要一个机制去评估\theta是否比较好,所以需要对于我们做出的h函数进行评估,一般这个函数被称为损失函数(loss function) 或者错误函数(error function),这里我们的错误函数如下:J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}

我们的目标是最小化J(\theta),这个错误估计函数就是去对x(i)的估计值与真实值y(i)差的平方和,前面乘上1/2是为了在求导的时候这个系数就不见了。

至于如何调整\theta使得J(\theta)取得最小值有很多方法,其中有最小二乘法,这是一种完全的数学描述方法,此外还有梯度下降法。

梯度下降法

在选定线性回归模型后,只需要确定参数\theta,就可以将模型用来预测。然后\theta需要在J(\theta)最小的情况下才能确定,因此问题转化为求极小值的问题,使用梯度下降法。梯度下降法最大的问题是求得的有可能是全局最小值,这与初始值的选取有关。梯度下降法按照下面的流程进行:

  • 首先对\theta赋值,这个值可以是随机的,也可以让\theta是一个全零的向量。

 

  • 改变\theta的值,使得J(\theta)按照梯度下降的方法进行减少。

梯度方向由J(\theta)对\theta的偏导数确定,由于是求极小值,因此梯度方向是偏导数的反方向,结果为

\theta_{j}:=\theta_{j}+\alpha (y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}

迭代更新的方法有两种,一种是批梯度下降,也就是对全部的训练数据求误差后再对\theta进行更新,另一种是增量梯度下降,每扫描一步就对\theta进行更新。前一种方法能够不断收敛,后一种方法可能不断在收敛处徘徊。

    一般来说,梯度下降法的收敛速度是比较慢的。

    另一种直接计算结果的方法是最小二乘法。

最小二乘法

将训练特征表示为X矩阵,结果表示为y向量,结果仍是线性回归模型,误差函数不变。那么\theta可以直接由下面的公式得出

\theta=(X^{T}X)^{-1}X^{T}y

但这种方法要求X是列满秩的,而且求矩阵的逆比较慢。

下面讲一下误差函数围殴平方和的概率解释

假设根据特征的预测结果与实际结果有误差\varepsilon ^{(i)},那么预测结果\theta^{T}x^{(i)}和真实结果y^{(i)}满足下式:

y^{(i)}=\theta^{T}x^{(i)}+\epsilon^{(i)}

一般来讲,误差满足平均值为0的高斯分布,也就是正态分布,那么x和y的条件概率就是p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}-\theta^{Tx^{(i)}})^{2}}{2\sigma ^{2}})

这样就估计了一条样本的结果概率,然后我们期待的是模型能够在全部样本上预测最准,也就是概率积最大。注意这里的概率积是概率密度函数积,连续函数的概率密度函数与离散值的概率函数不同。这个概率积成为最大似然估计。我们希望在最大似然估计得到最大值时确定\theta,那么需要对最大似然估计公式求导,求导结果为

\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2},这就解释了为什么误差函数要使用平方和。

分类与logistic回归

一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。如果非要将回归应用到分类问题上,可以使用logistic回归。

  logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)将假设函数进行预测。g(z)可以将连续值映射到0和1上。

  logistic回归的假设函数如下,线性回归假设函数只是\theta^{T}x

h_{\theta}(x)=g(\theta^{T}x)\frac{1}{1+e^{-\theta^{T}x}}

logistic回归用来解决0/1问题,也就是预测结果属于或者1的二值分类问题。这里假设了二值满足伯努利分布,也就是

p(y=1|x;\theta)=h_{\theta}(x)

P(y=0|x;\theta)=1-h_{\theta}(x)

当然假设它满足泊松分布、指数分布等等都可以,只是比较复杂,后面会提到线性回归的一般形式。与选用误差函数为平方和的概率解释一样,仍然要求最大似然估计,然后求导得到迭代公式结果跟之前的一样。

数学推导

1:函数模型

h_{w}(x^{i})=w_{0}+w_{1}x_{1}+w_{2}+...+w_{n}x_{n}

写成向量形式:

h_{w}(x^{i})=w^{T}x_{i}=W^{T}X

其中

x=\left[ \begin{matrix} 1 \\ x_{1} \\ \cdots \\ x_{n} \\ \end{matrix} \right]   W=\left[ \begin{matrix} w_{0} \\ w_{1} \\ \cdots \\ w_{n} \\ \end{matrix} \right]

假设有训练数据D={​{(X_{1},Y_{1}),(X_{2},Y_{2})},...,(X_{n},Y_{n})},为了方便我们写成矩阵的形式,

X=\left[ \begin{matrix} 1 & x_{1}^{1} & \cdots & x_{n}^{1} \\ 1 & x_{1}^{2} & \cdots & x_{n}^{2} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{1}^{n} & \cdots & x_{n}^{n} \\ \end{matrix} \right]

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值