Базовые знания, необходимые для прочтения этой статьи: вывод матриц, немного знаний в области программирования.
Введение
Ранее были введены два алгоритма бинарной классификации - алгоритм персептрона и алгоритм кармана.Эти алгоритмы решают задачу классификации, но на самом деле речь идет скорее о прогнозировании цены жилья в определенном районе и того, сколько банк должен дать определенному Проблема получения в конце конкретного числового результата, такого как количество кредитных карт, сколько акций нужно купить и продать сегодня и т. Д., Этот тип проблемы единообразно называется проблемой регрессии в машинном обучении.
Регрессионный анализ — это метод изучения взаимосвязи между несколькими группами переменных в статистике, а также широко используемый в машинном обучении.Одна из моделей алгоритма представлена ниже —Линейная регрессия1(Линейная регрессия)
2. Введение в модель
Прежде чем представить модель, давайте рассмотрим пример. Предположим, что есть место, где подсчитываются доходы людей с разным стажем работы (симулированные данные), как показано в следующей таблице:
Годы работы | среднемесячная заработная плата |
---|---|
1 год | 1598 юаней |
2 года | 3898 юаней |
3 года | 6220 юаней |
4 года | 7799 юаней |
5 лет | 10510 юаней |
Из данных в таблице выше можно нарисовать картину местного среднемесячного дохода раз в два года:
Из приведенного выше рисунка мы можем интуитивно увидеть, что эти точки кажутся расположенными на прямой или около нее.Согласно нашей интуиции, мы можем судить о том, что местный среднемесячный доход и количество рабочих лет имеют определенную линейную зависимость.Нам нужно только найти прямую, то мы можем предсказать среднемесячный доход местного населения с 6-летней зарплатой. Процесс нахождения такой прямой линии называется линейным регрессионным анализом.
Определение: Имея несколько случайных точек выборки {x1, y1}, {x2, y2}, ..., найдите гиперплоскость (прямую линию для одномерных переменных, плоскость для двух переменных), соответствующую этим точкам выборки. Линейное уравнение выглядит следующим образом:
(1) Общий вид уравнения гиперплоской функции
(2) Как и в случае с алгоритмом персептрона, рассмотрим b как нулевое значение w и сократим уравнение гиперплоской функции до формы скалярного произведения двух векторов w и x.
Одна переменная — это прямая линия, две переменные — это плоскость, а несколько переменных — это гиперплоскость.
3. Шаги алгоритма
Итак, как найти лучшую гиперплоскость из множества точек выборки? В приведенном выше примере рабочих лет и средней месячной заработной платы кажется, что можно провести много прямых линий, соответствующих этим точкам.
По аналогии с двумя приведенными выше прямыми, какая прямая лучше подходит интуитивно? Из пунктира на рисунке должно быть видно, что расстояние между каждой точкой отсчета и линией В дальше, чем линия А, а линия А заведомо лучше, чем линия В, а значит, расстояние между точкой отсчета и линия может быть определена, чтобы судить, хорошо ли подходит или плохо.
Если предположить, что имеется N точек выборки {x, y}, а независимые переменные каждой точки выборки имеют M {x1, x2, ... }, то сумму расстояний между всеми точками выборки и этой гиперплоскостью можно определить как подгонка этой функции стоимости для точек выборки, где w — M-мерный вектор-столбец, x — также M-мерный вектор-столбец, а y — действительное число:
Так как в функции есть абсолютное значение, перепишем ее в виде квадрата, что в геометрии называетсяЕвклидово расстояние2.
Интуитивно нам нужно только минимизировать значение функции стоимости, то есть сумма евклидовых расстояний от всех точек выборки до гиперплоскости является наименьшей, а соответствующий w является весовым коэффициентом этой гиперплоскости.
Метод решения, основанный на минимизации вышеуказанной функции, называется методом наименьших квадратов, так как функция стоимости представляет собойвыпуклая функция4, по свойствам выпуклой функции можно узнать, что ее локальный минимум является глобальным минимумом, и можно непосредственно получить наилучшее аналитическое решение w, где X — матрица N x M, а y — N-мерная вектор-столбец:
4. Доказательство принципа
Функция стоимости линейной регрессии выпукла
Выпуклая функция - это реальная функция f, определенная на выпуклом подмножестве векторного пространства C, и C для любого выпуклого подмножества двух векторов x1, x2 удовлетворяет следующей формуле:
Левая часть неравенства :
Правая часть неравенства :
(1) Умножить левую часть неравенства на 2
(2) Переместите 2 в операцию непрерывной добавления и выписывайте три предмета в скобках
(3) Разложите квадрат на 6 членов
(1) Правая часть неравенства также умножается на 2
(2) Сумма двух последовательных операций сложения записывается как последовательная операция сложения двух сумм
(3) Раскройте квадрат члена в скобках
(4) Переместите элемент, чтобы он соответствовал указанному выше.
Вычтите член в правой части неравенства из члена в левой части неравенства и запишите разницу как Δ. Теперь нам нужно только доказать, что разница между этими двумя членами больше или равна нулю.
(1) Обратите внимание на результаты двух условий, последние три условия одинаковы, и они упрощаются после вычитания.
(2) Вывести половину
(3) Если вы обратите внимание на скобки, вы обнаружите, что это плоский метод.
Разница между правой частью неравенства и левой частью неравенства является непрерывной операцией сложения метода квадратов.В диапазоне действительных чисел окончательный результат должен быть больше или равен нулю, и доказательство завершено.
Аналитическое решение функции стоимости линейной регрессии
(1) Функция стоимости линейной регрессии
(2) Его можно переписать как скалярное произведение двух N-мерных векторов
(3) Используя A для представления первого N-мерного вектора-строки, функция стоимости фактически является транспонированием вектора A, умноженного на вектор A
(1) Определение вектора A
(2) Вектор A можно записать как вычитание двух N-мерных векторов-строк
(3) Первый вектор-строка может транспонировать w и записать его как M-мерный вектор, умноженный на матрицу M x N (обратите внимание, что x изначально является M-мерным вектором-столбцом, а N векторов-столбцов x образуют M x матрица N)
(4) Задайте матрицу N x M X , где N строк соответствуют N выборкам, M столбцов соответствуют M переменным, задайте N-мерный вектор-столбец y , а N измерений соответствуют N выборкам. Можно видеть, что комбинация первой группы векторов-столбцов x является транспонированной матрицей X, а комбинация последней группы действительных чисел y является транспонированной вектор-столбца y.
(1) Функция стоимости записывается в виде скалярного произведения двух векторов
(2) Внесите упрощенную формулу A выше в функцию стоимости.
(3) СогласноТранспонированный характер5, вы можете переписать следующее транспонирование
(4) Разверните умножение
(5) Обратите внимание на два средних задания и обнаружите, что они транспонированы друг в друга, и поскольку окончательные результаты этих двух заданий являются действительными числами, результаты этих двух заданий должны быть равны, поэтому эти два задания можно объединить.
(1) Функция стоимости вычисляет частную производную по w. Согласно формуле вывода вектора, только первый член и второй член связаны с w, а последний член является константой, и поскольку функция стоимости представляет собой выпуклая функция, когда частная производная по W равна 0 вектору, функция стоимости имеет минимальное значение.
(2) Разделите второй член на 2 после сдвига члена и одновременно умножьте обе части на обратную матрицу.Матрица в левой части уравнения и обратная матрица умножаются, чтобы стать единичной матрицей, поэтому только вектор w остается левым.
Таким образом, аналитическое решение w находится.Вы можете видеть, что необходимо найти обратную матрицу матрицы.Когда матрица N x N в скобках нематрица полного ранга6Нет обратной матрицы, когда нет обратной матрицы, и суть ее в том, что естьмультиколлинеарность7(Мультиколлинеарность), в следующем разделе будет представлена мультиколлинеарность в линейной регрессии и способы решения этой проблемы мультиколлинеарности. Часть перед вектором y в следующем уравнении называется псевдообратной матрицей X и может быть получена с помощьюсингулярное разложение8(SVD) Находит псевдообратную матрицу.
Вы можете видеть, что X представляет собой матрицу N x M, а y представляет собой N-мерный вектор-столбец. В приведенном выше примере рабочих лет и средней месячной заработной платы X представляет собой матрицу 5 x 2, y представляет собой 5-мерный вектор-столбец, и, наконец, w можно рассчитать как 2-мерный вектор-столбец, тогда линейное уравнение этого примера у = 2172,5 * х - 512,5.
Геометрическая интерпретация аналитических решений функции стоимости линейной регрессии
Матричная форма линейного уравнения, где y — N-мерный вектор-столбец, X — матрица N x M, а w — M-мерный вектор-столбец:
Давайте сначала посмотрим на рисунок ниже.Серая гиперплоскость S состоит из M черных N-мерных векторов-столбцов X, а красный N-мерный вектор-столбец y представляет собой значение y фактической точки выборки.В примере рабочих лет и среднемесячная заработная плата, х1 = (1 , 1, 1, 1, 1), х2 = (1, 2, 3, 4, 5), у = (1598, 3898, 6220, 7799, 10510). Теперь мы хотим найти y' после линейной комбинации вектора x, чтобы y - y' было наименьшим, что является фиолетовым вектором на рисунке. Как видно из рисунка, когда y — y' — вектор нормали к гиперплоскости, он является кратчайшим, что также эквивалентно тому, что y — y' перпендикулярно каждому вектору x.
геометрическая интерпретация(1) y - y' перпендикулярно каждому вектору x, обратите внимание, что результатом является M-мерный нулевой вектор
(2) Замените линейное уравнение y'
(3) Раскрыть скобки
(4) После сдвига члена можно решить w
Видно, что геометрическая интерпретация согласуется с результатами, полученными путем вывода
Пять, реализация кода
Реализуйте алгоритм линейной регрессии с помощью Python:
def linear(X, y):
"""
线性回归
args:
X - 训练数据集
y - 目标标签值
return:
w - 权重系数
"""
# pinv 函数直接求矩阵的伪逆矩阵
return np.linalg.pinv(X).dot(y)
6. Реализация сторонней библиотеки
scikit-learn9выполнить:
from sklearn.linear_model import LinearRegression
# 初始化线性回归器
lin = LinearRegression(fit_intercept=False)
# 拟合线性模型
lin.fit(X, y)
# 权重系数
w = lin.coef_
Семь, демонстрация анимации
Когда линейное уравнение принимает разные весовые коэффициенты, соответствующая функция стоимости изменяется, мы можем видеть, что функция стоимости сначала уменьшается до минимального значения, а затем постепенно увеличивается.
Восемь, интеллект-карта
9. Ссылки
- En. Wikipedia.org/wiki/linear…
- En. Wikipedia.org/wiki/Euclid…
- En. Wikipedia.org/wiki/arg_horse…
- En. Wikipedia.org/wiki/convex…
- En. Wikipedia.org/wiki/trans П…
- En. Wikipedia.org/wiki/rank_(…
- En. Wikipedia.org/wiki/multi C…
- En. Wikipedia.org/wiki/sin призывает…
- SCI kit-learn.org/stable/Modu…
Нажмите для полной демонстрацииздесь
Примечание. Эта статья стремится быть точной и легкой для понимания, но поскольку автор также новичок и имеет ограниченный уровень, если в тексте есть ошибки или упущения, я призываю читателей критиковать и исправлять их, оставляя сообщение.
Эта статья была впервые опубликована на -карта ИИ, добро пожаловать, чтобы следовать