Отбор признаков в задаче...

Post on 25-May-2020

33 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Отбор признаков в

задаче линейной

регрессии Пересунько Павел

Ассистент кафедры «Информатика»

Научный сотрудник проекта «Оптимизация имитационных моделей

роста годичных колец деревьев на основе нейросетевых технологий»

Линейная регрессия

Что такое простая линейная регрессия

Модель, которая способна описать зависимости следующего вида:

Она предполагает, что:

Выход модели линейный относительно признаков

Признаки не взаимодействуют друг с другом

Плюсы:

Легкая интепретируемость

Точность предсказаний в случае, если связь со входами действительно

линейная

Пример линейной регрессии

Связь имеет вид:

Интерпретация многомерной модели

Предположим, что связь имеет вид: 𝑌 = 2 ∙ 𝑋1 − 4 ∙ 𝑋2

Если мы зафиксируем 𝑋2, то при увеличении 𝑋1 на 1 выход модели

увеличится на 2

Если мы зафиксируем 𝑋1 , то при увеличении 𝑋2 на 1 выход модели

уменьшится на 4

Многомерная регрессия

Важно понимать, что в одномерном пространстве признаков линейная

регрессия будет иметь форму линии, а в двумерном пространстве

признаков линейная регрессия будет иметь форму трехмерной плоскости

Минусы линейной регрессии

Модель имеет следующие проблемы:

Как правило, зависимости имеют нелинейный характер, тогда модель не

сможет описать зависимость

Если остатки модели не имеют нормального распределения, то анализ

характеристики модели не эффективен

В случае большого количества признаков линейная модель может

переобучиться. Переобученная модель – модель, которая хорошо описывает

данные, на которых она настроилась, но плохо прогнозирует на тех данных,

которые она не видела

Из-за большого количества признаков модель теряет интерпретируемость

Последние две проблемы могут быть решены с помощью грамотного

отбора множества признаков

Переобучение в линейной модели

В двумерном пространстве через две точки мы можем

построить линию, но через одну точку мы сможем построить

бесконечное число линий

В трехмерном пространстве через три точки мы можем

построить одну плоскость, но бесконечно много плоскостей

через две точки

В n-мерном пространстве мы можем построить гиперплоскость

через n точек, но бесконечно много гиперплоскостей, если

размерность пространства больше количества точек

Это означает, что если количество признаков будет равно

количеству точек, то мы сможем построить линейную

регрессию (гиперплоскость), которая идеально проходит

через все точки выборки

Если же точек меньше количества признаков, то можно

построить бесконечно много моделей, которые будут

идеально описывать данные

Отбор признаков линейной

регрессии

Отбор оптимального подмножества [1]

Действительно ли оптимальная модель?

Во-первых, в случае многих переменных (m > 40) алгоритм будет работать

слишком долго

Во-вторых, алгоритм может некорректно выбрать модели на втором шаге

Вообще, выбор оптимальной модели из нескольких довольно

неоднозначен

Правдоподобие линейной модели

Полагаем, что остатки линейной модели, то есть шум в уравнении

имеют нормальное распределение и не меняются от опыта к опыту.

Тогда функция правдоподобия модели будет иметь вид

После логарифмирования для линейной модели получим

Штраф за сложность

При увеличении сложности модели увеличивается шанс того, что модель

будет переобучена

Поэтому логично наложить ограничение на сложность модели

В литературе можно встретить следующие известные методы оценивания

модели

где 𝑘 – количество признаков модели,

L – логарифм правдоподобия

𝑛 – объем выборки

𝐵𝐼𝐶 сильнее ограничивает сложность модели, так как при 𝑛 ≥ 8, ln 𝑛 > 2

Информационный критерий

Акаике

Байесовский информационный

критерий

𝐴𝐼𝐶 = 2𝑘 − 2 ∙ L 𝐵𝐼𝐶 = 𝑘 ∙ ln 𝑛 − 2 ∙ L

Пример отбора моделей из книги

Еще одна проблема алгоритма оптимальной

модели

На каждом шаге алгоритм выбирает модель, которая лучше всего

прогнозирует на тех данных, на которых она обучалась

Это значит, что каждый раз для каждого количества признаков 𝑘

выбиралась, возможно, переобученная модель

Можно его модифицировать, каждый раз выбирая оптимальную модель по

