机器学习思想总结——回归

**

机器学习思想总结——回归

**
最近学习了一些机器学习的算法,做了一些实践,在此总结一下已学算法中自认为的核心思想,作笔记之用,也请大家指出错误,谢谢。(再次强调,以下内容是极有可能出错的)

回归

1、如何描述回归的准确程度(拟合度)?
可以用代价函数来描述,比如用 预测值与真实值差的平方和的平均值
2、怎么产生预测值?
对于线性回归(形似kx+b),可以直接用ax1+bx2+cx3+…+n[^1]描述,而对于形似曲线的回归问题,需要先将特征处理成多项式,e.g. x1、x2可以处理成x1x1、x1x2、x2x2,相当于增加了特征数量,并且可以调整最高次来增加项数。
[^1]"n"指一个常数,作为偏置项。
3、怎么确定a、b……n?

梯度下降

可以用 梯度下降法 来确定,先初始化这些系数(比如随机产生),然后用代价函数分别对这些系数求偏导,如果只有两个系数,可以想象一幅以系数作为x、y轴,代价函数值作为z轴的图,形状像山脉。
这幅图是之前学习时看到的,转的别人的,很形象。
假设初始化的系数对应的点在山顶上,求偏导相当于确定了下山的方向,然后设置一个学习率 lr(一个值),a = a - lr * a_grad , b = b - lr * b_grad,这样即可刷新系数(就像下山),并且在刷新的过程中降低代价函数的值,最后可能可以得到理想的系数,以此完成学习。(有时可能走进一个小沟里出不来,或者是一直到不了沟底)
关于梯度下降法可能的局部极小值:
1、可以试试对参数进行多次不同的初始化,取其中误差最小的组。
2、采用动量的思想(第一次看到时真是惊了)
——来自于keras作者写的《python深度学习》
如果将梯度下降的过程比喻成小球下山,可以想象到如果坡度很陡时,小球坑底速度依然很快,可能会掠过坑底。具体来说,就是要描述一个新的更新梯度的方式,这个方式不仅考虑误差是否到了最小,同时还考虑上一次的更新。简单实现如下:

past_velocity = 0
momentum = 0.1   //不变的动量因子
//循环内部
	w,loss,gradient = (初始化)
	//velocity储存了“动量”
	velocity = past_velocity * momentum - learning_rate * gradient
	w = w + momentum * velocity - learning_rate * gradient
	past_velocity = velocity

这个动量因子的目的我认为是为了通过调节来避开“动量过大、过小”时可能错过最小值、还在局部极小值的问题。

标准方程

这是解决问题3的第二种思想。
梯度下降中用到的代价函数(差值的平方和)可以用矩阵的乘法来表示,X表示数据矩阵,W表示系数矩阵,Y表示真实值,
则代价函数 = (Y - WX)的转置 * (Y - WX)
用这个矩阵表示的代价函数对系数矩阵求偏导(涉及到矩阵求导的知识),化简得
令 = 右边等于 0(这里有一个问题,等于零说明到了极值点,但实际要求的是最小值,如何判断是否是极大值呢?一直找不到回答),则可以直接求出W的值。
w = (𝑋T 𝑋)^−1 * XT Y

4、用方程法求逆矩阵时如果遇到不满秩(特征比数据组数多)怎么办?
如果可以,手动删掉不重要的特征或者是增加数据量当然是最方便的,但如果特征都对预测有足够的影响呢?这里就要引入正则化的思想。给要求逆的矩阵加一个项:w = (𝑋T 𝑋 + λE)^−1 * XT Y,这样就避免了求不了逆矩阵的问题。这样增加后代价函数也变成了
在这里插入图片描述
直接从代价函数理解,如果λ比较大,在整个代价函数趋向于最小的过程中,θ就会被减小,相当于减小了系数对拟合的影响。q不确定时,被称为弹性网;q=2时,被称为岭回归;q=1且给系数加上绝对值时,被称为Lasso。
代价函数关于岭系数的图像
这是各系数关于λ的图像
一般将λ(岭系数)选在平滑区域(k0后)。Lasso不知道咋确定系数……
5、一些小技巧
对于机器学习来说,数据量似乎是多多益善,数据量不够多时,则可以采用交叉验证的思想,即:将数据集分成多份,每次取用不同的部分作为训练集和测试集。
有时数据由于单位的原因,值相差很大,这样也不太好,可以采用将数据映射到某一小区间的思想,比如“归一化”和“均值标准化”。
归一化:
newValue = (oldValue-min)/(max-min) 映射到0~1,可以通过-0.5再*2的方式扩充为-1 ~1。
均值标准化:
newValue = (oldValue-u)/s
u为平均值,s为方差。映射到-1/2~1/2.

总结

解决回归问题的核心思想,就是先要用函数描述误差,再用误差函数的值与影响因素(数据的特征)建立联系(新的函数),以此来降低误差,找到理想的回归方式。其中有两种策略:梯度下降、标准方程。由标准方程中用到的矩阵运算可知,在数据量庞大时标准方程法的运算量会增加很多,因此两种方法各有优势。
在学习回归问题时,有些小技巧的思想也值得记忆:
1、添加正则项来限制某一变量。
2、在同样的数据里多次取不同部分来增加学习数据。
3、用映射到某一较小区间的方式来减小数据间的差距。
4、引入动量的思想来优化梯度下降。
第一次写博客,希望以后能养成习惯。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值