Skip to main content
Version: 2.17.1

随机梯度下降多分类

  • 算法介绍

    SGD多分类算法(Stochastic Gradient Descent)是一种用于大规模线性模型和支持向量机(SVM)的优化方法。它使用小批量数据来逼近目标函数,并在每个小批量中迭代地使用梯度下降来更新参数。

  • 使用场景

    适用于大规模数据集和高维数据情况下的分类或回归任务。

  • 优势介绍

  1. 计算量小:与其他机器学习算法相比,SGD使用小批量数据而不是全部数据进行训练,因此计算速度更快,更适合处理大型数据集;
  2. 可调节的学习率:学习率可以随着迭代次数变化而自适应地进行调整,以达到最优解;
  3. 易于实现:由于算法原理较为简单,代码实现也相对容易。
  • 劣势介绍
  1. 对初始值敏感:SGD通常需要一些调整才能成功地使用,这主要涉及到选择合适的超参数和初值条件。如果没有正确的初始值,可能会导致收敛到局部极小值的情况;
  2. 对特征缩放和正则化要求高:SGD需要对特征进行缩放和正则化以获得更好的结果。如果未进行预处理,则可能导致误差增加;
  3. 噪音较大:由于SGD使用小批量数据进行训练,因此每次迭代中都存在随机的噪声干扰,可能会影响梯度计算导致精度下降;
  4. 难以找到最优解:与传统的梯度下降相比,SGD在函数值近似平稳时难以找到全局最优解。这需要一些技巧和经验来适当调整超参数和学习率等变量,以获得更好的结果。
  • 参数介绍

    仅支持通过可视化方式,配置读取该组件参数,参数详情如下表所示:

页签参数参数名称是否必选参数描述默认值
数据源表名inputTable数据表
默认参数选择特征标签列labelColName输入表中选择标签列名类型。
模型参数损失函数loss损失函数的类型。默认值为hinge。包含hinge,log,modified_huber,squared_hinge,perceptron。hinge
模型参数惩罚项penalty惩罚项。默认值为l2。包含l1,l2,elasticnet。l2
模型参数是否估计截距fit_intercept布尔值,是否估计截距,如果为假,认为数据已经中心化。True
调优参数优化算法的迭代次数max_iter整数,可选的。迭代的最大次数,如果参数tol不是空,则默认值为1000。1000
调优参数训练结束误差边界tol浮点数。训练结束的误差边界。当previous_loss - cur_loss < tol时,训练结束。0.001
调优参数是否打乱数据顺序shuffle布尔值,可选的。每轮迭代后是否打乱数据的顺序,默认为True。True
调优参数学习率策略learning_rate学习速率的策略包括constant、optimal、invscaling。optimal
调优参数用于标示分类模型中各种类型的权重class_weightbalanced,类库根据训练样本量来计算权重。某种类型的样本量越多,则权重越低。也支持自定义。balanced
  • 推荐参数值
  1. loss 损失函数,默认值为"hinge"。对于二元分类问题,建议选择"hinge"损失;对于多类分类问题,建议使用"log"或"modified_huber"损失。
  2. penalty 正则化项类型,默认为"l2",可以选择惩罚矩阵W中各特征权重的L1正则化项("l1"),L2正则化项("l2")或弹性网络正则化项("elasticnet"),以控制模型复杂度,并可以改善模型泛化能力。
  3. learning_rate 学习率类型,默认为 "optimal"。学习率决定梯度下降策略更新的步骤大小。常见的有constant、optimal、invscaling三种类型,分别表示恒定学习率、自适应学习率和随时间增加的学习率。
  4. max_iter 最大迭代次数,默认值1000。可以将该参数的值调整为较大的值,以确保算法收敛。
  5. shuffle 是否打乱训练数据的顺序,默认为True。可以通过随机搜索网格来获得更好的性能,调整这些参数组合以及基本训练配置属性。
  • 调参建议
  1. 由于SGDClassifier中使用随机梯度下降算法进行参数估计,因此对于特征值相差较大的数据集,需要对其进行标准化处理(scaling)。一般来说,可以使用preprocessing.StandardScaler()或者preprocessing.MinMaxScaler()等函数完成数据缩放。
  2. 学习率(learning rate)的选择:在SGDClassifier中,我们通常考虑使用"constant"或者"adaptative"作为学习率类型,并通过设置"eta0"和"learning_rate_init"等参数来指定学习率的大小。
  3. 数据量的选择:SGD算法通常在大数据集上表现良好,在小数据集上容易过拟合。因此,在训练模型时,应注意避免使用太小的数据集。