регрессия с алгоритмом стохастического градиентного спуска

Я изучаю регрессию с помощью книги «Машинное обучение в действии», и я увидел источник, подобный приведенному ниже:

def stocGradAscent0(dataMatrix, classLabels):
    m, n = np.shape(dataMatrix)
    alpha = 0.01
    weights = np.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

Вы можете догадаться, что означает этот код. Но я этого не понимал. Я читал книгу несколько раз и искал похожие материалы, такие как вики или Google, где экспоненциальная функция используется для получения весов для минимальных различий. И почему мы получаем правильный вес, используя экспоненциальную функцию с суммой X * весов? Это было бы вроде OLS. В любом случае мы получим результат, как показано ниже:  введите описание изображения здесь

Спасибо!


person semenbari    schedule 26.12.2019    source источник


Ответы (1)


Это просто основы линейной регрессии. В цикле for он пытается вычислить функцию ошибок

Z = β₀ + β₁X; где β₁ AND X - матрицы

hΘ (x) = сигмовидная (Z)

i.e. hΘ(x) = 1/(1 + e^-(β₀ + β₁X)

затем обновите веса. обычно лучше дать ему большое число для итераций в цикле for, например 1000, м, я думаю, это будет мало.

Я хочу объяснить больше, но не могу объяснить лучше, чем этот чувак, здесь

Удачного обучения !!

person sadakmed    schedule 26.12.2019