В моем предыдущем посте об одномерной линейной регрессии я описал, как машинное обучение может быть очень полезным для прогнозирования данных на основе существующих. Чтобы продемонстрировать это, я использовал набор данных о жилье, в котором была только одна переменная признаков. Позвольте мне добавить еще один блок к головоломке, на этот раз, вместо одной переменной функции, позвольте мне иметь 2 переменные функции: размер дома, а также количество спален. Я использую тот же набор данных (скачать отсюда).

Теперь, когда у меня есть две функции, я не могу использовать одномерную линейную регрессию, верно?

Здесь я представляю вам еще один столп машинного обучения: многомерную линейную регрессию.

Что такое многомерная линейная регрессия?

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

Как узнать, можно ли использовать многомерную линейную регрессию?

Как я уже сказал, каждая переменная признака может казаться независимо линейно связанной с меткой.

Позвольте мне продемонстрировать это на примере, который я использовал все это время.

Во-первых, давайте посмотрим на наши данные, используя следующий код:

Результаты:

Первые два столбца — это функции, а последний столбец — это метка.

График «Стоимость в 1000 долларов» и «Площадь домов (квадратные футы)» из предыдущего поста:

Теперь построим график «Количество спален» и «Средняя стоимость»:

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

Функция гипотезы

Что такое функция гипотезы, я обсуждал в своем предыдущем посте.

Здесь функция гипотезы:

В общем, функция гипотезы для задачи линейной регрессии с nпризнаками определяется следующим образом:

Итак, расширяя терминологию, которую я определил для одномерной линейной регрессии, теперь i-е обучающее значение j-й переменной признака будет обозначаться как:

В нашем примере 1≤j≤2 и 1≤i≤47.

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

Но обратите внимание, что сама функция гипотезы изменилась.

Выполнение

Следующая реализация Python создана с нуля только для того, чтобы проиллюстрировать идею. Современные библиотеки делают эту работу всего за несколько строк.

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

Что дальше

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

А пока счастливого машинного обучения :).