由於梯度上升優化算法在每次更新數據集時都需要遍歷整個數據集,計算複雜都較高,這裏有一個隨機梯度上升算法也可以求得迴歸係數,這種算法一次只用一個樣本點來更新迴歸係數。
def stocGradAscent0(dataMatrix, classLabels):
m,n = shape(dataMatrix)
alpha = 0.01
weights = ones(n) #initialize to all ones
for i in range(m):
h = sigmoid(sum(dataMatrix[i]*weights))
error = classLabels[i] - h
weights = weights + alpha * error * dataMatrix[i]
return weights
這個算法與梯度上升優化算法很相似,但是也有些區別,後者h和error都是向量,這裏都是數值,這裏沒有矩陣轉換過程。