Привет, ребята, в чем дело, вот и я на следующем этапе моей серии руководств, в последней части мы обработали линейную модель оптимизации машинного обучения с приличным градиентом, у нас была независимая переменная x и зависимая переменная y, и мы использовали формулу

y= mx +c

в качестве нашего уравнения, чтобы найти зависимую переменную из значений x для m и c, нам пришлось использовать градиент приличный, чтобы найти это, что было итеративным процессом нахождения значения, которое наша функция ошибки или стоимости является наименьшим.

Посмотрите это руководство здесь

То, что мы узнали, было весьма полезно, но только для небольших целей, когда многие факторы не учитывались, например, в сценарии, в котором мы должны были прогнозировать цену, превышающую размер, возможно, у нас был столбец с количеством окон, близостью к клубам или насколько хороши ваши соседи, мы можем назвать это многопараметрической проблемой.

Итак, мы меняем нашу модель на

y’=x⁰m⁰ + x¹m¹ +x²m² + x³m³ +……………….

Обратите внимание на то, что приближение к власти на самом деле является позициями.

Итак, у нас есть таблица с 4 столбцами, 3 из них - независимые переменные, а 4-я - зависимая переменная.

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

Давайте начнем с нашей формулы, чтобы найти Y

y = xm’

y = независимая переменная для строки, например, строка 1 (1), которая является матрицей 1 * 1

x = зависимые переменные для строки, например, строка 1 (12.4, 1.11, 1.9) или (1 * n + 1) матрица

m ’= наш предполагаемый коэффициент, вроде нашего m (градиент), который на самом деле является (n + 1 * 1) матрицей

мы знаем наш x и ищем m 'нам нужна формула

m’ =(X^T * X)X^T Y

X = массив входов (m * n + 1)

X ^ T = транспонировать X (если вы не знаете, как транспонировать матрицу, я предлагаю вам прочитать это)

Y = выход, который мы пытаемся предсказать (m * 1) матрица

К, я должен признать, что последняя часть была довольно сложной, и я понял это, поэтому я собираюсь пройти несколько пошаговых математических расчетов и посмотрим, как это нам поможет.

Ладно

Итак, как и на нашем изображении до того, как у нас есть набор данных из 4 столбцов и 6 строк, это здорово, не так ли? достаточно просто, когда только 3 из этих столбцов являются нашими входными данными и 1 выводится, поэтому наш X представляет собой массив (6 * 3), помните об этом измерении, которое нам понадобится,

Итак, мы получили эту часть, но если вы помните мой формальный урок, вы помните, что c - отправная точка, а m - градиент уклона.

y=mx + cx⁰

теперь посмотри на нашу новую формулу

y’=x⁰m⁰ + x¹m¹ +x²m²

с x⁰ всегда равным 1 (его 1, поэтому он не повлияет на m⁰, который обычно является нашей отправной точкой) сладкий, поэтому теперь наш массив x будет иметь эти значения

Обратите внимание, что теперь каждая строка имеет 1, это все еще немного шатко, позвольте мне посмотреть, как я могу помочь исправить это

k

представьте, что мы взяли последний минимум (1,11,5,1), это на самом деле массив 1 * 4, теперь давайте предположим, что мы нашли m ', который будет содержать массив (4 * 1), который при умножении друг на друга дает 1 * 1 массив, поэтому представьте, что если бы наше первое значение в x не было 1, это как бы повлияло на значение нашего первого массива m

Надеюсь, вы получите это

Итак, давайте перейдем к матричной математике

Если вы не знакомы с умножением матриц, то я предлагаю вам попробовать это

так что пойдем шаг за шагом

(X^T*X)

(4 * 6) умноженное на (6 * 4) = (4 * 4) массив также

(X^T*X)^-1

мы инвертируем нашу матрицу, если вы не знаете, что означает инверсия матрицы, проверьте прочь

это все равно даст нам следующую часть массива (4 * 4)

X^T*Y

X ^ T - массив (4 * 6)

Y - массив (6 * 1)

поэтому (4 * 6) умноженное на (6 * 1) = (4 * 1) матрицу

наконец собрал их всех вместе

(X^T*X)^-1(X^T*Y)

так что двигаясь дальше, мы остаемся с

(4 * 4) умноженное на (4 * 1)

это дает нам матрицу (4 * 1), которая, умноженная на строку x, даст нам значение y.

Это всего лишь теоретическая часть этой части, я счел необходимым показать вам эту часть, поскольку основная цель этой серии руководств - помочь вам понять основные вещи в машинном обучении и не утонуть полностью в библиотеках, ну, ча-ча, до следующего раз я покажу вам код в моем следующем уроке.