[英]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都提出了很好的觀點:
檢查其他人如何處理類似問題也很有用:
我不同意史蒂夫說SVM在這里是一個糟糕的選擇,雖然我也認為沒有太多理由認為它會比任何其他判別性學習算法做得更好。
您至少需要考慮設計功能。 這是使機器學習算法在某個問題上運行良好的最重要部分之一。 如果不了解問題,很難知道建議什么。 我想你可以從URL中出現的計數字符n-gram開始作為特征。
沒有人真正知道您需要多少數據才能解決任何特定問題。 一般的方法是獲取一些數據,學習模型,看看是否有更多的訓練數據,重復,直到你沒有得到任何更重要的改進。
內核是一項棘手的業務。 一些SVM庫具有字符串內核,允許您在沒有任何特征提取的情況下訓練字符串(我正在考慮SVMsequel ,可能還有其他的)。 否則,您需要從數據中計算數值或二進制特征,並使用線性,多項式或RBF內核。 嘗試所有這些都沒有壞處,值得花些時間尋找內核參數的最佳設置。 您的數據也顯然是結構化的,讓學習算法嘗試並計算URL的結構是沒有意義的(除非您關心無效的URL)。 您至少應該根據分隔符'/','?','。','='拆分URL。
我不知道你的意思是'保持最新'。 使用您擁有的任何新數據重新訓練模型。
這取決於你使用的庫,在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.