资讯详情

资讯详情

scikit-learn 随机梯度下降(SGD)完全指南:SGDClassifier / SGDRegressor / SGDOneClassSVM 的原理、参数与实践

scikit-learn 随机梯度下降SGD完全指南SGDClassifier / SGDRegressor / SGDOneClassSVM 的原理、参数与实践【免费下载链接】scikit-learnscikit-learn: machine learning in Python项目地址: https://gitcode.com/gh_mirrors/sc/scikit-learnStochastic Gradient Descent随机梯度下降SGD是 scikit-learn 中在大规模、稀疏数据上拟合线性分类器与回归器的高效优化手段。本文以 doc/modules/sgd.rst 为主线结合 sklearn/linear_model/_stochastic_gradient.py 的源码实现系统讲解 SGDClassifier、SGDRegressor 与 SGDOneClassSVM 三类估计器的损失函数、惩罚项、学习率调度、多分类策略、稀疏数据支持、停止准则与数学推导并给出可直接运行的代码示例与调参建议。读完本文你将能够根据任务选择正确的损失与惩罚组合、配置学习率与早停策略并在文本分类、大规模回归、在线异常检测等场景中正确使用 scikit-learn 的 SGD 模块。1. 什么是 SGD一种训练方式而非一个模型家族严格来说SGD 只是一种优化技术并不对应某一具体的机器学习模型族它只是训练模型的一种方式。SGDClassifier或SGDRegressor训练出的线性模型往往能在 scikit-learn API 中找到采用其他优化算法的等价估计器。例如使用SGDClassifier(losslog_loss)得到的就是逻辑回归即与 LogisticRegression 等价的模型只不过是用 SGD 而非该类的其他 solver 来拟合SGDRegressor(losssquared_error, penaltyl2)与 Ridge 求解同一个优化问题只是手段不同。在凸损失函数如线性支持向量机与逻辑回归的损失下SGD 是一种简单却非常高效的拟合方法。它已在文本分类、自然语言处理等大规模稀疏学习问题中得到成功应用在数据稀疏的前提下本模块的模型可以轻松扩展到超过 $10^5$ 个训练样本、超过 $10^5$ 个特征的问题。1.1 优点与缺点优点高效训练成本基本随训练样本数线性增长详见第 8 节复杂度分析易于实现为代码调优留下了大量空间。缺点SGD 需要若干超参数例如正则化参数alpha和迭代次数max_iterSGD 对特征缩放feature scaling非常敏感。警告务必先打乱数据再训练在拟合模型前请先洗牌训练数据或使用默认开启的shuffleTrue在每轮迭代后打乱数据。同时理想情况下特征应被标准化例如使用make_pipeline(StandardScaler(), SGDClassifier())参见 组合估计器Pipeline。1.2 类层次与核心实现文件从源码看三个公开估计器都建立在抽象基类BaseSGD之上见 sklearn/linear_model/_stochastic_gradient.py#L87BaseSGD共享参数校验、损失/学习率/惩罚类型的解析、参数内存分配_allocate_parameter_mem等公共逻辑BaseSGDClassifier→SGDClassifier#L958BaseSGDRegressor→SGDRegressor#L1802SGDOneClassSVM#L2125直接继承BaseSGD。底层数值循环由 Cython 实现sklearn/linear_model/_sgd_fast.pyx.tp并以_plain_sgd32/_plain_sgd64分别支持 float32 / float64 输入。2. 分类SGDClassifierSGDClassifier实现了一个朴素的随机梯度下降学习流程支持不同的损失函数与惩罚项。以下示例用 hinge 损失训练一个等价于线性 SVM 的分类器完整示例见 examples/linear_model/plot_sgd_separating_hyperplane.py。与其他分类器一样SGD 需要两个数组来拟合形状为(n_samples, n_features)的训练样本数组X以及形状为(n_samples,)的目标值类别标签数组y from sklearn.linear_model import SGDClassifier X [[0., 0.], [1., 1.]] y [0, 1] clf SGDClassifier(losshinge, penaltyl2, max_iter5) clf.fit(X, y) SGDClassifier(max_iter5)拟合完成后即可对新样本进行预测 clf.predict([[2., 2.]]) array([1])SGD 拟合的是一个线性模型模型参数存放在coef_属性中 clf.coef_ array([[9.9, 9.9]])截距offset 或 bias存放在intercept_属性中 clf.intercept_ array([-9.9])是否使用截距即有偏超平面由参数fit_intercept控制默认为True。样本到超平面的带符号距离系数与样本的点积加上截距由SGDClassifier.decision_function给出 clf.decision_function([[2., 2.]]) array([29.6])2.1 损失函数loss 参数具体损失函数通过loss参数设置。SGDClassifier支持以下损失函数见源码BaseSGDClassifier.loss_functions字典sklearn/linear_model/_stochastic_gradient.py#L522losshinge软间隔线性支持向量机soft-margin linear SVMlossmodified_huber平滑化的 hinge 损失losslog_loss逻辑回归以及下面回归部分列出的全部回归损失。此时目标被编码为 $-1$ 或 $1$问题被当作回归问题处理预测类别对应预测目标的符号。各损失的公式见第 9 节数学推导损失函数可视化示例见 examples/linear_model/plot_sgd_loss_functions.py。前两种损失是惰性lazy的只有当某个样本违反间隔约束时才会更新模型参数这使得训练非常高效并且即使使用 $L_2$ 惩罚也可能得到更稀疏的模型即更多零系数。使用losslog_loss或lossmodified_huber会启用predict_proba方法它为每个样本 $x$ 返回概率估计向量 $P(y|x)$ clf SGDClassifier(losslog_loss, max_iter5).fit(X, y) clf.predict_proba([[1., 1.]]) # doctest: SKIP array([[0.00, 0.99]])源码中SGDClassifier的完整可选损失包括{hinge, log_loss, modified_huber, squared_hinge, perceptron, squared_error, huber, epsilon_insensitive, squared_epsilon_insensitive}默认hinge。其中squared_hingehinge 的二次惩罚变体perceptron感知机算法使用的线性损失squared_error、huber、epsilon_insensitive、squared_epsilon_insensitive为回归损失但也可用于分类。2.2 惩罚项penalty 参数具体惩罚项通过penalty参数设置SGDClassifier支持penaltyl2对coef_施加 $L_2$ 范数惩罚penaltyl1对coef_施加 $L_1$ 范数惩罚penaltyelasticnet$L_2$ 与 $L_1$ 的凸组合即(1 - l1_ratio) * L2 l1_ratio * L1。默认设置为penaltyl2。$L_1$ 惩罚会得到稀疏解将大部分系数推向零Elastic Net弹性网络则在特征高度相关时弥补 $L_1$ 惩罚的某些缺陷。参数l1_ratio控制 $L_1$ 与 $L_2$ 惩罚的凸组合比例默认值0.15当penaltyl1时取 1penaltyl2时取 0。源码中的惩罚类型映射为sklearn/linear_model/_stochastic_gradient.py#L60PENALTY_TYPES {none: 0, l2: 2, l1: 1, elasticnet: 3}即还可以传入penaltyNone不施加任何正则化。正则化的强度由alpha控制默认0.0001alpha越大正则化越强同时alpha也参与默认learning_rateoptimal时的学习率计算。惩罚项的二维等高线可视化见 examples/linear_model/plot_sgd_penalties.py。2.3 多分类one-versus-allOVASGDClassifier通过组合多个二分类器支持多分类采用one versus allOVA一对多方案对 $K$ 个类别中的每一个学习一个区分该类别与其余 $K-1$ 个类别的二分类器。测试时对每个分类器计算置信度分数即到超平面的带符号距离选择置信度最高的类别。鸢尾花数据集上的 OVA 示例见 examples/linear_model/plot_sgd_iris.py。多分类情况下coef_是形状为(n_classes, n_features)的二维数组第 $i$ 行保存第 $i$ 个类别的 OVA 分类器的权重向量类别按升序索引参见属性classes_intercept_是形状为(n_classes,)的一维数组。原则上由于losslog_loss和lossmodified_huber能够构造概率模型它们更适合 one-vs-all 分类。从源码看OVA 的并行计算还支持n_jobs参数默认None表示 1 个 CPU-1表示使用全部处理器。2.4 类别权重与样本权重SGDClassifier通过拟合参数class_weight和sample_weight分别支持加权类别与加权样本class_weight可以是{类别标签: 权重}字典或balanced。balanced模式会根据y自动按类频率的反比调整权重公式为n_samples / (n_classes * np.bincount(y))sample_weight形状为(n_samples,)的样本级权重在fit/partial_fit中传入。带权重样本的示例见 examples/linear_model/plot_sgd_weighted_samples.py不平衡数据上的 OVA 注意事项见 examples/svm/plot_separating_hyperplane_unbalanced.py。2.5 平均 SGDAveraged SGD, ASGDSGDClassifier支持平均 SGDASGD通过设置averageTrue启用。ASGD 执行与普通 SGD 相同的更新但coef_属性不再取最后一次更新后的系数而是取所有更新中系数的平均值intercept_同理。使用 ASGD 时学习率可以更大甚至保持恒定在某些数据集上可以加快训练速度。源码中还支持average取大于 1 的整数当看到的样本总数达到该值时才开始平均例如average10表示看到 10 个样本后开始平均。对于逻辑损失分类另一种带平均策略的 SGD 变体是Stochastic Average GradientSAG算法可作为 LogisticRegression 的 solver 使用。3. 回归SGDRegressorSGDRegressor实现朴素随机梯度下降流程支持不同的损失函数与惩罚项来拟合线性回归模型。它非常适合训练样本数很大 10,000的回归问题对于其他问题官方建议使用 Ridge、Lasso 或 ElasticNet。损失函数通过loss参数设置SGDRegressor支持见源码 sklearn/linear_model/_stochastic_gradient.py#L1431losssquared_error普通最小二乘Ordinary Least Squareslosshuber用于鲁棒回归的 Huber 损失lossepsilon_insensitive线性支持向量回归SVR。在 1.5 版本之前最小二乘损失的名称是squared_loss旧名称仍可用但建议使用squared_error。Huber 损失与 epsilon-insensitive 损失可用于鲁棒回归。不敏感区域的宽度需要通过epsilon参数指定默认0.1该参数依赖于目标变量的尺度。源码中loss_functions字典如下sklearn/linear_model/_stochastic_gradient.py#L1431loss_functions { squared_error: (CyHalfSquaredError,), huber: (CyHuberLoss, DEFAULT_EPSILON), epsilon_insensitive: (EpsilonInsensitive, DEFAULT_EPSILON), squared_epsilon_insensitive: (SquaredEpsilonInsensitive, DEFAULT_EPSILON), }penalty参数决定使用的正则化含义与第 2.2 节分类部分相同。SGDRegressor同样支持平均 SGDaverageTrue。对于平方损失 $L_2$ 惩罚的回归另一种带平均策略的 SGD 变体是SAG算法可作为 Ridge 的 solver 使用。回归示例见 examples/applications/plot_prediction_latency.py。4. 在线 One-Class SVMSGDOneClassSVMSGDOneClassSVM使用随机梯度下降实现在线online线性版本的一类 SVM。结合核近似技术如sklearn.kernel_approximation.Nystroem它可以近似求解 sklearn.svm.OneClassSVM 所实现的核化 One-Class SVM 的解且复杂度关于样本数线性而核化 One-Class SVM 的复杂度至少是样本数的二次方。因此SGDOneClassSVM非常适合训练样本数很大 10,000的数据集此时 SGD 变体可以快若干个数量级。对比示例见 examples/linear_model/plot_sgdocsvm_vs_ocsvm.py。SGDOneClassSVM的关键参数nu默认0.5One-Class SVM 的 nu 参数是训练误差比例的上界同时也是支持向量比例的下界取值区间为(0, 1]fit_intercept默认True、max_iter默认1000、tol默认1e-3、shuffle默认True、warm_start、average等与其余 SGD 估计器一致与SGDClassifier/SGDRegressor相同SGDOneClassSVM也支持平均 SGDaverageTrue。4.1 数学细节其实现基于随机梯度下降。One-Class SVM 的原始优化问题为$$ \min_{w, \rho, \xi} ; \frac{1}{2}\Vert w \Vert^2 - \rho \frac{1}{\nu n} \sum_{i1}^n \xi_i \quad \text{s.t.} \quad \langle w, x_i \rangle \geq \rho - \xi_i, ;; \xi_i \geq 0, ; 1 \leq i \leq n $$其中 $\nu \in (0, 1]$ 是用户指定参数控制异常值与支持向量的比例。消去松弛变量 $\xi_i$ 后问题等价于$$ \min_{w, \rho} ; \frac{1}{2}\Vert w \Vert^2 - \rho \frac{1}{\nu n} \sum_{i1}^n \max(0, \rho - \langle w, x_i \rangle) $$乘以常数 $\nu$ 并引入截距 $b 1 - \rho$得到如下等价优化问题$$ \min_{w, b} ; \frac{\nu}{2}\Vert w \Vert^2 b\nu \frac{1}{n} \sum_{i1}^n \max(0, 1 - (\langle w, x_i \rangle b)) $$这与第 9 节数学公式中研究的优化问题形式相似令 $y_i 1$、$\alpha \nu$$L$ 为 hinge 损失、$R$ 为 $L_2$ 范数只需在优化循环中额外加入 $b\nu$ 项。5. 稀疏数据支持模块内置了对scipy.sparse所支持任意格式矩阵的稀疏数据支持。为获得最高效率请使用CSR 矩阵格式scipy.sparse.csr_matrix。注意由于截距采用了缩小的学习率见第 10 节实现细节稀疏实现与稠密实现会产生略微不同的结果。稀疏文本分类的实战示例见 examples/text/plot_document_classification_20newsgroups.py。从源码看validate_data(..., accept_sparsecsr, ...)表明 CSR 是fit/partial_fit接受的稀疏输入格式sklearn/linear_model/_stochastic_gradient.py#L1505。6. 在线/流式学习partial_fit由于 SGD 天然是增量更新的三个估计器都通过partial_fit方法支持小批量在线 / out-of-core学习。partial_fit内部使用max_iter 1即对给定样本执行一轮 SGD它不保证一次调用就能达到代价函数最小值收敛与早停需由用户自行处理。对于SGDClassifierpartial_fit首次调用时必须传入classes参数以声明所有可能类别。在线学习中learning_rate必须由用户直接控制例如选择learning_rateconstant并设置合适的eta0。源码中_more_validate_params明确规定early_stoppingTrue与partial_fit不能同时使用sklearn/linear_model/_stochastic_gradient.py#L151。7. 停止准则Stopping CriterionSGDClassifier与SGDRegressor提供两种在达到一定收敛水平时停止算法的准则early_stoppingTrue将输入数据划分为训练集与验证集。模型在训练集上拟合停止准则基于验证集上由score方法计算的预测得分。验证集的大小由validation_fraction参数控制默认0.1。注意此时score是验证集上的得分——SGDClassifier默认用准确率SGDRegressor默认用 $R^2$ 分数early_stoppingFalse模型在全部输入数据上拟合停止准则基于训练数据上计算的目标函数损失。两种情况下准则每个 epoch 评估一次当准则连续n_iter_no_change次默认 5没有改善时算法停止。改善用绝对容差tol默认1e-3评估且无论何种情况算法都会在达到最大迭代次数max_iter默认 1000后停止。如果达到max_iter仍未收敛会发出ConvergenceWarning警告提示Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.sklearn/linear_model/_stochastic_gradient.py#L1615。早停效果示例见 examples/linear_model/plot_sgd_early_stopping.py。8. 复杂度分析SGD 的主要优势在于其效率训练成本基本随训练样本数线性增长。若 $X$ 是大小为 $n \times p$ 的矩阵$n$ 个样本、$p$ 个特征训练代价为 $O(k n \bar p)$其中 $k$ 是迭代次数epochs$\bar p$ 是每个样本的平均非零属性数。近期理论结果表明达到一定优化精度所需的运行时间并不会随训练集规模的增大而增加。9. 数学公式Mathematical formulation给定训练样本集 ${(x_1, y_1), \ldots, (x_n, y_n)}$其中 $x_i \in \mathbf{R}^m$$y_i \in \mathbf{R}$分类时 $y_i \in {-1, 1}$目标是学习一个线性打分函数 $f(x) w^T x b$参数为 $w \in \mathbf{R}^m$ 与截距 $b \in \mathbf{R}$。二分类预测只需看 $f(x)$ 的符号。为求得模型参数最小化如下正则化训练误差$$ E(w,b) \frac{1}{n}\sum_{i1}^{n} L(y_i, f(x_i)) \alpha R(w) $$其中 $L$ 是度量模型失拟合程度的损失函数$R$ 是惩罚模型复杂度的正则化项penalty$\alpha 0$ 是控制正则化强度的超参数。9.1 损失函数详解$L$ 的不同选择对应不同的分类器或回归器Hinge软间隔等价于支持向量分类。$L(y_i, f(x_i)) \max(0, 1 - y_i f(x_i))$Perceptron$L(y_i, f(x_i)) \max(0, - y_i f(x_i))$Modified Huber当 $y_i f(x_i) -1$ 时 $L(y_i, f(x_i)) \max(0, 1 - y_i f(x_i))^2$否则 $L(y_i, f(x_i)) -4 y_i f(x_i)$Log Loss等价于逻辑回归。$L(y_i, f(x_i)) \log(1 \exp (-y_i f(x_i)))$Squared Error线性回归Ridge 或 Lasso取决于 $R$。$L(y_i, f(x_i)) \frac{1}{2}(y_i - f(x_i))^2$Huber对离群点的敏感度低于最小二乘。当 $|y_i - f(x_i)| \leq \varepsilon$ 时等价于最小二乘否则 $L(y_i, f(x_i)) \varepsilon |y_i - f(x_i)| - \frac{1}{2} \varepsilon^2$Epsilon-Insensitive软间隔等价于支持向量回归。$L(y_i, f(x_i)) \max(0, |y_i - f(x_i)| - \varepsilon)$。以上所有损失函数都可以视为误分类错误Zero-one loss的一个上界可视化对比见 examples/linear_model/plot_sgd_loss_functions.py。9.2 正则化项详解常用的正则化项 $R$即penalty参数$L_2$ 范数$R(w) : \frac{1}{2} \sum_{j1}^{m} w_j^2 \frac{1}{2} \Vert w \Vert_2^2$$L_1$ 范数$R(w) : \sum_{j1}^{m} |w_j|$产生稀疏解Elastic Net$R(w) : \frac{\rho}{2} \sum_{j1}^{n} w_j^2 (1-\rho) \sum_{j1}^{m} |w_j|$是 $L_2$ 与 $L_1$ 的凸组合其中 $\rho$ 由1 - l1_ratio给出。不同正则化项在二维参数空间$m2$、$R(w)1$中的等高线可视化见 examples/linear_model/plot_sgd_penalties.py。9.3 SGD 更新规则随机梯度下降是求解无约束优化问题的优化方法。与批量梯度下降不同SGD 每次只考虑单个训练样本来近似 $E(w,b)$ 的真实梯度。SGDClassifier实现一阶 SGD 学习流程算法遍历训练样本对每个样本按如下更新规则更新模型参数$$ w \leftarrow w - \eta \left[\alpha \frac{\partial R(w)}{\partial w} \frac{\partial L(w^T x_i b, y_i)}{\partial w}\right] $$其中 $\eta$ 是学习率控制参数空间中的步长。截距 $b$ 以类似方式更新但不施加正则化对于稀疏矩阵还带有额外的衰减详见第 10 节实现细节。9.4 学习率调度学习率 $\eta$ 可以是常数也可以逐步衰减。分类问题默认使用learning_rateoptimal$$ \eta^{(t)} \frac{1}{\alpha (t_0 t)} $$其中 $t$ 是时间步总共n_samples * n_iter个时间步$t_0$ 由 Léon Bottou 提出的启发式方法确定使期望的初始更新与权重的期望规模可比这假设训练样本的范数约为 1。t_0的具体定义见源码BaseSGD中的_init_t方法sklearn/linear_model/_stochastic_gradient.py。需要特别注意的是learning_rateoptimal会用到alpha因此当alpha0时fit会直接报错源码 sklearn/linear_model/_stochastic_gradient.py#L153 中有明确校验。回归问题默认使用逆缩放learning_rateinvscaling$$ \eta^{(t)} \frac{\eta_0}{t^{power_t}} $$其中 $\eta_0$ 与 $power_t$ 是用户通过eta0默认0.01与power_t回归默认0.25分类默认0.5选择的超参数。其他调度方式learning_rateconstant恒定学习率用eta0指定取值即 $\eta \eta_0$learning_rateadaptive自适应衰减学习率用eta0指定起始学习率。当达到停止准则时学习率除以 5算法不停止当学习率低于1e-6时算法才停止learning_ratepa1/pa21.8 版本新增被动攻击算法Passive-Aggressive的学习率。仅与losshinge分类或lossepsilon_insensitive回归搭配此时eta0表示被动攻击算法的激进参数 CPA-I 中它是最大步长PA-II 中它正则化步长eta0越小正则化越强。一般经验是数据噪声较大时eta0应取小值。源码中的学习率类型映射为sklearn/linear_model/_stochastic_gradient.py#L51LEARNING_RATE_TYPES { constant: 1, optimal: 2, invscaling: 3, adaptive: 4, pa1: 5, pa2: 6, }9.5 模型参数与 ASGD 平均模型参数可通过coef_与intercept_属性访问coef_保存权重 $w$intercept_保存 $b$。使用平均 SGDaverage参数时coef_取所有更新的平均权重$$ \text{coef_} \frac{1}{T} \sum_{t0}^{T-1} w^{(t)} $$其中 $T$ 是更新总次数可通过t_属性获得t_ n_iter_ * n_samples 1。10. 实现细节Implementation detailsSGD 的实现受到 Stochastic Gradient SVM 的启发。与 SvmSGD 类似权重向量表示为标量与向量的乘积这允许在 $L_2$ 正则化情况下进行高效的权重更新稀疏输入的截距对于稀疏输入 $X$截距以较小的学习率更新乘以 0.01以补偿其被更频繁更新的事实样本顺序与学习率训练样本按顺序取出每观察一个样本就降低学习率学习率调度采用 Pegasos 论文中的方案见_sgd_fast.pyx.tp中_plain_sgd的实现多分类使用 one-versus-all 方法$L_1$ / Elastic Net 正则化采用截断梯度truncated gradient算法实现语言核心代码用 Cython 编写sklearn/linear_model/_sgd_fast.pyx.tp支持 float32 / float64 两种精度_plain_sgd32/_plain_sgd64。这些细节解释了第 5 节中稀疏实现与稠密实现结果略有不同的原因。11. 实用技巧Tips on Practical Use特征缩放必不可少SGD 对特征缩放敏感强烈建议先缩放数据。例如把输入向量 $X$ 的每个属性缩放到 $[0,1]$ 或 $[-1,1]$或标准化为均值 0、方差 1。注意必须对测试向量应用相同的缩放才能得到有意义的结果可用StandardScaler轻松完成from sklearn.preprocessing import StandardScaler scaler StandardScaler() scaler.fit(X_train) # Dont cheat - fit only on training data X_train scaler.transform(X_train) X_test scaler.transform(X_test) # apply same transformation to test data # Or better yet: use a pipeline! from sklearn.pipeline import make_pipeline est make_pipeline(StandardScaler(), SGDClassifier()) est.fit(X_train) est.predict(X_test)如果属性本身具有内在尺度例如词频或指示特征则无需缩放。使用默认学习率调度时数据最好为零均值、单位方差源码类文档中同样强调了这一点。正则化项 $\alpha$ 的自动搜索寻找合理的 $\alpha$ 最好用自动超参数搜索例如 GridSearchCV 或 RandomizedSearchCV搜索范围通常为10.0**-np.arange(1,7)即 $10^{-6}$ 到 $10^{-1}$。迭代次数经验法则经验上 SGD 在观察到约 $10^6$ 个训练样本后收敛。因此迭代次数的合理初值是max_iter np.ceil(10**6 / n)其中n是训练集大小。PCA 特征上的使用若将 SGD 应用于 PCA 提取的特征经验上最好将特征值乘以某个常数 $c$使训练数据的平均 $L_2$ 范数等于 1。ASGD 的调参倾向经验表明平均 SGDASGD在特征数较多、eta0较大时效果最好。12. 参考资源本模块全部估计器与文档入口doc/modules/sgd.rst核心源码sklearn/linear_model/_stochastic_gradient.pyCython 数值核心sklearn/linear_model/_sgd_fast.pyx.tp关键示例examples/linear_model/plot_sgd_separating_hyperplane.pyhinge 损失线性 SVM 决策边界examples/linear_model/plot_sgd_iris.pyOVA 多分类examples/linear_model/plot_sgd_weighted_samples.py样本权重examples/linear_model/plot_sgd_early_stopping.py早停examples/linear_model/plot_sgd_loss_functions.py损失函数对比examples/linear_model/plot_sgd_penalties.py惩罚项对比examples/linear_model/plot_sgdocsvm_vs_ocsvm.pySGDOneClassSVM 与核化 OneClassSVM 对比examples/text/plot_document_classification_20newsgroups.py稀疏文本分类examples/applications/plot_prediction_latency.pySGDRegressor 回归参考文献Efficient BackPropY. LeCun, L. Bottou, G. Orr, K. MüllerIn Neural Networks: Tricks of the Trade, 1998。Stochastic Gradient DescentL. BottouWebsite, 2010。Pegasos: Primal estimated sub-gradient solver for svmS. Shalev-Shwartz, Y. Singer, N. SrebroIn Proceedings of ICML 07。Stochastic gradient descent training for l1-regularized log-linear models with cumulative penaltyY. Tsuruoka, J. Tsujii, S. AnaniadouIn Proceedings of the AFNLP/ACL09。Towards Optimal One Pass Large Scale Learning with Averaged Stochastic Gradient DescentXu, Wei2011。Regularization and variable selection via the elastic netH. Zou, T. HastieJournal of the Royal Statistical Society Series B, 67(2), 301-320。Solving large scale linear prediction problems using stochastic gradient descent algorithmsT. ZhangIn Proceedings of ICML 04。【免费下载链接】scikit-learnscikit-learn: machine learning in Python项目地址: https://gitcode.com/gh_mirrors/sc/scikit-learn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →