Группа iKotMax iKotMax Kotik 5 месяцев назад

Алгоритм k-NN | программирование с Kotikom | Эксклюзивно для iKotMax

102 просмотра
Алгоритм k-NN | программирование с Kotikom | Эксклюзивно для iKotMax

Фантастика - 79

Небольшая история: Бот "ай какие рекомендации" я делал с научной целью для научной конференции. Это мой первый большой бот, в коде столько ошибок и как он работал, я не очень понимаю. В конце он перестал работать, я пытался его восстановить, но он не хотел. Был эксперимент и было интересно. Сейчас я понимаю, что по реализации он был ужасен, но идея отличная.

Начинаем начинать!

В наше время столько социальных сетей и менеджеров, все они собирают данные в большом количестве и даже те про которые пользователь сам не в курсе, кто-то больше, кто-то меньше и чаще всего продают. Ай какие рекомендации должны были собирать данные только те, которые пользователи сами предоставляют (оценки к фильмам, товарам) и хранить под строгим надзором библиотеки "pickle". После обработки данных пользователю предлагались бы пользователи, продукты, товары и т.д. Я провёл большую работу над анализом рекомендательных алгоритмов.

Основные рекомендательные алгоритмы:

  • Анализ потребительской корзины (анализ правил ассоциации)
  • Контентная фильтрация
  • Совместная фильтрация
  • Гибридные системы
  • Кластеризация машинного обучения
  • Классификация машинного обучения
  • Глубокое обучение NLP

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

Наверное, большинство из вас слышали историю (могу ошибиться в точности, но смысл тот-же), что отец девочки 16-летний увидел в телефоне дочки рекомендации детского питания и т.д. и отвел девочку сдать тест на беременность и оказалось, что она беременна. И рекомендации об этом узнали по запросам из разных сайтов (девочка не задавала вопросы про беременность), там то-ли она заказывала еду или что-то ещё. (Рассказал криво, но эту историю не смог найти.) Сейчас рекомендации могут знать о вас, больше, чем вы. С одной стороны это прекрасно и удобно, а с другой страшно.

Так вот, я выбрал классификацию машинного обучения на основе алгоритма/метода k-NN (k-ближайших соседей). Я выбрал этот алгоритм т. к. мне его предложил (книгу, где был этот алгоритм) учитель информатики. А по легенде мой взгляд упал, а потом поднялся на алгоритм k-NN из-за простоты и из-за того, что нужно маленькое количество данных для сбора и работы алгоритма.

В интернете вы про k - ближайших соседей можете найти много статей и фактов. Давайте разбираться, что такое k и почему соседей.

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

kNN расшифровывается как k Nearest Neighbor или k Ближайших Соседей — это один из самых простых алгоритмов классификации, также иногда используемый в задачах регрессии. Алгоритм K-ближайших соседей является одним из самых популярных среди ML-моделей для решения задач классификации.

На пальцах: у вас есть фрукт F(высота 6), фрукт N (высота 3) и фрукт A (высота 10). Вам надо отсортировать их по коробками (как выглядят эти фрукты вы не знаете, на вид они одинаковые, отличаются только высотой). Но тут вам попадается фрукт высотой 5 и вы делаете вывод, что он может принадлежать к фрукту F. Это пример самой элементарной задачи классификации.

Задача классификации в машинном обучении — это задача отнесения объекта к одному из заранее определенных классов на основании его формализованных признаков. Каждый из объектов в этой задаче представляется в виде вектора в N-мерном пространстве, каждое измерение в котором представляет собой описание одного из признаков объекта.

Для обучения классификатора необходимо иметь набор объектов, для которых заранее определены классы. Это множество называется обучающей выборкой, её разметка производится вручную, с привлечением специалистов в исследуемой области. В задаче классификации может быть более двух классов (многоклассовая), каждый из объектов может принадлежать более чем к одному классу (пересекающаяся).

Суть метода проста: посмотри на соседей вокруг, какие из них преобладают, таковым ты и являешься. Другими словами, похожие вещи рядом друг с другом

Алгоритм находит расстояния между запросом и всеми примерами в данных, выбирая определенное количество примеров (k), наиболее близких к запросу, затем голосует за наиболее часто встречающуюся метку (в случае задачи классификации) или усредняет метки (в случае задачи регрессии).

Метод kNN относится к разряду ленивых классификаторов. В целом это указывает на то, что метод "обучается" только на новых данных, не учитывая предыдущий опыт. В данном же случае это означает, что в процессе обучения алгоритм не делает ничего, а только сохраняет размеченные тренировочные данные.

Алгоритм находит расстояние между запросом и всеми примерами в данных, выбирая определенное количество примеров, которые наиболее близкие к запросу, затем голосует за короткие пути, метку (в случае задачи классификации) или усредняет метки (в случае задачи регрессии)

Задача классификации решается с помощью аналитических моделей, называемых классификаторами. Классифицировать объект означает предъявить набор его признаков (обычно представленных в виде вектора) на вход модели-классификатора, которая должна присвоить ему метку или номер класса.

Самый простой способ — это найти расстояние между двумя точками, представив систему координат. Для вычисления расстояния между двумя точками применятся формула Пифагора.

А на этом всё!

Полезные ссылки:
https://habr.com/ru/articles/149693/
https://proglib.io/p/metod-k-blizhayshih-sosedey-k...
https://www.youtube.com/watch?v=JGIOoMRFPKk

Прохор Митрич
Прохор Митрич
5 месяцев назад
+2

Круто! Это кажется как раз то, что мне нужно для моего проекта по боту знакомств. Я хочу классифицировать пользователей и добавить рекомендации.

Мегареспект. Не хватает кармы чтобы плюсануть. 

#
Сонечка
Сонечка
5 месяцев назад
0

Ты слишком умный какой-то. Сколько тебе лет?

#
Kotik
Kotik
5 месяцев назад
0

Я немного старый, но достаточно молодой, чтобы быть старым!