𝐵𝐼𝐶 иди 𝐴𝐼𝐶 критерию, так как подсчет этих критериев не сильно

увеличивает время работы программы

«Сжимающие» модели

«Сжимающие» модели Смещение и дисперсия модели

Рассмотрим сгенерированный набор точек. Построим три модели регрессии для точек (слева).

Справа построим график зависимости среднеквадратичной ошибки (MSE) от гибкости.

Красная линия – ошибка прогноза для точек, которые модель не видела, серая – ошибка прогноза на

обучающих данных

Компромисс между смещением и

дисперсией Можно доказать, что

здесь 𝑓 (𝑥0) рассматривается как функция от случайных аргументов, которыми

являются данные

Для уменьшения ошибки, нужно уменьшить дисперсию модели и квадрат

смещения модели

Дисперсия в данном случае говорит о том, как сильно меняется модель в

зависимости от разных обучающих данных, то есть как сильно модель

подстраивается под данные

Смещение говорит о том, на сколько аппроксимация модели далека от

реального процесса

Компромисс между смещением и

дисперсией

Как правило, для более гибких моделей смещение маленькое, а дисперсия

– большая

Для менее гибких моделей смещение большое, а дисперсия маленькая

При выборе модели нужно выбрать такую модель, сумма смещения и

дисперсии которой дадут минимум

«Сжимающие» модели

Минимизация по методу наименьших квадратов минимизирует величину

Однако оказалось, что при уменьшении абсолютного значения

коэффициентов возможно получить модель с меньшей дисперсией

Для уменьшения значений коэффициентов будем минимизировать

величину

где 𝜆 – параметр регуляризации, который нужно оптимизировать

Таким образом получим гребневую регрессию

Она справляется с задачей, когда есть много признаков и мало примеров

«Сжимающие» модели

Если же в уравнении поменять квадрат на модуль, то получим Лассо

регрессию

В отличии от гребневой регрессии, она сводит некоторые коэффициенты

регрессии к нулю, то есть делает некоторый отбор признаков

Это происходит благодаря операции модуля в штрафе

Оптимизационные задачи

Регрессию Лассо и гребневую можно представить как оптимизационные

задачи:

Грубо говоря, нам нужно найти минимум при условии ограниченного

бюджета 𝑠

Первое условие можно отобразить в виде ромба, второе – в виде круга

Оптимизационные задачи

Гребневая vs Лассо

Лассо регрессия выполняет отбор признаков, благодаря чему

интепретируемость модели выше

Гребневая регрессия имеет меньшую дисперсию из-за малых значений

коэффициентов, поэтому может иметь меньше ошибку

На практике, надо попробовать обе модели и сравнить, какая лучше

Снова приходим к сравнению моделей

К тому же, можно представить, что для каждого гиперпараметра 𝜆 мы

получаем новую модель

Сравнение моделей

Оценивание модели

Предположим, что у нас есть набор данных

В этом наборе данных количество точек равно количеству признаков, то

есть при построении регрессии с помощью метода наименьших квадратов

мы получим переобученную модель

Если мы будем оценивать ошибку модели по этому набору, то ошибка будет

равна нулю, и она будет недооцененной

Следственно, нельзя использовать этот набор для оценивания модели, так

как получаем переобученные параметры 𝛽𝑖

Метод проверочной выборки

Весь обучающий набор разбивается на две части. На первой части

происходит обучение модели, на второй – ее тестирование

Таким образом мы можем оценить качество модели на данных, которые

модель не видела

Проблемы

Ошибка может меняться в зависимости от разбиения

Мы можем переоценить ошибку

Как можно переоценить ошибку

Предположим, что мы хотим найти оптимальный гипепараметр 𝜆 для

регрессии Лассо

Так как это всего лишь один параметр и модель быстро настраивается, мы

можем перепробовать разные значения параметра с каким-то шагом

Выберем 𝜆*, при котором модель имеет наименьшее значение ошибки

После этого мы сделаем прогноз на наборе Testing, и получим ошибку

прогноза, сравнив прогноз модели с настоящими значениями в наборе

Testing

Интересная особенность тут в том, что настраивая гиперпараметр 𝜆 мы

можем получить переобученную модель для данных Training, так как этот

гиперпараметр тоже настраивается по той же выборке

Поэтому получая ошибку на тестовом множестве, мы ее переоцениваем,

так как прогоняем переобученную модель на новых данных

