机器学习笔记(3)--正则化 --基于吴恩达机器学习配套笔记

在这里插入图片描述

正常情况下的逻辑回归与线性回归的结果表示


通过特征映射将原来低维的数据拓展到高维后
在这里插入图片描述
原直线的模型就能适应曲线模型,但在不做任何处理+训练数据较少的情况下曲线可能过拟合。
直观形象上就是曲线歪歪扭扭,强行符合训练集,而一般应用到测试集以及实际使用中效果奇差:
在这里插入图片描述
因此使用正则化的思想,其主要考量就是将各个维度的theta参数限定在比较小的值上,处理后的结果曲线能变得缓和。既保留了曲线的弧度,又不至于过拟合,是一种两全的办法。
在这里插入图片描述

代码分析/具体实现:

正则化本质上是对theta参数的限制,因此需要涉及的修改仅在代价函数的定义上,(代价函数是用来控制假设函数theta参数,用诸如梯度下降的方法将theta逼进到比较正确的值附近)
在这里插入图片描述
在这里插入图片描述
在把握了之前两节的代价函数的形式后,只需要在原代价函数的基础上加上一个求和项,同时修改与theta对应的代价函数偏导数函数
在这里插入图片描述在这里插入图片描述

这里theta从1~n而不是从0开始,因为一般正则化不对常数项的theta限制。
(对特征值有2个x1、x2的数据集,theta参数有3个 θ0、θ1、θ2,高维类推)

这个求和项就能实现对theta的限制(theta过大,代价函数就自然会很大,在梯度下降的控制下会自然地减小它。

具体到代码中,
直接在原来的求cost函数基础上外加一层接口:
在这里插入图片描述
在这里插入图片描述
cost原代价函数不变,regularized_cost正则化代价函数将theta1~n取出来,直接计算出求和项
最后调用原代价函数cost并与求和项相加后返回。

  1. 求偏导也是同样道理,直接在原求偏导基础上套一层求和项的计算
    在这里插入图片描述

在这里插入图片描述

最后用优化器调用或者自己写epoch循环训练这样的操作,都是一样的流程。