随机状态(Random_State)
在机器学习中,random_state是一个参数,用于控制随机数生成器的种子,以确保可重复性。
机器学习算法通常会使用随机数生成器来随机化算法的某些方面,例如数据划分、初始化模型参数等等。这些随机化过程可能会导致算法在不同的运行中产生不同的结果。但是,为了进行比较和评估,我们通常需要保证每次运行的结果都是一样的,这就需要控制随机数生成器的种子。这样,每次运行时,随机数生成器生成的随机数序列都是相同的,结果就可以重复。这在调试和调优模型时特别有用。
因此,当我们使用具有随机性的算法时,我们通常需要指定一个随机数种子,这个种子称为random_state,以确保每次运行时都会得到相同的结果。随机数种子可以是任何整数。指定相同的随机数种子将导致算法使用相同的随机数序列,从而产生相同的结果。
交叉验证(cross-validation)
机器学习中的交叉验证(cross-validation)是一种评估模型性能的技术,特别是在数据集较小的情况下。交叉验证通过将数据集分成多个子集来评估模型的泛化能力,即模型对新数据的预测能力。
交叉验证的基本思想是将数据集分成k个相等大小的子集,其中一个子集作为验证集,剩下的k-1个子集作为训练集。然后,用训练集训练模型,在验证集上评估模型性能。重复k次,每次选取不同的验证集,最终将k次验证结果的平均值作为模型的性能指标。
常见的交叉验证方法包括k折交叉验证和留一法交叉验证。k折交叉验证将数据集分成k个子集,每个子集都轮流作为验证集,其余子集作为训练集。留一法交叉验证是k折交叉验证的特例,其中k等于数据集的大小,每次只留下一个样本作为验证集,其余样本作为训练集。
交叉验证的优点在于它可以减少对单个数据分割的依赖性,提供对模型性能的更准确的评估。但是,它也存在一些缺点,包括计算成本高和可能引入一定程度的数据泄漏。因此,在实际应用中需要仔细考虑交叉验证的使用。
正则化(Regularization)
在机器学习中,正则化(regularization)是一种用于降低模型复杂度并避免过拟合的技术。正则化通过在模型的损失函数中添加一个额外的项来实现,该项通常是模型参数的平方和或绝对值的和。
常用的正则化方法有L1正则化和L2正则化。L1正则化通过在损失函数中加上参数的绝对值之和,促使一些参数变成0,从而实现特征选择(feature selection)的效果。L2正则化通过在损失函数中加上参数的平方和,使得模型的参数尽可能小,从而减少过拟合的风险。在神经网络中,L2正则化也被称为权重衰减(weight decay)。
除了L1和L2正则化,还有其他正则化方法,如弹性网络(elastic net)、Dropout等。
正则化可以帮助模型更好地泛化到新数据,但同时也会影响模型的预测准确度。因此,在实际应用中,需要根据数据集和模型的特点选择适当的正则化方法和正则化系数,以平衡模型的预测准确度和泛化能力。
损失函数也称为残差平方和或 RSS 方程,公式如下:
sklearn有两种类型的正则化。