В рамках науки о данных мы фокусируемся на алгоритмах оценки для задач классификации и регрессии. Конечно, решение также будет включать алгоритмы обучения без учителя. Однако оптимизация обычно не входит в учебную программу типичного расписания обучения науке о данных. Это может быть связано с тем, что решения, использующие оптимизацию, встречаются редко.
Цель этой статьи — показать оптимизацию на более высоком уровне, сравнив ее со знакомым подходом к решению линейной регрессии.
Несмотря на то, что прямых приложений меньше, оптимизация составляет основу науки о данных, поскольку она является строительным блоком многих алгоритмов. Просто пользователь не подвергается непосредственному воздействию. Структура большинства алгоритмов начинается с определения функции стоимости и заканчивается ее минимизацией с помощью процедуры оптимизации. Например, алгоритм машины опорных векторов (SVM) применяет оптимизацию с ограничениями для оценки оптимальных весов.
Применение оптимизации для разработки решения встречается редко. Мы знаем о классификации аналитики как описательной, предиктивной и предписывающей. На самом деле оптимизация является строительным блоком большинства предписывающих решений. Шанс преобразовать прогностический алгоритм в предписывающий алгоритм не очень распространен, но когда это делается, выгода огромна. Рассмотрим следующие примеры, в которых применялась оптимизация для повышения ценности прогностических решений (создание предписывающего решения).
Распределение рекламы. Довольно часто оценивается чувствительность продаж к различным типам рекламы (телевидение, газета, радио и т. д.). Эта информация будет применяться для оценки объема из-за этой рекламы и рентабельности инвестиций. Это типичный результат моделирования структуры рынка. Этот результат может быть расширен для оценки оптимального распределения рекламного бюджета для максимизации продаж (рекомендательное решение).
Оптимальная премия. Автостраховщики знают, что указанная премия влияет на вероятность продления полиса. В типичной модели продления сумма премии является частью оценки вероятности продления. Однако эту модель можно улучшить, чтобы оценить оптимальную надбавку для различных классов клиентов, чтобы максимизировать продажи или прибыль.
Существует множество возможных приложений, которые могут повысить ценность приложений прогнозирования. Узким местом является то, что профессионалы должны признать возможность для этого приложения, поскольку они работают над различными проблемами. Следовательно, очень важно, чтобы специалист по обработке данных имел практические знания в области оптимизации.
Цель этой статьи — применить оптимизацию для оценки линейной регрессии. Причина, по которой была выбрана линейная регрессия, так как это один из самых простых и, скорее всего, первый изученный алгоритм. Мы понимаем, что линейная регрессия оценивается с использованием концепции градиентного спуска, которая представляет собой итеративный подход. Давайте посмотрим на результат, чтобы мы могли сравнить его с решением, разработанным с использованием подхода оптимизации.
Линейная регрессия с использованием Scikit Learn
Данные: - Давайте использовать данные о ценах на жилье в Бостоне, доступные с помощью sklearn. Каждая запись в базе данных описывает пригород или город Бостона. Данные были взяты из Бостонской стандартной столичной статистической зоны (SMSA) в 1970 году. Цель состоит в том, чтобы спрогнозировать медианную стоимость дома в этом городе в зависимости от уровня преступности, загрязнения, качества образования и т. д. В приведенном ниже фрагменте кода представлены этапы строительства. модель с использованием библиотеки обучения scikit.
Расчетные коэффициенты представлены ниже
coefs CRIM -0.928146 ZN 1.081569 INDUS 0.140900 CHAS 0.681740 NOX -2.056718 RM 2.674230 AGE 0.019466 DIS -3.104044 RAD 2.662218 TAX -2.076782 PTRATIO -2.060607 B 0.849268 LSTAT -3.743627 const 22.532806
Производительность модели оценивалась с использованием r-квадрата и RMSE.
Root Means Squared Error: 4.679191295697282 R-Square: 0.7406426641094094
Решение линейной регрессии с использованием оптимизации
Теперь давайте решим линейную регрессию с помощью подхода оптимизации. Мы будем использовать оптимизируемую библиотеку Scipy. Функция Minimize этой библиотеки полезна для этой цели. Наша цель — минимизировать среднеквадратичную ошибку и оценить оптимальные веса, которые помогут нам достичь этого.
Оптимизационная установка получила следующие логически связанные элементы.
Целевая функция. Эта функция содержит показатель, который мы пытаемся свести к минимуму. В случае линейной регрессии мы пытаемся минимизировать среднеквадратичную ошибку.
Границы. Границы – это ограничения на значения весов. Алгоритм будет учитывать только значения между границами при оценке оптимальных весов.
Исходное предположение: – массив действительных элементов размером (n,), где n – количество независимых переменных.
Метод. Существуют различные алгоритмы решения задачи оптимизации. Выбор зависит от характера проблемы; является ли он линейным или нелинейным, размерностью, существует ли производная или нет, природа ограничений и т. д.
Мы выбрали SLSQP (последовательное программирование методом наименьших квадратов), поскольку оно минимизирует функцию нескольких переменных с любой комбинацией ограничений, ограничений равенства и неравенства. Этот метод является оболочкой для подпрограммы оптимизации SLSQP, первоначально реализованной Дитером Крафтом.
Решение: –
fun: 21.894831519076373 jac: array([ 5.14984131e-05, -1.06334686e-04, 1.38998032e-04, -6.43730164e-05, -8.58306885e-05, 2.81333923e-05, 2.16245651e-04, 1.38998032e-04, -9.13143158e-05, 6.93798065e-05, 1.02281570e-04, -1.51395798e-04, -4.10795212e-04, -3.09944153e-05]) message: 'Optimization terminated successfully.' nfev: 243 nit: 15 njev: 15 status: 0 success: True x: array([-9.27963609e-01, 1.08141254e+00, 1.41149929e-01, 6.81704556e-01, -2.05689787e+00, 2.67403329e+00, 2.00840569e-02, -3.10356986e+00, 2.66177517e+00, -2.07635534e+00, -2.06060232e+00, 8.49091901e-01, -3.74436647e+00, 2.25327923e+01])
Решение обеспечивает оптимизированное значение целевой функции (забавно: 21,894831519076373). Это указывает на то, что при оптимальных весах модель MSE равна 21,894831519076373. Он показывает, что оптимизация прошла успешно (успех: True). Значения «x» — это веса каждой из переменных (соответствующие коэффициентам регрессии Склеарна).
Эффективность модели: –
Root Means Squared Error: 4.679191331744874 R-Square: 0.7406426601133311
Производительность модели вполне сопоставима с подходом sklearn (градиентный спуск). Мы замечаем некоторую разницу в младших разрядах после запятой, что указывает на то, что алгоритмы разные, но очень близки по производительности.
weights CRIM -0.927964 ZN 1.081413 INDUS 0.141150 CHAS 0.681705 NOX -2.056898 RM 2.674033 AGE 0.020084 DIS -3.103570 RAD 2.661775 TAX -2.060602 B 0.849092 LSTAT -3.744366 const 22.532792
Диаграмма ниже едва различима по сравнению с диаграммой sklearn, что неудивительно.
Выводы: –
В статье сравнивались два подхода к решению задачи регрессии. Первым решением был общий подход градиентного спуска с использованием библиотеки sklearn. Во-вторых, мы решили проблему регрессии, используя оптимизационный подход. Результаты сравниваются с использованием ряда метрик и показателей. В большинстве случаев результаты были неразличимы, что свидетельствует о применимости оптимизации для минимизации нелинейной функции.
Ссылки:-
Крафт, Д. Программный пакет для последовательного квадратичного программирования. 1988. Тех. Представитель DFVLR-FB 88–28, Немецкий аэрокосмический центр DLR - Институт летной механики, Кельн, Германия.
https://towardsdatascience.com/linear-regression-using-gradient-descent-97a6c8700931
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#id8