随机梯度下降分类器和回归器

随机梯度下降分类器并不是一个独立的算法,而是一系列利用随机梯度下降求解参数的算法的集合。

SGDClassifier(分类):

from sklearn.linear_model import SGDClassifier

clf = SGDClassifier(loss="hinge", penalty="l2")

 

loss function(损失函数):

可以通过 loss 参数来设置。SGDClassifier 支持以下的 loss functions(损失函数):

1)loss="hinge"                         (soft-margin) linear Support Vector Machine ((软-间隔)线性支持向量机),

2)loss="modified_huber"          smoothed hinge loss (平滑的 hinge 损失),

3)loss="log"                             logistic regression (logistic 回归),

 

惩罚方法:

惩罚方法可以通过 penalty 参数来设定。 SGD 支持以下 penalties(惩罚):

penalty="l2":                L2 norm penalty on coef_.

penalty="l1":                L1 norm penalty on coef_.

penalty="elasticnet":     Convex combination of L2 and L1(L2 型和 L1 型的凸组合); (1 - l1_ratio) * L2 + l1_ratio * L1.

 

支持多分类以及样本非均衡问题

SGDRegressor

损失函数:

具体的损失函数可以通过 loss 参数设置。 SGDRegressor 支持以下的损失函数:

loss="squared_loss":            Ordinary least squares(普通最小二乘法),

loss="huber":                      Huber loss for robust regression(Huber回归),

loss="epsilon_insensitive":   linear Support Vector Regression(线性支持向量回归).

使用小贴士

1、强烈建议缩放数据 :

将输入向量 X 上的每个特征缩放到 [0,1] 或 [- 1,+1], 或将其标准化,使其均值为 0,方差为 1。

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

scaler.fit(X_train)

假如你的 attributes (属性)有一个固有尺度(例如 word frequencies (词频)或 indicator features(指标特征))就不需要缩放。

 

2、最好使用 GridSearchCV 找到一个合理的 regularization term (正则化项),它的范围通常在 10.0**-np.arange(1,7)

 

3、经验表明,SGD 在处理约 10^6 训练样本后基本收敛。因此,对于迭代次数第一个合理的猜想是 n_iter = np.ceil(10**6 / n),其中 n 是训练集的大小。

 

4、我们发现,当特征很多或 eta0 很大时, ASGD(平均随机梯度下降) 效果更好。

转载于:https://www.cnblogs.com/yongfuxue/p/9971836.html

你可能感兴趣的:(随机梯度下降分类器和回归器)