文章目录
- 前言
- 流程
- 案例操作
前言
流程
回归问题预测连续值,在某个区间内变动.
常见的线性回归问题模型是y=ax+b,然而现实世界由于大量的数据偏差以及复杂度,同时还有大量的噪声,往往达不到如此的精确解,实际解决问题时需要考虑噪声的存在
对于噪声,往往我们已经假设了它符合高斯0-1分布,如果噪声是随机的就无法推算了
问题在于这组数据是如何分布的
一小组数据在某个区间内的函数图像究竟是如何?
如何去求解wb?来自主优化其数据迭代?
在此之前设定一个评价函数
预测值和真实值得平方和越来越小时,loss函数将起作用
问题是如何自动更新合适的w和b来达到这个效果?
要确保w和b快速收敛,准确的沿数据的变化走向进行预测,loss越小越准
准确的说w和b沿着loss函数下降的方向前进
lr代表步长,这个需要合适设置避免进入相对最小值
衰减因子则代表着沿着增大的导数的反方向前进,如果导数为正,则是图像是数据增大方向,则x变小寻找山谷,如果导数为负,则图像数据减小方向,则x增大,寻找山谷如是
(数据图像,导数图像,对导数的变化求最小值的方向)
比如当前位置3.2,导数-23.3 则,位移变化方向是 3.3165
x=3.2-(-23.3*0.005) x2=x-△w
这只是w的一种情况,然后看b,二维向量图,从随机点开始进行梯度下降
三个轴分别代表了w,b和z轴loss,
公式为
运行后会自动找到合适的wb对数据进行公式建模
预测值和真实值之间的平方差成为了loss函数,这样将求解最佳wb的问题变成了求解最小loss的问题
然后loss代表梯度,w和b向着梯度减小的方向前进,每次梯度变化可能非常大,因此需要进行步伐控制
δloss代表平均值loss.总loss/len样本数量
因此计算loss代码为
数学原理
x^2求导得到2x,所以δloss/δw=2xxxxx +2xxxxx…
b导数为1,因此…
根据loss对w和b的导数,确定那里是梯度下降的方向,对w和b进行更新,变相的求loss下降的方向
代码实现为:
然后不断迭代就得到了应有的w和b权重
基于线性模型建立的有如下三种
线性模型
二分类模型(sigmod函数用于划分01)
多分类模型
案例操作
使用numpy实现与tensorflow对比实现两者
tensorflow2.4运行即可,带数据与代码
https://www.aliyundrive.com/s/LmAms9tzWdq