目录
写在前面,真的很生气,花费一个晚上写好的笔记,结果莫名其妙的突然浏览器就全部给我清空了,我写了将近两千字的就这么没了.......心痛啊,太扎心了,百度了都不能恢复,哎,希望CSDN可以把这个BUG修好吧!所以第二版本肯定不如第一个版本详细,全面,请多多体谅。
1、回归的定义
回归官方定义:指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另一组(X1,X2,…,Xk)变量之间关系的统计分析方法,又称多重回归分析。通常Y1,Y2,…,Yi是因变量,X1、X2,…,Xk是自变量。
简单来说,回归就是找出变量之间存在何种关系,并将这种关系清晰直观地表达出来。
2、回归的例子
1)股市预测
输入:过去10年股票的变动、新闻咨询、公司并购咨询等
输出:预测股市明天的平均值自动驾驶
2)自动驾驶
输入:无人车上的各个sensor的数据,例如路况、测出的车距等
输出:方向盘的角度商品推荐
3)商品推荐
输入:商品A的特性,商品B的特性
输出:购买商品B的可能性
3、建模步骤
1)模型假设,选择模型框架(线性模型)
模型主要有一元线性模型(单个特征)和多元线性模型(多个特征)。
实际生活中,多元线性模型(多个特征)是最常用的,因为比较符合我们的情况,就像一个人,不能简单的用身高这一个特征就形容完整,肯定是要加上这个人的体重、肤色、五官、学历等等。
所以我们假设 线性模型 Linear model:
- :就是各种特征(fetrure) ;
- :各个特征的权重 ;
- :偏移量,也称 偏置。
- 随机给10组数据,先将这10组数据在坐标轴中表示出来,选择合适的模型。
2)模型评估,如何判断众多模型的好坏(损失函数)
一个模型的好坏,我们通常用损失函数Loss function来衡量。
损失函数越大,表示真实值与预测值的差别越大;
损失函数越小,表示真实值与预测值的结果越接近;
损失函数的表达式:
比如下面的两个图,同样的10个数据,一个用的是三次方,一个是五次方,上面表示的是在训练的模型,下面的是test,结果看出,三次方的会比五次方的拟合的效果更好,损失函数也更小,三次方的无论是在训练集还是测试集上的表现都会比五次方的要好。
3)模型优化,如何筛选最优的模型(梯度下降)
前两步我们有模型,还通过损失函数对模型进行评估,但平均Error可能还不是很让人满意,我们需要继续找更让人满意的点。这就需要梯度下降,对损失函数求偏导,像下面这张图,不断计算和,并根据步长来确定下一个方向。
首先在这里引入一个概念 学习率 :就是移动的步长,下图中的就是学习率
步骤1:随机选取一个 ;
步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
- 大于0向右移动(增加w)
- 小于0向左移动(减少w)
步骤3:根据学习率移动
重复步骤2和步骤3,直到找到最低点。
这时候的效果可能好,也可能不好,会出现三种情况:欠拟合,过拟合,正合适。
先只说过拟合,下面这个就是过拟合,刚开始的时候训练的挺好的,到后面结果反而不尽人意。
欠拟合就是模型和想要的差的还很多。
4、步骤优化
当上面的模型效果需要改进时,可以试试下面三种不同的优化方法,从不同的角度对模型进行优化。
1)向量化Vectorization
简单来说,就是用最少的代码得到最好的预测。
将2个input的四个线性模型是合并到一个线性模型中,消除代码中显式 for 循环,如下图可以将四个式子合并为一个式子。
2)引入更多参数,更多input
这和我上面说的例子差不多,一个意思,不能简单的用身高这一个特征就形容完整,肯定是要加上这个人的体重、肤色、五官、学历等等。就像是给别人画肖像,你之前没有见过那个人,而那人只告诉你他的身高,你有办法画的逼真吗?肯定没有对不对,这就需要他给你提供更多的信息,比如体型,眼睛形状,是桃花眼?狐狸眼?杏眼?鼻子是鹰钩鼻?驼峰鼻?嘴巴的厚薄?耳朵的轮廓,等等,只有给更加详细的信息才能最大化的画的逼真。
3)优化:引入正则化Regularization
更多特征,但是权重 w可能会使某些特征权值过高,仍旧导致过拟合,所以加入正则化。正则化有助于避免过拟合,减少网络误差。正则项不需要对偏置b正则,b对函数没有影响。