SGDClassifer
简单的整理了一下,后面会有补充,欢迎指正~
一 原理
我们都知道随机梯度下降是一个最优化算法,在很多算法中用它来找到最优参数。而随机梯度下降分类器就是那些使用了该方法来求解的线性分类器的集合,其中包括SVM, LR等。
二 实现
-
sklearn
from sklearn.linear_model import SGDClassifier clf = SGDClassifier(loss="hinge", penalty="l2") clf.fit(X, y) clf.predict([[2., 1.]])
-
参数
loss:损失函数,默认为 “hinge”–软间隔SVM,"log"为逻辑回归,"modified_huber"为平滑的 hinge 代价函数,
penalty:惩罚项,默认为 L2,可选有 l1、elasticnet
alpha:惩罚项的系数,默认为0.0001
max_iter:最大迭代次数
learning_rate:学习率 -
属性
SGD 拟合的是一个线性模型,因此属性包括系数和截距。
系数:coef_
截距:intercept_ -
方法
predict_proba():当loss=“log"或"modified_huber” 时,该函数可以输出每个样本属于每个类别的概率。
三 优缺点
优点:
- 效率高。易于实施(有大量调整代码的余地)。
- 适用于大规模和稀疏问题上,
缺点:
- 有许多超参数。
- 对数据的范围很敏感,需要对数据进行缩放/标准化
引用文章链接:
sklearn文档 — 1.5. 随机梯度下降:https://www.jianshu.com/p/28a68bb4a45a