2015-02-23 2 views
-1

Я пытаюсь использовать OneClassSVM в Sklearn для обнаружения извне. Пользователь посещает веб-сайты каждый день, но однажды он посещает веб-сайт, который никогда не посещался раньше. Я хочу поймать этот outlier, используя OneClassSVM. Ниже приведен пример данные:Sklearn One Class SVM

`([[www.makeuseof.com, 
www.kickstater.com, 
www.google.com, 
www.mashable.com` 

Ниже приведен пример данные испытаний

`test_data = ['www.makeuseof.com','www.google.com','www.abc.com',]` 

Я хеширование всех строк, используя питону встроенные в хэшировании библиотеки. abs(hash('string'))

Ожидает возврата -1 для www.abc.com but its -1` для всех.

+0

Покажите нам какой-то код, который терпит неудачу. Я не уверен, что хеширование - лучший способ пойти сюда. – IVlad

ответ

3

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

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

+0

Я думаю, что вы правы, и это то, что я сделал изначально, но после некоторых исследований, которые я нашел, один класс SVM - довольно стандартный способ поиска выбросов. Поэтому я хотел попробовать и посмотреть, как это работает. Что было бы хорошим способом преобразования строки в числовой, чтобы ее можно было использовать при обучении SVM? – Vishal

+0

@Vishal - вы хотите что-то, что будет держать подобные записи близко друг к другу. Для текстовых данных обычно используются преобразования TF-IDF. Но для этого вам нужны настоящие слова, я не думаю, что это будет хорошо работать с URL-адресами веб-сайтов. Для этого вам нужно будет определить сходство между двумя веб-сайтами, которые я действительно не знаю, как это сделать. Я бы сохранил это просто: если вы можете сделать это без машинного обучения, вам нужно. – IVlad

+0

Да, вы правы, TF-IDF не будет работать в этом случае, и для поиска похожих сайтов мне понадобятся данные всей сети, а затем классифицируйте их. Это был трудный путь, но даже я обнаружил, что не должен этого делать используя машинное обучение .. – Vishal

0

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

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

«Если клиент является безработным, в возрасте до 25 лет и не имеют диплом средней школы, его риск кредитного займа увеличивается по умолчанию на 30% по сравнению со всеми клиентами-мужчинами.»

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

«Пользователь посещает страницу, на которой он никогда не посещал раньше».

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

Смежные вопросы