В моем предыдущем посте об одномерной линейной регрессии я описал, как машинное обучение может быть очень полезным для прогнозирования данных на основе существующих. Чтобы продемонстрировать это, я использовал набор данных о жилье, в котором была только одна переменная признаков. Позвольте мне добавить еще один блок к головоломке, на этот раз, вместо одной переменной функции, позвольте мне иметь 2 переменные функции: размер дома, а также количество спален. Я использую тот же набор данных (скачать отсюда).
Теперь, когда у меня есть две функции, я не могу использовать одномерную линейную регрессию, верно?
Здесь я представляю вам еще один столп машинного обучения: многомерную линейную регрессию.
Что такое многомерная линейная регрессия?
Идея линейной регрессии в целом заключается в том, что каждая функция линейно связана с меткой. Если есть один признак, мы используем одномерную линейную регрессию, а когда признаков несколько, мы распространяем идею одномерной линейной регрессии на каждую переменную признака. Затем мы называем это многомерной линейной регрессией, вот и все.
Как узнать, можно ли использовать многомерную линейную регрессию?
Как я уже сказал, каждая переменная признака может казаться независимо линейно связанной с меткой.
Позвольте мне продемонстрировать это на примере, который я использовал все это время.
Во-первых, давайте посмотрим на наши данные, используя следующий код:
Результаты:
Первые два столбца — это функции, а последний столбец — это метка.
График «Стоимость в 1000 долларов» и «Площадь домов (квадратные футы)» из предыдущего поста:
Теперь построим график «Количество спален» и «Средняя стоимость»:
Поскольку обе функции линейно связаны с меткой, мы можем продолжить многомерную линейную регрессию.
Функция гипотезы
Что такое функция гипотезы, я обсуждал в своем предыдущем посте.
Здесь функция гипотезы:
В общем, функция гипотезы для задачи линейной регрессии с nпризнаками определяется следующим образом:
Итак, расширяя терминологию, которую я определил для одномерной линейной регрессии, теперь i-е обучающее значение j-й переменной признака будет обозначаться как:
В нашем примере 1≤j≤2 и 1≤i≤47.
См. следующие две диаграммы ниже, чтобы понять изменение функции стоимости.
Но обратите внимание, что сама функция гипотезы изменилась.
Выполнение
Следующая реализация Python создана с нуля только для того, чтобы проиллюстрировать идею. Современные библиотеки делают эту работу всего за несколько строк.
Примечание. В этом коде я сделал кое-что новое, нормализацию. Это в основном масштабирование данных, чтобы упростить сходимость к решению. Помните: всегда нормализуйте, это важнее, чем вы думаете. В моем случае я разделил массив на максимальное значение в массиве, таким образом, все значения были между 0 и 1, и, следовательно, вычисления были простыми.
Что дальше
До сих пор я писал коды машинного обучения с нуля. Это должно было объяснить, как работает машинное обучение. Но не нужно каждый раз заново изобретать колесо. Итак, в моей следующей статье я расскажу об основных библиотеках, которые могут значительно облегчить работу.
А пока счастливого машинного обучения :).