2015-02-23 125 views
-1

我想在Sklearn使用OneClassSVM的異常檢測。 用戶每天都會訪問網站,但有一天他會訪問一個以前從未訪問過的網站。我想用OneClassSVM來捕捉這個異常值。下面是一個簡單的數據:Sklearn一類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'))

我期待它爲www.abc.com but its -1`返回-1

+0

向我們展示一些失敗的代碼。我不確定哈希是去這裏的最佳方式。 – IVlad 2015-02-23 20:06:29

回答

3

也有可能存在一些執行錯誤,但總的來說,我認爲散列會導致您的數據散佈太多,所以基本的散列不會讓您在此情況下準確地預測異常值,因爲一切都將如此遙遠從所有其他方面來看,好吧,一切都會變得異常。

對於你的任務,我不知道爲什麼你甚至需要機器學習。使用存儲訪問過的網站的字典,當你得到一個新的網站時,檢查它是否在字典中。快速,高效和簡單。

+0

我認爲你是對的,這是我最初做的,但經過一些研究後,我發現一類SVM是一種非常標準的異常值檢測方法。所以我想嘗試看看它是如何工作的。將字符串轉換爲數字以便在訓練SVM時可以使用什麼方法? – Vishal 2015-02-23 20:45:35

+0

@Vishal - 你想要的東西,將保持類似的條目靠得很近。對於文本數據,通常使用TF-IDF轉換。但你需要真實的話,我不認爲它會適用於網站的網址。爲此,您需要定義兩個網站之間的相似度,我並不知道該如何做。我會保持簡單:如果你沒有機器學習就可以做到,你應該。 – IVlad 2015-02-23 20:49:30

+0

是啊你是對的TF-IDF不會在這種情況下工作,並找到類似的網站,我將需要整個網絡的數據,然後分類..這是一個艱難的方式,但即使我發現我不應該這樣做使用機器學習.. – Vishal 2015-02-23 21:02:00

0

這裏簡短的解釋,爲什麼你不應該使用機器學習方法:

這不是一個機器學習任務。實質上,機器學習用於從嘈雜的數據中學習未知模式。這是非確定性的過程。 這種模式的一個例子是

「如果客戶是失業的25歲以下,沒有高中文憑,他的信用貸款違約的風險增加了30%,比所有的男性顧客。​​」

在你的情況下,模式是已知的,可以描述爲

「用戶訪問之前他從未涉足過的網頁」。

這是一個確定性模式,因此您不應該在這裏使用機器學習方法。