梯度下降SGD

2021-09-02 17:49:31 字數 1644 閱讀 6780

當資料過多時,無法將資料一次性載入到記憶體中,進行模型訓練,

因此可以使用隨機梯度下降回歸器或分類器,作為線性**器

該方法每次只是用乙個觀察點來進行引數優化,因此**使用ridge或lasso回歸到達可比較的結果之前,採用了更多的迭代,但只需要較少的記憶體和時間。

from sklearn.linear_model import sgdregressor

from sklearn.preprocessing import standardscaler

sgd = sgdregressor(loss='squared_loss', penalty='l2', alpha=0.0001, l1_ratio=0.15, n_iter=2000)

#  l1_ratio=0 corresponds to l2 penalty, l1_ratio=1 to l1

# alpha constant that multiplies the regularization term. defaults to 0.0001

scaling = standardscaler()

scaling.fit(polyx)

scaled_x = scaling.transform(polyx)

print ('cv mse: %.3f' % abs(np.mean(cross_val_score(sgd, scaled_x, y, scoring='neg_mean_squared_error', cv=crossvalidation, n_jobs=1))))

均方差均值為13.066

對資料做迭代,展示演算法如何優化引數

from sklearn.metrics import mean_squared_error

from sklearn.cross_validation import train_test_split

x_train, x_test, y_train, y_test = train_test_split(scaled_x, y, test_size=0.20, random_state=2)

#作圖import matplotlib.pyplot as plt

整體的錯誤率是下降的。

SGD 隨機梯度下降法

中心思想 隨機梯度下降法是每次先將大量的訓練集中隨機打亂順序,再取其中固定數量的例項組成mini batch,按照minibatch進行權重和偏差的更新,重複操作直到所有的資料都按minibatch的規格取完了一遍,這時就完成了乙個epoch,然後在按照提前設定好的epoch數量進行重複計算更新。對...

批處理梯度下降BGD與隨機梯度下降SGD

梯度下降 gd 是最小化風險函式 損失函式的一種常用方法,隨機梯度下降和批量梯度下降是兩種迭代求解思路,下面從公式和實現的角度對兩者進行分析,如有哪個方面寫的不對,希望糾正。下面的h x 是要擬合的函式,j theta 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函...

python實現隨機梯度下降 SGD

使用神經網路進行樣本訓練,要實現隨機梯度下降演算法。這裡我根據麥子學院彭亮老師的講解,總結如下,神經網路的結構在另一篇部落格中已經定義 def sgd self,training data,epochs,mini batch size,eta,test data none if test data ...