Тренировочная, валидационная и тестовая

выборка С шагом перебираем гиперпараметр 𝜆

На тренировочной части настраивается модель, то есть оптимизируются

параметры 𝛽𝑖 при заданном 𝜆

На валидационной части смотрим ошибку модели 𝐸𝜆

Выбираем то значение 𝜆*, при котором 𝐸𝜆∗ = min

Обучаем модель с 𝜆* на тренировочной и валидационной выборке и

оцениваем настоящую ошибку на тестовом множестве

Далее уже не изменяем 𝝀, которое уменьшает ошибку на тестовом

множестве, так как снова получим недооцененную ошибку

Валидационное множество используется для настройки гиперпараметра 𝜆

Перекрестная проверка

В случае, если у нас мало образцов, то мы можем использовать

перекрестную проверку

Например, разделим выборку на k = 10 частей

Первую часть делаем тестовой частью, остальные – тренировочной

Настраиваем параметры на девяти частях, делаем тестовый прогноз на

первой части, сохраняем ошибку

Делаем также для других частей, и усредняем ошибку

По сути, получили более стабильную версию разделения на тренировочную

и тестовую выборку, и снова переоцениваем ошибку

Скользящий контроль

Если мы в перекрестной проверке количество блоков k сделаем равным

количеству образцов n, то получим скользящий контроль

Скользящий контроль требует больше времени для оценки, но при этом

получает более точный прогноз ошибки

Однако тут снова появляется компромисс дисперсии и смещения

В перекрестной проверке больше смещение, но меньше дисперсия

В скользящем контроле смещение меньше, но дисперсия выше

Перекрестная проверка и тестовое

множество

Все то же самое, только финальное качество модели получаем на тестовом

множестве

В перекрестной проверки используем одну часть как валидационное

множество для подбора параметра 𝜆, другие – как обучающий набор, и т.д.

Получили почти устойчивую версию разделения выборки на

тренировочную, валидационную и тестирующую часть

Nested cross-validation

Делим выборку на 10 частей

Запускаем перекрестную проверку с тестовым множеством на 9 частях,

получая лучшее значение гиперпараметров.

Обучаем модель с найденными гиперпараметрами на 9 частях, проверяем

на той, что не участвовала в обучении.

Повторяем п. 2 и п. 3, выбирая тестовым множеством каждую из 10 частей

В результате получили устойчивую версию разделения выборки на

тренировочную, валидационную и тестирующую часть

Когда придумывают новый метод оценки ошибки, проверяют с этим

методом

Бутстреп

Метод создания повторных выборок

Создает наборы такого же размера случайным выбором с повторением

Мотивация такого подхода

Проблема бутстрепа

В обычном разбиении на тренировочный и тестирующий набор, примеры не

перемешиваются, то есть нет совпадений в обучающих примерах

В бутстрепе мы генерируем из одного набора одну или обе выборки, но мы

генерируем выборку с помощью выбора с повторением

А это значит, что мы недооцениваем ошибку моделей, так как часть данных

модель уже видела

Можно частично решить проблему, если контролировать, чтоб примеры не

перехлестывались

Однако метод усложняется и уже не кажется таким привлекательным

Однако существует много споров по поводу бутстрепа, и также существуют

ситуации, когда он может быть более точным

Методы снижения размерности

пространства признаков

Регрессия на главных компонентах

Метод главных компонент – алгоритм снижения размерности пространства

Он выбирает те направления в данных, вдоль которых дисперсия

максимальна

Хорошо работает в случае, когда есть шумовые переменные, которые слабо

влияют на разброс в данных

Регрессия на главных компонентах

Можно настроить линейную модель по точкам в новом пространстве

Может привести к более качественным результатам, чем метод

наименьших квадратов

Это не метод отбора признаков, так как каждая компонента является

линейной комбинацией всех исходных переменных

По своей сути он похож на гребневую регрессию, нежели чем на регрессию

Лассо

Из минусов можно отметить, что метод главных компонент является

методом обучения без учителя, то есть он не учитывает связи с выходной

переменной

Количество компонент находится с помощью перекрестной проверки

Метод частных наименьших квадратов

Похож на регрессию на главных компонентах, но только этот метод

учитывает выходную переменную

Первое PLS-направление равно 𝑍1 = 𝜑𝑗1𝑋𝑗𝑚𝑗=1 , где 𝜑𝑗1 - коэффициент

