好吧,我希望我参加派对还不算太晚!在深入研究大量信息之前,让我先尝试建立一些直觉(警告:这不是简短的比较,TL;DR)
简介
一个假设h(x),接受一个输入并给我们估计的输出值。
这个假设可以简单到一个单变量线性方程,.. 到一个非常复杂和长的多元方程,与我们正在使用的算法类型(例如线性回归、逻辑回归..等)。
我们的任务是找到最佳参数(又名 Thetas 或权重),使我们误差最小strong> 预测输出。我们将计算此误差的函数称为成本或损失函数;显然我们的目标是最小化错误以获得最佳预测输出!
还有一点要回忆的是,参数值与其对成本函数的影响(即误差)之间的关系看起来像一个钟形曲线(即二次;记住这一点,因为它很重要)。
因此,如果我们从该曲线中的任何一点开始,并继续对我们停止的每个点求导数(即切线)(假设这是一个单变量问题,否则,如果我们有多个特征,我们将取偏导数),我们最终会得到所谓的全局最优,如下图所示:
如果我们在最小成本点(即全局最优)处取偏导数,我们会发现切线的 斜率 = 0 (然后我们知道我们达到了目标)。
只有当我们有一个凸的成本函数时这才有效,但如果我们没有,我们最终可能会陷入所谓的局部最优;考虑这个非凸函数:
现在您应该对我们正在做的事情与以下术语之间的关系有了直觉:衍生、切线、成本函数 , 假设 ..等等
旁注:上述直觉也与梯度下降算法有关(见下文)。
背景
线性逼近:
给定一个函数f(x),我们可以在x=a找到它的切线。切线L(x)的方程为:L(x)=f(a)+f′(a)(x−a)。
看看下面的函数图和它的切线:
从这张图中我们可以看到,在x=a 附近,切线和函数有几乎相同的图。有时,我们将使用切线L(x) 作为函数f(x) 的近似值,靠近x=a。在这些情况下,我们将切线称为函数x=a 的“线性逼近”。
二次近似:
类似于线性近似,但这次我们处理的是一条曲线,我们无法仅使用切线找到接近0的点。
相反,我们使用抛物线,如下图所示:
为了拟合好的抛物线,抛物线和二次函数都应该具有相同的值、相同的一阶导数和相同的二阶导数。公式将是(只是出于好奇):Qa(x) = f(a) + f'(a)(x-a) + f''(a)(x-a)2/2
现在我们应该准备好进行详细比较了。
方法之间的比较
1.牛顿法
回想x 中梯度下降步骤的动机:我们最小化二次函数(即成本函数)。
牛顿的方法在某种意义上使用了更好的二次函数最小化。
更好,因为它使用二次近似(即第一个 AND second 偏导数)。
您可以将其想象为带有 Hessian 的扭曲梯度下降(Hessian 是一个二阶偏导数 n X n 的方阵)。
此外,牛顿方法的几何解释是,在每次迭代中,通过围绕 xn 的二次函数逼近 f(x),然后朝着该二次函数的最大值/最小值迈出一步(在更高维度上,这也可能是一个鞍点)。请注意,如果f(x) 恰好是二次函数,则一步即可找到精确的极值。
缺点:
-
由于 Hessian 矩阵(即二阶偏导数计算),它的计算量昂贵。
-
它吸引了鞍点,这在多变量优化中很常见(即它的偏导数在该输入应该是最大值还是最小值时存在分歧! )。
2。有限内存 Broyden-Fletcher-Goldfarb-Shanno 算法:
简而言之,它类似于牛顿法,但这里的 Hessian 矩阵近似使用由梯度评估(或近似梯度评估)指定的更新。换句话说,就是对 Hessian 逆矩阵进行估计。
Limited-memory 一词仅表示它仅存储几个隐式表示近似值的向量。
如果我敢说,当数据集小时,L-BFGS 与其他方法相比表现相对最好,尤其是它节省了大量内存,但也有一些“严重”的缺点,如果它没有受到保护,它可能不会收敛到任何东西。
旁注:自 0.22 版以来,此求解器已成为 sklearn LogisticRegression 中的默认求解器,取代了 LIBLINEAR。
3.大型线性分类库:
这是一种线性分类,支持逻辑回归和线性支持向量机。
求解器使用坐标下降 (CD) 算法,通过沿坐标方向或坐标超平面连续执行近似最小化来解决优化问题。
LIBLINEAR 是 ICML 2008 大规模学习挑战赛的获胜者。它应用自动参数选择(又名 L1 正则化),当您拥有高维数据集时推荐使用(推荐用于解决大规模分类问题)
缺点:
-
如果函数的水平曲线不平滑,它可能会卡在非平稳点(即非最优)。
-
也不能并行运行。
-
它无法学习真正的多项式(多类)模型;相反,优化问题以“one-vs-rest”方式分解,因此为所有类训练单独的二元分类器。
旁注:根据 Scikit 文档:“liblinear”求解器是 0.22 版之前出于历史原因默认使用的求解器。从那时起,默认使用的是有限内存 Broyden-Fletcher-Goldfarb-Shanno 算法。
4.随机平均梯度:
SAG 方法优化有限数量的平滑凸函数的总和。与随机梯度 (SG) 方法一样,SAG 方法的迭代成本与总和中的项数无关。然而,通过结合先前梯度值的记忆,SAG 方法实现了比黑盒 SG 方法更快的收敛速度。
当样本数量和特征数量都很大时,它比大型数据集的其他求解器更快。
缺点:
-
只支持L2惩罚。
-
它的内存消耗为O(N),这对于大的N 来说是不切实际的(因为它可以记住几乎所有梯度的最近计算值)。
5.佐贺:
SAGA 求解器是 SAG 的一个变体,它还支持非平滑 penalty L1 选项(即 L1 正则化)。因此,这是 sparse 多项逻辑回归的首选求解器,也适用于 very Large 数据集。
旁注:根据 Scikit 文档:SAGA 求解器通常是最佳选择。
总结
下表摘自Scikit Documentation
从上面的同一链接更新了表格(访问时间 2021 年 2 月 11 日):