梯度检验的作用

来源:6-8 如何确定梯度计算的准确性?调试梯度下降法

malo

2020-10-11

bobo老师,看了6-8之后,我有几个问题,
1.之前您说**“因为线性回归有解释性,所以拿到数据可以先进行线性回归”**。
是不是可以这么理解,
拿到有label的数据之后
第一步:线性回归,
第二步:随机梯度下降(因为不知道数据是不是凸数据)
第三步:看返回来的权值来决定用什么算法
第四步:如果是可以用梯度下降的算法,先跑一遍漫长的梯度检测,得到准确无误的Θ,然后再用梯度下降或者是随机梯度下降,看自己的程序是否正确?

2.梯度检测的目的是否为:确保自己调整超参数时,梯度下降得到的Θ准确性?
因为我感觉如果我自己使用梯度下降的话应该会直接调用sklearn中的梯度下降算法,包里的梯度下降算法应该不会产生错误吧,产生错误的原因是我调整的超参数不对,导致Θ不正确
如果是这样的话,我看其他地方会使用cv set 来验证参数,是不是多此一举了0.0?

3.之前把吴恩达老师的机器学习刷了一遍,又买了一本西瓜书,感觉脑子里东西有点乱乱的,一般来说,拿到一个数据集,是不是和我这个图一样的流程。图片描述

写回答

1回答

liuyubobobo

2020-10-13

1)

我在课程中说遇到数据可以先使用一下线性回归,是因为线性回归本身可解释的特性,使得我们可以利用线性回归查看各个特征的“重要程度”,根据此,我们可以相应的进行诸如特征选择,或者确定是否需要进一步挖掘数据特征的工作。说白了,是线性回归法可以帮助我们做“特征工程”。


关于特征工程的讨论,可以参考这里:http://coding.imooc.com/learn/questiondetail/40722.html


2)

对于你的第二个问题,我有点儿没有看懂。我没有理解你是如何得到:使用cv set 来验证参数,多此一举的结论的。实际上,这个课程后续会讲交叉验证(cv),交叉验证是非常重要的,绝不是多此一举。可以看到课程后续,再回过头来思考这个问题。


3)

你画的图,整体思路是对的。就是线性回归那里没有那么复杂。

整体,对于一个机器学习的任务:

我们首先要确定这是一个什么任务(监督学习?非监督学习?回归问题?分类问题?)

然后,我们要做特征工程。这个课程没有介绍特征工程,都是假设数据的特征已经没有问题了,具体开始使用机器学习算法。

具体使用机器学习算法的过程,分 train, test,然后调用算法就好了。课程后续会介绍验证集(validateion),关于这部分流程后续会介绍。


具体求解模型参数的过程,各个算法是封装好的。从上层调用的角度,其实不用过于关心一个模型内部的模型参数是如何运算出来的。但是,对于机器学习工程师,要了解其中的原理,才能选取合适的参数(或者调整合适的参数)。这就好像我们调用 sort 就能对数据排序一样。我们在生产环境其实不需要写排序代码,但是工程师要理解排序的内部逻辑。


求解出的模型在测试数据集上的结果如果不够理想,那就需要调整参数,或者再做特征工程,然后继续训练模型,以此类推。


p.s. 你画的图里最主要的错误,其实是逻辑回归不是解决回归问题的,而是解决分类问题的。这一点课程后续介绍逻辑回归的时候会讲到。


继续加油!:)

0
3
liuyubobobo
回复
malo
继续加油!:)
2020-10-13
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程