Линейная алгебра для машинного обучения: решение системы линейных уравнений | by Khuyen Tran
Как алгебра является подчеркнутым механизмом алгоритмов машинного обучения
Давайте начнем с обычного графика в науке о данных: Диаграмма рассеяния
Получена из ChartioГрафик выше представляет корреляцию между диаметром и высотой дерево. Каждая точка является образцом дерева. Наша задача состоит в том, чтобы найти наиболее подходящую линию для предсказания высоты при заданном диаметре.
Как мы можем это сделать? Вот тогда и нужна линейная алгебра.
Получено от Edutin AcademyЛинейная регрессия является примером линейных систем уравнений . Линейная алгебра предназначена для работы с линейными системами уравнений. Вместо того, чтобы работать со скалярами, мы начинаем работать с матрицами и векторами .
Линейная алгебра — это ключ к пониманию математических расчетов и статистики, необходимых для машинного обучения. Если вы сможете понять методы машинного обучения на уровне векторов и матриц, вы улучшите свои интуиция о том, как и когда они работают . Лучшая линейная алгебра поднимет вашу игру по всем направлениям.
А как лучше всего понять линейную алгебру? Реализуйте это. Существует 2 метода решения системы линейных уравнений: прямые методы и итерационные методы. В данной статье мы будем использовать прямые методы, в частности метод Гаусса.
Так как чаще всего мы работаем с данными со многими свойствами (или переменными). Мы сделаем нашу систему линейных уравнений более общей, работая с трехмерными данными.
Давайте создадим пример для приведенного выше графика:
, где коэффициенты x_0, x_1 и x_2 и соответствующие значения 8, 4, 5 являются образцами точек на графике. Уравнения можно разбить на матрицы A, x и b
, где A и b — матрицы известных констант, x — вектор неизвестных переменных.
A = np.array([[2, 1, 5],
[4, 4, -4],
[1, 3, 1]])
b= np. array([8,4,5 ])
Объедините матрицы A и b, чтобы получить
n = A.shape[0]C=np.c_[A,b.reshape(-1,1)]
Теперь мы готовы решить наши проблемы в два шага:
- Применить исключение Гаусса к уменьшите приведенную выше матрицу до треугольной матрицы
, которая может быть представлена уравнением:
2. Примените обратную замену, чтобы получить результат
Начнем с первого шага
Чтобы получить эту матрицу:
идея проста :
- Начнем со значения разворота в первой строке и первом столбце: строка =0, столбец = 0
- Найдите максимальное абсолютное значение столбца сводной таблицы. Если все значения в этом столбце равны 0, мы останавливаемся.
- В противном случае мы поменяем местами E_0 и E_1
Затем примените эквивалентные преобразования, чтобы преобразовать все записи ниже опорной точки в 0:
- Найдите соотношение между элементом j,i и опорной точкой i,i (т. е. 2 /4 = 1/2).
- Умножьте все элементы в E0 на 1/2. Вычтите все элементы в строке 1 на 1/2 E0 (т. е. 2-(4*1/2)=2–2 =0)
#строка
для j в диапазоне (i+1, n):c = C[j,i]/C[i,i]
C[j,:] = C[j,:] - c*C [i,:]
После упрощения каждого столбца мы переходим к следующему столбцу справа.
Повторите процедуру:
Опорная точка: строка = 1, столбец = 1. Максимальное абсолютное значение: 2 в строке 2. Затем переставьте E_1 и E_2
Применение эквивалентного преобразования для преобразования всех записей ниже опорной в 0
Собери все вместе
Отлично! Теперь у нас есть система уравнений:
Как только мы доберемся до этой точки, эту систему уравнений будет невероятно легко решить с помощью обратной подстановки
Исключением Гаусса мы получим треугольную матрицу
Идея состоит в том, чтобы решить приведенную выше систему уравнений, решая снизу вверх. Используйте значение, полученное из последнего уравнения, чтобы найти другие значения
Начните со строки 3. Разделите 8 на 8, чтобы получить значение x_3.
X[n-1] = T[n-1,n]/T[n-1,n-1]
Теперь во второй строке имеем:
x_2 можно легко решить с помощью
Повторить с x1
Таким образом, в общем случае обратную подстановку можно представить как:
Отлично! Мы получаем решение, как мы предсказываем. Чтобы убедиться, что это правильно при работе с большей матрицей, мы можем использовать встроенную функцию в NumPy
>>> np.linalg.solve(A,b)array([1., 1., 1.] )
Мы получаем вектор решений, где каждый элемент соответствует x_0, x_1, x_2
Поздравляем, вы продвинулись так далеко! Надеюсь, эта статья поможет вам понять, что такое линейная алгебра и один из механизмов решения системы линейных уравнений. Я стараюсь сделать эту статью максимально понятной. Но я понимаю, что это может быть сложно, если вы не знакомы с линейной алгеброй. Это нормально! Один шаг за раз. Чем больше вы знакомитесь с линейной алгеброй, тем больше вы ее понимаете.
Вы можете поиграть и поэкспериментировать с приведенными выше кодами на моем Github.
Мне нравится писать об основных концепциях науки о данных и экспериментировать с различными алгоритмами и инструментами обработки данных. Вы можете связаться со мной в LinkedIn и Twitter.
Пометьте этот репозиторий звездочкой, если хотите проверить коды всех статей, которые я написал. Подпишитесь на меня на Medium, чтобы быть в курсе моих последних статей по науке о данных, например:
Как создать матричный модуль с нуля
Если вы импортировали Numpy для матричных операций, но не знаете, как строится модуль, эта статья покажет…
в направлении datascience.com
Сроки для эффективного кода Python
Как сравнить производительность между списком , набор и другие методы
в направлении datascience.com
Как изучать науку о данных, когда жизнь не дает вам передышки
Я изо всех сил пытался посвятить время науке о данных.
Но поиск новых стратегий позволяет мне повысить скорость обучения и…На направлении adatascience.com
Словарь в качестве альтернативы IF-ELSE
Используйте словарь для создания более чистого кода функции IF-ELSE
к DATASTASCIENCE.com
СЛАДКА В качестве альтернативы IF-ELSE
8
в качестве альтернативы IF-ELSE
8
. Использование словарей для создания более чистого кода функции «если-иначе»
в направлении datascience.com
Численный метод — третий семестр
Решение нелинейных уравнений
1.1 Ошибки в численных расчетах, источники ошибок, распространение ошибок, обзор теоремы Тейлора 1.2 Решение нелинейных уравнений методом проб и ошибок, Half-I. . .
1.1 Ошибки в численных расчетах, источники ошибок, распространение ошибок, обзор теоремы Тейлора 1.2 Решение нелинейных уравнений методом проб и ошибок, методом полуинтервала и сходимостью, методом Ньютона и сходимостью, методом секущих и сходимостью, итерацией с фиксированной точкой и ее сходимостью, методом Ньютона для вычисления нескольких корней, методом Хорнера
Читать примечание
Интерполяция и регрессия
2. 1 Интерполяция и экстраполяция, интерполяция Лагранжа, интерполяция Ньютона с использованием разделенных разностей, разностей вперед и назад, кубический сплайн, инт. . .
2.1 Интерполяция и экстраполяция, интерполяция Лагранжа, интерполяция Ньютона с использованием разделенных разностей, прямые и обратные разности, интерполяция кубическим сплайном 2.2 Знакомство с регрессией, регрессией и интерполяцией, методом наименьших квадратов, линейной регрессией, нелинейной регрессией путем подбора экспоненциальной и полиномиальной
Читать примечание
Численное дифференцирование и интегрирование
3.1 Дифференцирование непрерывных функций (формулы с двумя и тремя точками), дифференцирование табличных функций с использованием ньютоновских разностей, максимумов и минимумов табулирования. . .
3.1 Дифференцирование непрерывных функций (формула двух и трех точек), дифференцирование табличных функций с использованием разностей Ньютона, максимумов и минимумов табличных функций 3. 2 Квадратурные формулы Ньютона-Коута, правило трапеций, многосегментное правило трапеций, правило Симпсона 1/3, многосегментное правило Симпсона 1/3, правило Симпсона 3/8, многосегментное правило Симпсона 3/8, алгоритм интегрирования Гаусса, Интеграция Ромберга
Читать примечание
Решение системы линейных уравнений
4.1 Проверка существования решений и свойств матриц, метод исключения Гаусса, поворот, метод Гаусса-Жордана, обращение матрицы методом Гаусса-Жордана . . .
4.1 Обзор существования решений и свойств матриц, метод исключения Гаусса, поворот, метод Гаусса-Жордана, обращение матрицы методом Гаусса-Жордана 4.2 Матричная факторизация и решение системы линейных уравнений с использованием алгоритма Дулиттла и Холецкого 4.3. Итерационные решения системы линейных уравнений, метод итераций Якоби, метод Гаусса-Зейдала. 4.4 Задачи на собственные значения и собственные векторы. Решение задач на собственные значения степенным методом.
Прочитать примечание
Решение обыкновенных дифференциальных уравнений
5.