博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习算法(一):线性回归算法
阅读量:4350 次
发布时间:2019-06-07

本文共 1222 字,大约阅读时间需要 4 分钟。

线性回归算法学习器如下,其中n为特征数目, $x_{0}=1$

$h_{\theta}(x)=\sum\limits_{i=0}^{n}(\theta_{i}x_{i})$

求$\theta$最优解使得该学习器对样本的训练偏差最小,其中m为样本数目

$\min\limits_{\theta} J(\theta)=\frac{1}{2}\sum\limits_{j=1}^{m}(h_{\theta}(x^{(j)})-y^{(j)})^{2}$

解法一: 迭代梯度下降算法

使用梯度下降算法迭代更新$\theta$

$\theta_{i} := \theta_{i} - \alpha\frac{\partial}{\partial\theta_{i}}J(\theta)$

$\theta_{i} := \theta_{i} - \alpha\sum\limits_{j=1}^{m}(h_{\theta}(x^{(j)})-y^{(j)})*x_{i}^{j}$

这是标准的梯度下降算法,缺点是每一次迭代都需要用到所有样本。

下面为梯度下降算法的一个简化

for j = 1 to m

  对所有i:$\theta_{i} := \theta_{i} - \alpha(h_{\theta}(x^{(j)})-y^{(j)})*x_{i}^{j}$

每次加入一个样本,来更新所有参数,这个算法可以用于大量样本的训练,缺点自然是每次迭代并不是真正的梯度下降。

 

解法二: 矩阵梯度求解

另一种方式是通过矩阵运算直接算出$\theta$

$\min\limits_{\theta} J(\theta)=\frac{1}{2}(X\theta-Y)^{T}(X\theta-Y)$

目标变为求解$\theta$使得梯度为0:$\nabla_{\theta}J(\theta) = \vec 0$

通过矩阵运算推导得出

$\nabla_{\theta}J(\theta) = X^{T}X\theta-X^{T}Y = \vec 0$

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

 

解法三: 线性代数求解

一般情况下我们是无法最小化方差为0,也就是说不存在$\theta$使得$X\theta=Y$有解。

那么让Y投影到X对应的向量空间上,假设这个投影向量是$X\theta$,那么投影向量对应的$\theta$就是我们要的最优解,根据点到平面的最短距离为垂直距离, 它使得$X\theta$与Y的距离最小。

同时,我们有

$X^{T}(Y-X\theta)=0$ 其中 $Y-X\theta$ 为垂直于向量空间A的误差向量,它与$X^{T}$点乘为0.

于是可以求出$\theta=(X^{T}X)^{-1}X^{T}Y$

 

转载于:https://www.cnblogs.com/learninglife/p/9159587.html

你可能感兴趣的文章
栈和队列
查看>>
CSS2-3常见的demo列子总结一
查看>>
XML & JSON---iOS-Apple苹果官方文档翻译
查看>>
数据挖掘之功能
查看>>
2018-07-13E-R图设计数据库+三大范式+修改用户密码+分配用户权限
查看>>
移动广告行业的复苏
查看>>
Cookie机制,session机制
查看>>
nginx配置错误
查看>>
47 【golang】mysql操作
查看>>
Using ARITHABORT with LLBLGen
查看>>
增量模型与快速模型的异同。
查看>>
Hanoi双塔问题(简单的枚举)
查看>>
lattice 黑盒子的生成和使用(Creating Your Own Black Box Modules)
查看>>
NDK以及C语言基础语法(一)
查看>>
ES6/ES2015核心内容 import export
查看>>
Day4-文件,json字典文件互转,函数
查看>>
vector引用参数
查看>>
NTC温度采集之数据拟合——freemat软件实现
查看>>
maven私服nexus3.9安装配置
查看>>
U盘出现大量乱码文件,并且不能彻底删除
查看>>