Logistic回帰(ランダム勾配上昇)


勾配上昇最適化アルゴリズムはデータセットを更新するたびにデータセット全体を遍歴する必要があり,計算が複雑であるため,ここではランダム勾配上昇アルゴリズムも回帰係数を求めることができ,このアルゴリズムは一度に1つのサンプル点だけで回帰係数を更新する.
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はいずれもベクトルであり,ここではすべて数値であり,ここでは行列変換過程はない.