博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
梯度下降02
阅读量:5808 次
发布时间:2019-06-18

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

多重特征

多个特征下的线性回归问题又称为:多元线性回归。这里有几个专用名词需要解释一下:

  • \(x_{j}^{i}\)表示第i个训练样本中的第j歌特征值
  • \(x^i\)表示第i个训练样本的所有特征,一般是以列向量来表示。
  • m表示的是训练集的个数

多元形式下的假设函数可以设为:\(h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\)这里更直观的表示这个函数,我们将\(\theta_0\)看作房子的基本价格,将\(\theta_1\)看为每平方米的价格,将\(\theta_2\)看为每层的价格,等等。此时\(x_1\)表示的是房子的平方米,\(x_2\)为房屋的楼层数,等等。将其以矩阵的形式表达为:

\(h_{\theta}(x)=[\theta_0 \theta_1 ... \theta_n]\begin{bmatrix}x_0\\ x_1\\..\\ \end{bmatrix}=\theta^Tx\)

多变量下的梯度下降法

梯度下降的表现形式相同,这里将特征数拓广至n个:(重复运行直至集聚)

mul-var convergrnce
可以使用一下公式代表:
\(\theta_j :=\theta_j - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})\cdot x_j^{(i)}\)其中j=0、1、...n

具体的,可以通过下图对单变量和多特征变量下的梯度算法进行比较:

grad descent

梯度下降之特征缩放

我们可以同过将输入的值统一在同一个范围内以加速梯度下降的运算速度。这是因为参数\(\theta\)在较小的数集中相比较大的数集变化快,且较大的数集下,会出现很长时间的震荡现象(即在最小值附近徘徊)。这里介绍一种有效的方式,主要通过改变输入的值在相同的范围内以规避以上的不利现象。

理想的情况 为:\(-1\leq x_{(i)}\leq1\)\(-0.5\leq x_{(i)}\leq0.5\)

当然,这些并不是必要的步骤,但是这里我们是推荐这样处理,因为它对加速算法的运算帮助很大。

主要有两种技术以统一变量:特征缩放均值归一化处理

特征缩放将输入变量除以输入值的范围(即最大值减去最小值),从而在一个新的范围只有1。均值归一化包括从输入变量的值减去输入变量的平均值,从而使输入变量的新平均值为零,具体如下:

\(x_i := \frac{x_i-\mu _i}{s_i}\)

式中的\(\mu_i\)表示输入特征值得平均值,\(s_i\)可为取值范围(最大-最小),或可为标准差。

比如:对于\(x_i\)代表房价,其范围为100-2000,其平均值为1000,有:

\(x_i := \frac{price-\mu _i}{s_i}\)

梯度下降之学习速率

调试梯度下降:将每一步计算出的代价函数\(J(\theta)\)绘出图形,当代价函数函数有上升趋势时,或许你该降低你的学习速率\(\alpha\)取值。

当每一步下的代价函数的计算值在缩减,且缩减小于某个值E(这里E的取值一般小于\(10^{-3}\),此时可以说明代价函数已经收敛(汇集),但一般该限值E很难确定。

alpha
可以说明:当学习速率
\(\alpha\)足够下,代价函数每一步都会在减少。
learning rate
总结一下:如果学习速率
\(\alpha\)的取值过小会导致汇集很慢,同样当该值较大时,可等导致每一步并不都是递增,从而不会汇聚。

一定要确保你的梯度下降运行的正确

多特征与多项式回归

我们可以将多个特征组合为一个,比如:我们可以将\(x_1\)\(x_2\)组合成一个\(x_3=x_1*x_2\) 此外还可以将特征进行平方、立方等,这样做的原因是:我们基于线性回归的假设方程不足以很好的适应所有数据集。例如:起初的假设函数为:\(h_\theta(x)=\theta_0+\theta_1x_1\),我们可以在此基础之上增加一个平方项和立方项为:\(h_\theta(x)=\theta_0+\theta_1x_1+\theta_1x_1^2+\theta_1x_1^3\)

这里需要注意:当利用多项式回归时,不可忘记在上一部分所谈到的特征缩放,因为立方项与平方后的特征值是很大的,这不利于算法的快捷运算

转载于:https://www.cnblogs.com/SrtFrmGNU/p/6958578.html

你可能感兴趣的文章
HCNA——RIP的路由汇总
查看>>
javaweb开发之Filter实现过滤非法文字
查看>>
zabbix监控php状态(四)
查看>>
定时任务的创建
查看>>
【笔记】两个修复网络的命令
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
Symantec Endpoint Protection下载方法
查看>>
统治世界的十大算法
查看>>
mac安装gcc
查看>>
网络磁盘映射策略脚本
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
updatepanel中的GridView中的radiobuttonList怎么设置样式
查看>>
快速学习javaSE基础4---面向对象的编程
查看>>
关于Android四大组件的学习总结
查看>>
LeetCode 398: Random Pick Index
查看>>
uva live 7638 Number of Connected Components (并查集)
查看>>