2010-03-11 1 views
2

У меня есть приложение, которое должно различать хорошие HTTP-запросы GET и плохое.Хорошая техника машинного обучения, чтобы отсеять хорошие URL-адреса от плохого

For example: 

http://somesite.com?passes=dodgy+parameter    # BAD 
http://anothersite.com?passes=a+good+parameter   # GOOD 

My system can make a binary decision about whether or not a URL is good or bad - but ideally I would like it to predict whether or not a previously unseen URL is good or bad. 

http://some-new-site.com?passes=a+really+dodgy+parameter # BAD 

I feel the need for a support vector machine (SVM) ... but I need to learn machine learning. Some questions: 

1) Является ли SVM подходящим для этой задачи? 2) Могу ли я обучать его необработанными URL-адресами? - без явного указания «функций» 3) Сколько URL-адресов мне нужно, чтобы они были хорошими прогнозами? 4) Какое ядро ​​SVM следует использовать? 5) После того, как я тренирую его, как мне его обновлять? 6) Как проверить снова невидимые URL-адреса SVM, чтобы решить, хорошо это или плохо? I

+0

1) Что такое «хороший» URL-адрес против «плохого» URL-адреса? 2) Если вы загрузили необработанные URL-адреса, эти строки были бы функциями - вы бы не избежали выбора объектов так же, как выбранные бесполезные функции (бесполезно, если только вы не выбрали явное строковое ядро ​​в соответствии с наблюдением StompChicken). – user359996

ответ

2

Если я правильно понимаю, вы просто хотите узнать, хороший или плохой URL.

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

Вы хотите, чтобы несколько тысяч URL-адресов идеально подготовили ваш набор данных. Чем больше, тем лучше, очевидно, вы могли бы сделать это всего за 100, но ваши результаты могут не привести к хорошим классификациям.

Я предлагаю вам построить ваш набор данных первого и использовать Weka http://www.cs.waikato.ac.nz/ml/weka/

Вы можете измерить, какой алгоритм дает лучшие результаты.

+1

+1 для Weka. Это позволяет легко попробовать множество подходов, чтобы выяснить, что лучше всего работает. –

+0

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

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

  2. Вам понадобится, по крайней мере, подумать о возможностях проектирования. Это одна из наиболее важных составляющих алгоритмов машинного обучения, которые хорошо работают по определенной проблеме. Трудно понять, что предложить, не зная о проблеме. Я думаю, вы могли бы начать с n-граммов символов count, присутствующих в URL-адресе в качестве функций.

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

  4. Ядра - это сложное дело. В некоторых библиотеках SVM есть строковые ядра, которые позволяют вам тренироваться по строкам без какого-либо извлечения элементов (я думаю о SVMsequel, могут быть и другие). В противном случае вам нужно вычислить числовые или двоичные функции из ваших данных и использовать линейное, многочленное или RBF-ядро. Нет никакого вреда в попытке их всех, и стоит потратить некоторое время на поиск лучших параметров для параметров ядра. Ваши данные также явно структурированы, и нет смысла указывать алгоритм обучения и отображать структуру URL-адресов (если вы не беспокоитесь о недопустимых URL-адресах). Вы должны по крайней мере разделить URL-адрес в соответствии с разделителями '/', '?', '.', '='.

  5. Я не знаю, что вы подразумеваете под «держать его в курсе». Переустановите модель с любыми новыми данными, которые у вас есть.

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

6

Я думаю, что steve и StompChicken и делают отличные точки:

  • Сбор лучший алгоритм сложно, даже для специалистов машинного обучения. Использование a general-purpose package like Weka позволит вам легко сравнить множество различных подходов, чтобы определить, какие из них лучше всего подходят для ваших данных.
  • Выбор хороших функций часто является одним из наиболее важных факторов в том, насколько хорошо будет работать алгоритм обучения.

Это также может быть полезно рассмотреть, как другие люди подходили с подобными проблемами:

  • Qi, Х. и Дэвисон Б. Д. 2009. Web page classification: Features and algorithms. ACM Computing Survey 41, 2 (февраль 2009 г.), 1-31.
  • Kan, M.Y. и H.O.N. Thi (2005). Fast webpage classification using URL features. В Материалы 14-й Международной конференции ACM по управлению информацией и знаниями (CIKM '05), Нью-Йорк, Нью-Йорк, стр. 325-326.
  • Devi, M. I., Rajaram, R., and Selvakuberan, K. 2007. Методы машинного обучения для автоматизированной классификации веб-страниц с использованием функций URL. В Материалы международной конференции по вычислительной разведке и мультимедийным приложениям (ICCIMA 2007) - Том 02 (13 - 15 декабря 2007 г.). Вашингтон, округ Колумбия, стр. 116-120.
+0

+1 Для ссылок на соответствующие статьи, которые не требуют подписки для просмотра. – user359996

0

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

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

  • Нет связанных вопросов^_^