Алгоритм для классификации экземпляров из набора данных, аналогичного другому меньшему набору данных, где этот меньший набор данных представляет один класс - PullRequest
3 голосов
/ 22 мая 2019

У меня есть набор данных, который представляет экземпляры из двоичного класса.Суть в том, что есть только примеры из положительного класса, а у меня нет ни одного из отрицательных.Или, скорее, я хочу извлечь те из негативов, которые ближе к позитивам.

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

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

Нам нужно найти подмножество тех, которые наиболее похожи на те, которые подали заявку на карту лояльности в первой группе, чтобы мы могли отправить им предложение подать заявку на программу лояльности.

Это не совсем проблема классификации, потому что мы пытаемся получить экземпляры из группы "негативов".

Это не совсем кластеризация, которая обычно не контролируется, потому что мы уже знаем кластер (карту лояльности).клиенты).

Я думал об использовании kNN.Но я на самом деле не знаю, какие у меня есть варианты.

Я также хотел бы знать, как, если возможно, этого можно достичь с помощью weka или другой библиотеки Java и нужно ли нормализовать все атрибуты.

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

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

Есть две основные идеи (исходя из статьи, которую я привел ниже):

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

  2. Подход машинного обучения: Вы обучаете сеть с автоматическим кодированием на клиентах с данными карты . Авто кодировщик имеет узкое место в своей архитектуре. Он сжимает входные данные в новый вектор объектов с меньшей размерностью и пытается затем восстановить входные данные из этого сжатого вектора. Если обучение выполнено правильно, ошибка восстановления для входных данных, аналогичных клиентам с набором данных карты , должна быть меньше, чем для входных данных, которые не похожи на них (возможно, это клиенты, которым не нужна карта ).

Для начала посмотрите этот урок: https://towardsdatascience.com/how-to-use-machine-learning-for-anomaly-detection-and-condition-monitoring-6742f82900d7

Оба метода потребуют сначала стандартизировать атрибуты.

1 голос
/ 23 мая 2019

И попробуйте одноклассную машину опорных векторов .

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

Или просто используйте расстояния ближайших соседей для ранжирования пользователей.

...