- SGD主要应用在大规模稀疏数据问题上。该模块的分类器用mini-batch来做梯度下降可轻松解决:超过 1 0 5 10^5 105的训练样本、超过 1 0 5 10^5 105的features。
- 如果特征数量大到和样本数量差不多,或者特征数量远远大于样本数量,则选用LR或者线性核的SVM;(eg.n=10000,m=10-1000)
- 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;(eg.n=1-1000,m=10-10000)
- 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。
sklearn.linear_model.SGDClassifier(loss='hinge', penalty='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, epsilon=0.1, n_jobs=None, random_state=None, learning_rate='optimal', eta0=0.0, power_t=0.5, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, class_weight=None, warm_start=False, average=False)
-
loss=”hinge”: 线性SVM. (soft-margin)
loss=”modified_huber”: 带平滑的hinge loss.
loss=”log”: logistic回归 -
penalty=”l2”: 对coef_的L2范数罚项
penalty=”l1”: 对coef_的L1范数罚项
penalty=”elasticnet”: L2和L1的convex组合;
( 1 − l 1 r a t i o ) ∗ L 2 + l 1 r a t i o ∗ L 1 (1 - l1_{ratio}) * L2 + l1_{ratio} * L1 (1−l1ratio)∗L2+l1ratio∗L1 -
SGD对于特征归一化feature scaling敏感