В рамках науки о данных мы фокусируемся на алгоритмах оценки для задач классификации и регрессии. Конечно, решение также будет включать алгоритмы обучения без учителя. Однако оптимизация обычно не входит в учебную программу типичного расписания обучения науке о данных. Это может быть связано с тем, что решения, использующие оптимизацию, встречаются редко.

Цель этой статьи — показать оптимизацию на более высоком уровне, сравнив ее со знакомым подходом к решению линейной регрессии.

Несмотря на то, что прямых приложений меньше, оптимизация составляет основу науки о данных, поскольку она является строительным блоком многих алгоритмов. Просто пользователь не подвергается непосредственному воздействию. Структура большинства алгоритмов начинается с определения функции стоимости и заканчивается ее минимизацией с помощью процедуры оптимизации. Например, алгоритм машины опорных векторов (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/optimization-with-scipy-and-application-ideas-to-machine-learning-81d39c7938b8

https://towardsdatascience.com/linear-regression-using-gradient-descent-97a6c8700931

https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#id8