Гипотетически, ничего не мешаем нам воспользоваться линейной регрессии для случая классификации.
Если целевая переменная перекодирована в числа, например $Y = \{0, 1\}$, то ничто нам не мешает построить регрессию и восставить зависить между $x$ и $y$.
Если целевая переменная перекодирована в числа, например $Y = \{0, 1\}$, то ничто нам не мешает построить регрессию и восстановить зависимость между $x$ и $y$.
Мы будем оптимизировать все тот же метод наименьших квадратов, оптимизируя квадратичную функцию потерь:
> [**Scikit-learn**](https://scikit-learn.org/stable/index.html) - это библиотека машинного обучения с открытым исходным кодом для языка программирования Python. Она предоставляет простые и эффективные инструменты для предобработки данных, машинного обучения и анализа данных.
@@ -22,7 +26,7 @@ title: Метрические Алгоритмы
* В библиотеку также включены функции для предобработки данных, необходимой перед подачей данных в модель
* Scikit-learn в основном направлен на работу именно с классическим ML, хотя в ней поддерживается и создание простейших нейронных сетей. Однако использование ее для задач глубокого обучения не рекомендуется, для этого есть специализированные инструменты (Tensorflow и PyTorch)
## Идея Метрических Алгоритмов
## Идея метрических алгоритмов
Идею метрических алгоритмов можно сравнить с простой философской идеей "мы - это наше окружение" или "скажи мне, кто твой друг, и я скажу, кто ты".
@@ -40,7 +44,7 @@ title: Метрические Алгоритмы
Особенность метрических алгоритмов заключается в том, что они не строят явную модель на основе данных, а основываются на хранении и использовании обучающих примеров для принятия решений. Как такого обучения в алгоритмах не предполагается. Такой подход еще часто называется **"ленивым обучением" (lazy learning)**.
## Расстояние Между Объектами
## Расстояние между объектами
Ключевая идея методов - использование близости между объектами для принятия решения. Как выразить близость в численном эквиваленте?
@@ -99,7 +103,7 @@ pairwise_distances(x, y, metric='cosine')
Качество модели сильно зависит от выбора метрики. Поэтому способ измерения расстояния может использоваться в качестве внешнего параметра алгоритма (гиперпараметра), управляя которым, исследователь может модифицировать работу алгоритма и улучшать качество получаемого решения.
## Алгоритм kNN Для Классификации
## Алгоритм kNN для классификации
В данном уроке мы будем рассматривать самого популярного представителя метрических алгоритмов - метод k-ближайших соседей (k-nearest neighbors, kNN).
Метрические алгоритмы являются **чувствительным к масштабу признаков**.
Это означает, что если один признак имеет значительно больший масштаб, чем другой, то он будет доминировать в вычислении расстояния между объектами, и алгоритм будет искать соседей только на основе доминирующего признака, не общая внимания на вклад других, что приведет к некорректной классификации.
Это означает, что если один признак имеет значительно больший масштаб, чем другой, то он будет доминировать в вычислении расстояния между объектами, и алгоритм будет искать соседей только на основе доминирующего признака, не обращая внимания на вклад других, что приведет к некорректной классификации.
Рассмотрим простой пример. Пусть есть датасет из 5-ти наблюдений:
Теперь картина получается максимально противоположная: объект $x_4$ оказывается самым удаленным объектом от $x_1$, а ближайшими к $x_1$ оказываются объекты $x_3$ и $x_5$, как и должно быть.
**Важный вывод:** для корректного рассчета расстояния между объекта и, как следствие, корректной работы kNN все признаки в датасете должны быть приведены к единому масштабу.
**Важный вывод:** для корректного расчёта расстояния между объектами и, как следствие, корректной работы kNN все признаки в датасете должны быть приведены к единому масштабу.
В scikit-learn методы масштабирования реализованы в модуле `preprocessing` виде следующих классов:
Указать способ инициализации весов можно с помощью параметра `weights`.
* По умолчанию значение параметра выставлено как 'uniform', что сооветствует равномерному распределению весов соседей, то есть все соседи имеют одинаковый и прогноз алгоритма выполняется путем мажоритарного голосования (в случае классификации) или усреднения таргета (для регрессии)
* По умолчанию значение параметра выставлено как `'uniform'`, что соответствует равномерному распределению весов соседей: все соседи имеют одинаковый вес, и прогноз алгоритма выполняется путём мажоритарного голосования (в случае классификации) или усреднения таргета (для регрессии).
* Если выставить значение данного параметра как 'distance', то веса распределяются обратно пропорционально расстоянию (по формуле $\omega_i = \frac{1}{\rho}$)
От выбора ядра зависит гладкость аппроксимации, но на её качество этот выбор почти не влияет.
На практике чаще всего используют либо единообразное (uniform) для простоты, либо гауссовское (gaussian), в случае когда важна гладкость модели (а она важна в случаерегрессии).
На практике чаще всего используют либо единообразное ядро (*uniform*) для простоты, либо гауссовское (*gaussian*), когда важна гладкость модели, например в случаерегрессии.
Ширина окна же $h$ существенно влияет на качество модели и может быть использована в качестве гиперпараметра алгоритма и ее можно подбирать, также как и количество соседей.
При слишком маленькой ширине модель сильно подстраивается под обучающую выборку,теряет свою обобщающую способность и рисует переобучиться. При слишком большой ширине, наблюдается обратная ситуация - модель рискует недообучиться. Универсальной ширины окна не существует, поэтому для каждой задачи её приходится подбирать отдельно.
При слишком маленькой ширине модель сильно подстраивается под обучающую выборку,теряет свою обобщающую способность и рискует переобучиться. При слишком большой ширине наблюдается обратная ситуация - модель рискует недообучиться. Универсальной ширины окна не существует, поэтому для каждой задачи её приходится подбирать отдельно.
На рисунке ниже приведены [примеры](https://education.yandex.ru/handbook/ml/article/metricheskiye-metody) того как ядерная функция и ширина окна влияют на результаты регрессии:
Вторая модификация классического алгоритма kNN связана с необходимостью оптимизации поиска соседей.
В классическом алгоритме предлагается предполагается, что для того, чтобы найти ближайших соседей для объекта $x_t$ нам нужно вычислить расстояние между этим объектом и всеми объектами из обучающей выборки $(x_i)_{i=1}^n$.
В классическом алгоритме предполагается, что для того, чтобы найти ближайших соседей для объекта $x_t$, нужно вычислить расстояние между этим объектом и всеми объектами из обучающей выборки $(x_i)_{i=1}^n$.
То есть нам нужно перебрать $n$ объектов. Такой "топорный" перебор называется методом грубой силы (brute force).
* [Статья с примерами применения K-d- и Ball- деревьев](https://www.geeksforgeeks.org/ball-tree-and-kd-tree-algorithms/)
## Связанные заметки
- [[Линейные модели]] — контраст с параметрическими моделями: kNN хранит обучающие примеры и не строит явную линейную функцию
- [[Нейронные сети]] — другой класс моделей ML; в отличие от kNN, нейросети обучают веса и строят параметрическое отображение $Y=F(X)$
- [[Расстояние между объектами]] — формулы метрик (Евклид, Манхэттен, Минковский, Махаланобис) идентичны тем, что реализованы в sklearn; Math-нота даёт строгие определения
- [[Итерационная классификация. Метод K-средних (K-means)]] — K-means тоже классифицирует по минимальному расстоянию $\min \rho_{il}$; unsupervised-аналог kNN
- [[Наивный Байесовский алгоритм]] — альтернативный метод классификации с учителем из той же обучающей выборки
@@ -143,5 +143,6 @@ Backpropagation - это не отдельный способ оптимизац
## Связанные заметки
- [[Обратное распространение ошибки - вывод]]
- [[Обратное распространение ошибки для произвольного числа слоев НС]]
- [[Нейронные сети]]
- [[Линейные модели]]
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.