Хорошая техника машинного обучения, чтобы отсеять хорошие URL от плохих - PullRequest
2 голосов
/ 11 марта 2010

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

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, чтобы решить, хорошо это или плохо? Я

Ответы [ 4 ]

6 голосов
/ 12 марта 2010

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

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

Также было бы полезно изучить, как другие люди подошли к подобным проблемам:

  • Ци, Х. и Дэвисон, Б.Д. 2009. Классификация веб-страниц: особенности и алгоритмы . ACM Computing Survey 41, 2 (февраль 2009 г.), 1-31.
  • Кан, М.Ю. и Н.О.Н. Thi (2005). Быстрая классификация веб-страниц с использованием функций URL . В Труды 14-й Международной конференции ACM по управлению информацией и знаниями (CIKM ’05) , Нью-Йорк, Нью-Йорк, стр. 325–326.
  • Деви М.И., Раджарам Р. и Селвакуберан К., 2007 г. Методы машинного обучения для автоматической классификации веб-страниц с использованием функций URL . В Труды международной конференции по вычислительному интеллекту и мультимедийным приложениям (ICCIMA 2007) - Том 02 (13-15 декабря 2007 г.). Вашингтон, округ Колумбия, стр. 116-120.
3 голосов
/ 12 марта 2010
  1. Я не согласен со Стивом, что SVM - плохой выбор, хотя я также не думаю, что есть много причин думать, что он будет работать лучше, чем любой другой дискриминационный алгоритм обучения.

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

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

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

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

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

2 голосов
/ 11 марта 2010

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

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

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

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

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

0 голосов
/ 05 марта 2012

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

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