Regression中输出的是一个scalar,比如:
故我们可以导入案例:
使用regression,我们可以利用已有的宝可梦进化前后的信息,来预测其他宝可梦进化后的 CP数值。
第一步:确定模型,即function set
凭借经验我们可以先采用线性模型
第二步:定义一个goodness of function损失函数去评估该function的好坏
损失函数是为了衡量function set中的某个function的好坏,所以此函数的自变量为一个function,因变量为这个function的好坏的量化数字。
由于我们假定的模型是由模型参数决定的,故实际上损失函数就是模型中参数的函数。
在这里我们可以使用真实值和预测值的平方和来定义损失函数,当拥有十组数据时,损失函数可定义为:
显然,损失函数的值越大说明参数越不好,故应找到使损失函数小的参数。
第三步:找到最好的参数
利用多元函数求极值可求得参数的最小二乘估计,即为损失函数最小的参数,但这里采用更普遍的梯度下降法。
Gradient Descent 梯度下降
对于更普遍的问题来说,gradient descent的厉害之处在于,只要函数是可微分的,gradient descent都可以拿来处理这个,找到表现比较好的参数。
单个参数的梯度下降
对于只有一个参数w的函数L(w):
首先选取一个点,计算这个点处的导数,若为正数,则增加参数w的值,若为负数则减小参数w的值
参数w增加或者减小的量应取决于计算的微分的大小,同时应设置一个learning rate,即学习率。学习率可以事先确定,学习率越高,w需要变化的次数就越小,机器学习的速度就越快。但过高的学习率会可能导致跳过极小值点。
当微分为0时,我们就找到了极小值点,但极小值点并不一定是最小值点。但幸运的是,在线性回归linear regression上,极小值点和最小值点是同一个,因此可以使用这个方法。
两个参数的梯度下降
与单个参数的梯度下降类似
1、选取两个参数的初始值。
2、计算各自的偏微分。
3、更新参数进行迭代。
可视化如图:
同样的,在两个参数的问题中,梯度下降法所求的也是一个极小值,并不一定是最小值
但在linear regression里,loss function实际上是convex的,不存在极小值与最小值的区别,因此可以使用这个方法。
宝可梦示例
在这个案例中我们利用梯度下降得到最好的参数是b=-188.4, w=2.7。而这个function的误差和为31.9,也就是training data的误差。而testing data的误差为35。
从上图来看如果我们想要更好的模型,可以考虑采用非线性模型,在模型中增加更多n次项。
随之高次项的增加,training data的误差越来越低,但显然模型在一定复杂程度之后,testing data的误差反而会暴增,这通常被称为overfitting过拟合。
因此高次项并不是越多越好,应选择最合适的模型。
其他参数影响
CP值显然还会受到物种的影响,因此我们可以重新设计模型为:
这里可采用示性函数将其转化为同一个线性模型
同时我们也可以加入高次项来试图增加拟合度。
但高次项的增加可能会导致过拟合问题,可采用regularization解决overfitting(L2正则化解决过拟合问题)
我们考虑损失函数为
也就是说我们尽可能希望w比较小,因为参数值接近0的function,是比较平滑的;所谓的平滑的意思是,当今天的输入有变化的时候,output对输入的变化是比较不敏感的。
λ值越大代表考虑smooth的那个regularization那一项的影响力越大,我们找到的function就越平滑
观察下图可知,当我们的λ越大的时候,在training data上得到的error其实是越大的,但是这件事情是非常合理的,因为当λ越大的时候,我们就越倾向于考虑w的值而越少考虑error的大小;但是有趣的是,虽然在training data上得到的error越大,但是在testing data上得到的error可能会是比较小的。
故我们应当选择合理的λ,不能太大也不能太小,因此本例中我们选择λ=100。
ML/DL P3 Regression案例研究
最新推荐文章于 2024-11-10 17:23:57 发布
该博客介绍了使用线性回归模型预测宝可梦进化后的CP值,通过梯度下降法寻找最优参数。在训练和测试数据上的误差分析揭示了过拟合问题,提出引入非线性项和正则化来优化模型。通过调整λ值平衡训练误差和模型复杂度,以避免过拟合。最终,讨论了如何根据物种影响调整模型,强调选择合适复杂度模型的重要性。
摘要由CSDN通过智能技术生成