繁体   English   中英

一种很好的机器学习技术,可以清除坏的好URL

[英]A good machine learning technique to weed out good URLs from bad

我有一个应用程序需要区分良好的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)我需要多少个网址来擅长预测? 4)我应该使用什么样的SVM内核? 5)训练完毕后,如何保持最新状态? 6)如何再次测试看不见的URL以确定它是好还是坏? 一世

我认为史蒂夫StompChicken都提出了很好的观点:

  • 即使对于机器学习专家来说, 选择最佳算法也很棘手 使用像Weka这样的通用软件包可以让您轻松地比较一系列不同的方法,以确定哪种方法最适合您的数据。
  • 选择好的功能通常是学习算法运行良好程度的最重要因素之一。

检查其他人如何处理类似问题也很有用:

  • Qi,X。和Davison,BD 2009. 网页分类:特征和算法 ACM计算调查41,2(2009年2月),1-31。
  • Kan,MY和HON Thi(2005)。 使用URL功能进行快速网页分类 第14届ACM国际信息与知识管理会议论文集(CIKM '05) ,纽约,纽约,第325-326页。
  • Devi,MI,Rajaram,R。和Selvakuberan,K。2007. 使用URL功能进行自动网页分类的机器学习技术 计算机智能和多媒体应用国际会议论文集(ICCIMA 2007) - 第02卷 (2007年12月13日至15日)。 华盛顿特区,第116-120页。
  1. 我不同意史蒂夫说SVM在这里是一个糟糕的选择,虽然我也认为没有太多理由认为它会比任何其他判别性学习算法做得更好。

  2. 您至少需要考虑设计功能。 这是使机器学习算法在某个问题上运行良好的最重要部分之一。 如果不了解问题,很难知道建议什么。 我想你可以从URL中出现的计数字符n-gram开始作为特征。

  3. 没有人真正知道您需要多少数据才能解决任何特定问题。 一般的方法是获取一些数据,学习模型,看看是否有更多的训练数据,重复,直到你没有得到任何更重要的改进。

  4. 内核是一项棘手的业务。 一些SVM库具有字符串内核,允许您在没有任何特征提取的情况下训练字符串(我正在考虑SVMsequel ,可能还有其他的)。 否则,您需要从数据中计算数值或二进制特征,并使用线性,多项式或RBF内核。 尝试所有这些都没有坏处,值得花些时间寻找内核参数的最佳设置。 您的数据也显然是结构化的,让学习算法尝试并计算URL的结构是没有意义的(除非您关心无效的URL)。 您至少应该根据分隔符'/','?','。','='拆分URL。

  5. 我不知道你的意思是'保持最新'。 使用您拥有的任何新数据重新训练模型。

  6. 这取决于你使用的库,在svmlight中有一个名为svm_classify的程序,它接受一个模型和一个例子,并给你一个类标签(好的或坏的)。 我相信在任何图书馆都可以直截了当地做。

如果我理解正确,您只想了解URL是好还是坏。

SVM不合适,只有当数据集非常复杂并且许多信息点靠近超平面时,SVM才适用。 您将使用SVM为数据添加额外的维度。

理想情况下,您需要几千个URL来训练您的数据集。 越多越好,显然你可以只用100做,但你的结果可能不会产生良好的分类。

我建议你先建立你的数据集并使用Weka http://www.cs.waikato.ac.nz/ml/weka/

您可以测量哪种算法可以获得最佳结果。

你将用什么数据集进行训练,如果你有一个好的数据集,SVM会做得很好我相信有一个好的惩罚因子。 如果没有数据集,我建议使用在线算法,如kNN甚至感知器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM