матричных методов | Coursera
Об этом курсе
21 209 последних просмотров
Методы математических матриц лежат в основе большинства методов машинного обучения и анализа табличных данных. Изучите основы матричных методов, включая умножение матрицы на матрицу, решение линейных уравнений, ортогональность и наилучшую аппроксимацию методом наименьших квадратов. Откройте для себя разложение по сингулярным значениям, которое играет фундаментальную роль в уменьшении размерности, анализе основных компонентов и уменьшении шума. Дополнительные примеры с использованием Python используются для иллюстрации концепций и позволяют учащимся экспериментировать с алгоритмами.
Гибкие срокиГибкие сроки
Сброс сроков в соответствии с вашим графиком.
Общий сертификатОбщий сертификат
Получите сертификат по завершении
100% онлайн100% онлайн
Начните сразу и учитесь по собственному графику.
Средний уровеньСредний уровень
Часов на прохождение Прибл.
7 часов на прохождение
Английский
Субтитры: французский, португальский (европейский), русский, английский, испанский
Гибкие срокиГибкие сроки
Сброс сроков в соответствии с вашим графиком.
Общий сертификатОбщий сертификат
Получите сертификат по завершении
100% онлайн100% онлайн
Начните сразу и учитесь по собственному графику.
Средний уровеньСредний уровень
Часов на прохождениеПрибл. 7 часов на прохождение
Доступные языкиАнглийский
Субтитры: французский, португальский (европейский), русский, английский, испанский
Инструктор
Daniel Boley
Профессор
Инженерные науки и инженерия
9,934 Ученики
1 . крупнейшие государственные исследовательские университеты в стране, предлагающие студентам, аспирантам и специалистам множество возможностей для учебы и исследований.
Студенты кампусов в Миннеаполисе и Сент-Поле, расположенные в самом центре одного из самых ярких и разнообразных городских сообществ страны, получают выгоду от обширных партнерских отношений со всемирно известными медицинскими центрами, международными корпорациями, государственными учреждениями и учреждениями искусства, некоммерческими и общественными организациями. сервисные организации.
Reviews
4.1
Filled StarFilled StarFilled StarFilled StarStar58 reviews
5 stars
55.50%
4 stars
20.18%
3 stars
9.17%
2 звездочки
7,33%
1 звезда
7,79%
ЛУЧШИЕ ОТЗЫВЫ ОТ МАТРИЧНЫХ МЕТОДОВ0004 от SJ 17 марта 2020 г.
Действительно предоставлен очень информативный и базовый материал. Мне понравилось, и я многому научился.
Это был полезный курс. У меня была возможность узнать о практическом применении матриц.
от UJ11 мая 2021 г.
Это была прекрасная возможность узнать больше о матрицах и их характеристиках
Посмотреть все отзывы
Часто задаваемые вопросы
- 90 а задания?
Что я получу, купив Сертификат?
Доступна ли финансовая помощь?
Есть вопросы? Посетите Справочный центр для учащихся.
производительность — эффективный способ решения матричного уравнения в Python
спросил
Изменено 4 года, 5 месяцев назад
Просмотрено 3к раз
Прямо сейчас я использую numpy.linalg.solve для решения моей матрицы, но тот факт, что я использую его для решения 5000 * 1793) для решения матричного уравнения, но я никогда не думал, что это будет так медленно.
Есть ли способ решить это быстрее в Python?
Мой код примерно такой, для решения уравнения BT * UT = BT*B a , где m количество тестов (в моем случае более 5000), B это данные матрица m*17956 , а u равно 1*m
C = 0,005 # термин гиперпараметра для регулирования I = np.identity(17956) # 17956*17956 единичная матрица rhs = np.dot(BT, UT) # (17956*m) * (m*1) = 17956*1 lhs = np.dot(B.T, B)+C*I # (17956*m) * (m*17956) = 17956*17956 a = np.linalg.solve(lhs, rhs) # B.T u = B.T B a, найти a (17956*1)
- питон
- производительность
- numpy
- матрица
2
Обновление (2 июля 2018 г.): Обновленный вопрос касается влияния члена регуляризации и типа данных в матрицах. В общем, это может оказать большое влияние с точки зрения типов данных, для которых конкретный ЦП наиболее оптимизирован (как правило, AMD лучше с векторизованной целочисленной математикой, а Intel лучше с векторизованной математикой с плавающей запятой, когда все остальные вещи считаются равными), а наличие большого количества нулевых значений позволяет использовать библиотеки разреженных матриц.
TLDR;
- Час вполне разумен (кубическая регрессия предполагает, что на моей машине — бюджетном хромбуке — это заняло бы около 83 минут).
- Предварительная обработка для создания
слеваисправапочти не занимает этого времени. - Вы не сможете решить именно эту проблему намного быстрее, чем с
numpy.linalg.solve. - Если
ммало, как вы предлагаете, и еслиBобратимо, вы можете вместо этого решить уравнениеU.T=Baчерез минуту или меньше. - Если это часть более крупной проблемы, этот дорогостоящий промежуточный шаг можно упростить, отказавшись от математической основы.
- Узкие места в производительности действительно следует устранять с помощью профилирования, чтобы выяснить, какой шаг вызывает проблемы.

- Поскольку это исходит из реальных данных, вы можете обойтись меньшим количеством функций (либо напрямую, либо с помощью шага сокращения, такого как PCA, NMF или LLE), в зависимости от конечной цели.
- Как упоминалось в другом ответе, если матрица достаточно разреженная, вы можете добиться большого эффекта с помощью разреженных процедур линейной алгебры (многие источники данных для обработки естественного языка подобны этому).
- Поскольку вывод представляет собой одномерный вектор, я бы использовал
np.dot(U, B).Tвместоnp.dot(B.T, UT). Транспозиции в этом плане аккуратны. Это позволяет избежать транспонирования на большой матрице, такой какB, хотя, поскольку у вас есть кубическая операция в качестве доминирующего шага, это не имеет большого значения для вашей задачи. - В зависимости от того, нужны ли вам исходные данные и имеют ли задействованные матрицы какие-либо другие специальные свойства, вы можете возиться с параметрами в
scipy.


