[Система рекомендаций и руководство по машинному обучению] От традиционного машинного обучения до глубокого обучения векторизация является самым основным и необходимым навыком ускорения.
Машинному обучению необходимо обучить большой объем данных для обучения модели.Как ускорить процесс обучения - проблема, которую необходимо рассмотреть.Так называемая векторизация, грубо говоря, заключается в использовании вместо нее формы умножения матриц накопления циклов for. Давайте рассмотрим пример. Продемонстрируйте
один пример
Вопрос: Если бы вам дали 1 000 000 данных a1~a1000000 и 1 000 000 данных b1–b1000000, и вас попросили бы найти сумму c результатов умножения каждой пары ai и bi, что бы вы сделали?
Код, который использует цикл for для накопления, выглядит следующим образом.
计算结果:249879.05298545936, for 循环计算耗时:519.999980927ms
Если вы используете numpy для выполнения той же операции (векторизация)
计算结果:249879.05298545936, 矩阵计算耗时:0.999927520752ms
Разница в скорости вычислений глубже, чем у Марианской впадины.Причина, по которой разница настолько велика, заключается в том, что программы матричных операций, такие как numpy и matlab, в полной мере используют технологию SIMD современных процессоров, что значительно повышает эффективность работы. .
Применение векторизации в LR
Теперь поговорим о простейшей логистической регрессии LR, как использовать методы векторизации для ручного обучения модели
Если мы выберем BGD (пакетный градиентный спуск) или MBGD (мини-пакетный градиентный спуск), то формула обучения параметра для LR будет
Можно видеть, что в полученной выше формуле большая матрица в середине на самом деле является транспонированной матрицей входных данных, поэтому реализация кода очень проста.Алгоритм LR, реализованный numpy,
def grand_ascent(data_train, data_label): dataMatrix = np.mat(data_train) labelMat = np.mat(data_label).transpose() m, n = np.shape(dataMatrix) weights = np.ones((n, 1)) alpha = 0.001 for i in range(0, 500): h = sigmoid(dataMatrix * weights) weights = weights + alpha * dataMatrix.transpose() * (labelMat - h) return weights
Нажмите и удерживайте QR-код, чтобы следовать
Рекомендательные системы и машинное обучение
ID: RecomAI