https://codefights.com/challenge/wSfnufaxWqvauCvPd
提供测试
题意 :
已知有数据集包含多个工程师的信息,而对于每个工程师有engineer -> [y,x1,x2] 表示当其XP的值为x1,解决的题目为x2个时,可以开出y的薪水。请用多元线性回归,给出所查询工程师的薪水。
题解:
题目比较恶心的是最终参数要保留两位小数,所以并不是最拟合的就是结果。小心精度就好,不是本次题解的重点。
说道解线性回归,之前CodeFight也有个题,是一元的,直接每个方程求导后用高斯消元解决的。当时尝试用梯度下降法,但总是不找不到合适的rate而不收敛,十分的费解。
首先,要确定的是以L2为cost function的线性回归是一定可以通过设置合适的步长(这里就称作rate),一步步迭代到最有点的。证明很简单,因为L2是光滑的,所以其最小值一定在某个极小值点,而当我们把L2对每个自变量求二阶导,得到的都是一个一元方程,可知对于任意方向都只存在一个驻点,因此用合适步长梯度下降法一

本文介绍了如何使用梯度下降法解决多元线性回归问题,特别是针对CodeFight上的挑战。讨论了在实际应用中,由于数据集特性的差异可能导致梯度下降不收敛的问题,并强调了归一化在确保算法收敛过程中的关键作用。通过实例解释了如何通过调整步长和进行数据归一化来优化梯度下降法的性能。

6924

被折叠的 条评论
为什么被折叠?