наклона линейной регрессии 𝑌 по 𝑋𝑗

Для второго PLS-направления мы сначала корректируем признаки, для

этого строим линейные модели для каждой переменной по 𝑍1, и находим

остатки

Это те остатки, которые направление 𝑍1 не описало. Далее повторяем

процесс, и получаем несколько PLS-направлений

Этот метод может иметь меньшее смещение, чем RPC, но при этом

большую дисперсию

Пошаговые алгоритмы отбора признаков

Шаговый регрессионный анализ представлен процедурами трех типов:

Пошаговое включение. На первом шаге выбирается самый лучший признак по

некоторому критерию. На втором шаге выбирается второй предиктор, который

дает оптимальное решение в сочетании с первым признаком, и т.д.

Пошаговое исключение. На первом шаге выбираются все признаки и строится

модель. Далее исключается наименее информированный признак по заданному

критерию. Эти шаги повторяются

Комбинированные алгоритм

Как правило, для того, чтоб определить, хороший признак, или нет,

используют F-тест

Очевидный минус такого подхода в том, что нужно использовать

модифицированный F-тест для проверки множества гипотез

Опыт местомера

Местомер

Основная задача

Задача состоит в помощи клиенту определить местоположение будущей

продажной точки

Помимо рекомендаций, сайт также дает ссылки на объявления по съему

жилья

Для клиентов с большим объемом точек мы можем прогнозировать выручку

для данной точки

Естественно, нельзя говорит, что прогноз будет очень точным, так как на

выручку влияет много параметров, которые невозможно оценить

Поэтому сайт предлагается как экспертная система. У клиента есть своя

интуиция, и он, прислушиваясь к сайту, сможет найти хорошее место для

точки

Постановка задачи Имеется ряд признаков продажной точки

Площадь

Время работы

Количество касс

Имеется ряд геолокационных признаков точки

Количество квартир в радиусе (100, 200, 300, 500, 800)

Средний возраст в радиусе

Количество транспортных остановок

Количество станций метро

Количество кафе/баров и тд

Количество конкурентов

И другие

Необходимо по этим признакам спрогнозировать

выручку новой точки

Предобработка

Удаление малоинформативных признаков

Удаление признаков, где отношение частоты самого часто встречающего

значения ко частоте второму по встречаемости элементу больше некоторого

значения

Преобразование признаков к значениям от 1 до 2

Бокс-кокс трансформация признаков

Нормализация признаков, чтоб 𝐸 𝑦 = 0, 𝐷 𝑦 = 1

Выбор и настройка моделей Линейная регрессия

Регрессия Лассо

Гребневая регрессия

Байесовская гребневая регрессия

ARD регрессия

Деревья решений

Градиентный бустин

AdaBoost

Случайный лес

Взвешенный метод k-ближайших соседей

Многослойный персептрон

Метод наименьших углов

Регрессия на главных компонентах

Метод частных наименьших квадратов

Рекурсивное исключение признаков

Регрессионное дерево

Итого

Лучше всего себя показала регрессионное дерево с алгоритмом M5

Дерево разбивает пространство на области

На каждой области строится модель

В качестве моделей использовались лассо и гребневая регрессия

Одна из моделей Модель, если количество конкурентов больше среднего:

income_rate = + 0.11*stairs - 0.24*avg_buildings_age_100 + 0.02*supermarkets_300 + 0.04*malls_300 - 0.24*rubric_360_500 +

0.01*rubric_399_300 + 0.07*rubric_399_400 + 0.02*rubric_410_200 + 0.07*rubric_418_800

Модель, если количество конкурентов меньше среднего:

income_rate = + 0.1*area + 0.04*stairs + 0.05*category + 0.06*residential_300 - 0.01*residential_400 + 0.01*residential_500 -

0.01*residential_800 - 0.1*avg_buildings_age_100 + 0.09*avg_buildings_age_200 + 0.16*transport_stops_100 + 0.1*transport_stops_200 -

0.02*transport_stops_300 + 0.04*transport_stops_400 + 0.11*transport_stops_500 + 0.1*transport_stops_800 +

0.13*transport_routes_100 + 0.17*transport_routes_200 + 0.09*transport_routes_300 + 0.07*transport_routes_400 -

0.15*metro_stops_300 - 0.14*metro_stops_400 - 0.01*wifi_traffic_100 + 0.01*wifi_traffic_200 - 0.01*wifi_traffic_300 +

