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

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

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

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

Благодарность!

1 ответ

Решение

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

Z = ²â € + ²â ‚X; где ²â ‚AND X - матрицы

hΘ (x) = сигмоид (Z)

т.е. hΘ (x) = 1/(1 + e^-(²â ‚€ + ²â‚ X)

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

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

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

Другие вопросы по тегам