1. 程式人生 > >隨機梯度下降分類器和回歸器

隨機梯度下降分類器和回歸器

gis arc 指標 from alt cal gin del 設置

隨機梯度下降分類器並不是一個獨立的算法,而是一系列利用隨機梯度下降求解參數的算法的集合。

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(平均隨機梯度下降) 效果更好。

隨機梯度下降分類器和回歸器