0.07*wifi_traffic_400 + 0.15*branches_100 + 0.02*branches_300 + 0.02*branches_400 - 0.04*supermarkets_300 - 0.04*supermarkets_400

- 0.03*supermarkets_500 + 0.07*supermarkets_800 + 0.13*malls_100 - 0.09*malls_200 - 0.1*malls_300 - 0.1*malls_400 - 0.05*malls_500

+ 0.1*malls_800 - 0.03*rubric_360_100 - 0.01*rubric_360_200 - 0.01*rubric_360_300 + 0.03*rubric_360_400 - 0.03*rubric_360_500 -

0.08*rubric_360_800 + 0.21*rubric_399_300 + 0.14*rubric_399_400 + 0.04*rubric_410_200 - 0.08*rubric_410_800 - 0.2*rubric_418_800 +

0.21*pharmacies_100 - 0.06*pharmacies_200 - 0.09*pharmacies_300 - 0.15*pharmacies_400 - 0.02*pharmacies_500 +

0.13*pharmacies_800 - 0.02*street_retail_200 + 0.07*street_retail_300 + 0.08*competitors_300 - 0.08*competitors_400 -

0.01*competitors_500

Итого прогноза

Усредним три модели для уменьшения дисперсии модели, и получим такой

результат

Дальнейшее развитие Местомера

Одна из важных целей проекта – помощь в выборе точки малым

предприятиям с малым количеством точек

Для них не получится сделать такой анализ, необходимо построить

универсальную по отраслям модель

Основная проблема – отсутствие данных

Оценка методов и алгоритмов на более простых задачах

Оценивание стоимости квартиры

Спасибо за внимание

Ссылки Метод максимального правдоподобия для линейной регрессии:

The Method of Maximum Likelihood for Simple Linear Regression: https://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/06/lecture-06.pdf

Дисперсия, смещение модели и рергессии Лассо и гребневая:

Введение в статистическое обучение с примерами на языке R

An Introduction to Statistical Learning: With Applications in R

Перекрестная проверка:

Train/Test Split and Cross Validation in Python: https://towardsdatascience.com/train-test-split-and-cross-validation-in-python-80b61beca4b6

Nested CV:

Krstajic, D., Buturovic, L. J., Leahy, D. E., & Thomas, S. (2014). Cross-validation pitfalls when selecting and assessing regression and classification models. Journal of Cheminformatics, 6(1), 1–15. https://doi.org/10.1186/1758-2946-6-10

Principles of Machine Learning | Nested Cross Validation: https://www.youtube.com/watch?v=LpOsxBeggM0

Перекрестная проверка и бутстреп:

Cross-validation and the Bootstrap: https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/cv_boot.pdf

Ссылки Метод главных компонент:

A Layman’s Introduction to Principal Components: https://hackernoon.com/a-laymans-introduction-to-principal-components-2fca55c19fa0

Усреднение линейных моделей:

Ghosh, D., & Yuan, Z. (2009). An improved model averaging scheme for logistic regression. Journal of Multivariate Analysis, 100(8), 1670–1681. https://doi.org/10.1016/J.JMVA.2009.01.006

О переобучении пошаговой регрессии:

BRADLEY EFRON, TREVOR HASTIE, IAIN JOHNSTONE, ROBERT TIBSHIRANI. LEAST ANGLE REGRESSION. The Annals of Statistics, 32(2), 407-499. https://doi.org/10.1186/1758-2946-6-10

http://statweb.stanford.edu/~tibs/ftp/lars.pdf

Stopping stepwise: Why stepwise selection is bad and what you should use instead: https://towardsdatascience.com/stopping-stepwise-why-stepwise-selection-is-bad-and-what-you-should-use-instead-90818b3f52df

Статистические тесты в пошаговой модели регрессии

https://basegroup.ru/community/articles/feature-selection

Деревья регрессии и алгоритм M5:

http://old.tusur.ru/filearchive/reports-magazine/2014-34-4/11.pdf

О том, что при хорошем выборе коэффициента разбиения вероятность выбора более хорошей модели при перекрестной проверке стремится к единице:

Yang, Y. (2007). Consistency of cross validation for comparing regression procedures. Annals of Statistics, 35(6), 2450–2473. https://doi.org/10.1214/009053607000000514

top related