建设网站最重要的是什么意思,连云港做电商网站的公司,网页加速器安卓,网站建设价格裙一、过拟合的本质
过拟合是指模型在训练集上表现良好#xff0c;但在新数据上的泛化能力较差。考虑到多项式回归的例子#xff0c;我们可以通过几个模型的比较来理解过拟合的本质。 线性模型#xff08;欠拟合#xff09;#xff1a; 第一个模型是一个线性模型#xff0…一、过拟合的本质
过拟合是指模型在训练集上表现良好但在新数据上的泛化能力较差。考虑到多项式回归的例子我们可以通过几个模型的比较来理解过拟合的本质。 线性模型欠拟合 第一个模型是一个线性模型它的拟合程度较差不能充分适应训练集。 四次方模型过拟合 第三个模型是一个四次方的模型过于强调对训练集的拟合失去了对新数据的泛化能力。 中间模型适中拟合 中间模型似乎在拟合训练集和对新数据的泛化之间取得了平衡。 解决方案
丢弃无关特征
一种应对过拟合的方法是丢弃一些无关的特征。这可以通过手动选择保留哪些特征或者使用一些模型选择的算法如主成分分析PCA来实现。这种方法的缺点是需要人为干预且可能遗漏一些潜在有用的特征。
正则化
另一种更普遍的方法是引入正则化技术。正则化通过保留所有特征的同时减小参数的大小magnitude。这可以通过修改代价函数来实现引入一个正则化项。正则化的核心思想是对模型复杂度进行惩罚防止其过度拟合训练集。 二、代价函数的修改
考虑一个回归问题的模型其中包含高次项如 我们知道过多的高次项可能导致过拟合。为了避免这种情况我们需要减小这些高次项的系数。正则化的基本思想就是在代价函数中对这些参数引入惩罚。 修改后的代价函数为 其中第一项为原始的均方误差代价第二项是正则化项。正则化项的系数由参数 λ 决定它是正则化参数。 正则化的效果
通过修改代价函数我们实现了对参数的惩罚。当 λ 较小时正则化的影响较小模型更趋向于原始的过拟合情况。而当 λ 较大时正则化的惩罚力度增强模型的复杂度降低更趋向于简单的拟合。
通过调整 λ 的值我们可以在模型的复杂性和泛化能力之间找到平衡点防止过拟合的发生。
选择合适的 λ
选择合适的 λ 值是正则化中关键的一步。如果 λ 过大模型可能会过于简化导致欠拟合。如果 λ 过小模型可能无法避免过拟合。
通常可以通过交叉验证等技术来选择最优的 λ 值使得模型在验证集上达到最佳性能。 三、正则化线性回归的代价函数
正则化线性回归的代价函数包含两部分原始的均方误差项和正则化项。对于线性回归问题代价函数为 其中第一项为原始的均方误差代价第二项是正则化项。正则化项通过参数 λ 控制θj 是模型的参数。 梯度下降法
使用梯度下降法更新参数时更新规则为 其中α 是学习率m 是训练样本数量。 正规方程
正规方程用于直接求解正则化线性回归的参数 θ。求解的公式为 其中X 是输入特征矩阵y 是输出向量L 是一个对角矩阵对角元素为 [0,1,1,...,1][0,1,1,...,1]与 θ0 对应的元素为 0。 梯度下降法与正规方程的比较
梯度下降法需要选择学习率 α并进行多次迭代更新参数。正规方程则通过解析解直接计算参数不需要选择学习率但计算复杂度较高。通常在样本量较大时梯度下降法更为实用而在样本量较小且特征较多时正规方程可能更为合适。
参数更新的影响
正则化项的引入使得参数更新时每次都减少一个额外的值这使得模型更趋向于简单的拟合。通过调整 λ 的值可以控制正则化的强度从而影响模型的复杂性和拟合效果。
四、正则化逻辑回归的代价函数
对于正则化的逻辑回归代价函数包含两部分原始的逻辑回归代价和正则化项。代价函数为 其中第一项为原始的逻辑回归代价第二项是正则化项。正则化项通过参数 λ 控制θj 是模型的参数。 梯度下降法
使用梯度下降法更新参数时更新规则为 其中α 是学习率m 是训练样本数量。 代码示例
import numpy as npdef sigmoid(z):return 1 / (1 np.exp(-z))def costReg(theta, X, y, learningRate):theta np.matrix(theta)X np.matrix(X)y np.matrix(y)m len(X)first np.multiply(-y, np.log(sigmoid(X * theta.T)))second np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))reg (learningRate / (2 * m)) * np.sum(np.power(theta[:,1:theta.shape[1]], 2))return np.sum(first - second) / m regdef gradientReg(theta, X, y, learningRate):theta np.matrix(theta)X np.matrix(X)y np.matrix(y)m len(X)error sigmoid(X * theta.T) - ygrad ((X.T * error) / m).T (learningRate / m) * theta# Intercept term should not be regularizedgrad[0, 0] grad[0, 0] - (learningRate / m) * theta[0, 0]return np.array(grad).ravel()注意事项
与线性回归不同逻辑回归中的 θ 不参与正则化项。对 θ0 的更新规则与其他参数不同。正则化项的引入使得模型更趋向于简单的拟合防止过拟合的发生。
通过正则化的逻辑回归模型我们可以更好地处理高维数据并提高模型的泛化能力。
参考资料
[中英字幕]吴恩达机器学习系列课程
黄海广博士 - 吴恩达机器学习个人笔记