2012-02-17 108 views
1

我試圖做一個公司的訪問權限一些數據挖掘。我試圖根據他們擁有的訪問權將不同的組聚合在一起,然後確定是否有人的訪問受到懷疑,因爲他們的組對等人都沒有訪問權限。我只是在尋找一種算法來幫助我。這幾乎是一個逆推薦系統(即Netflix,亞馬遜)。這裏有一個簡單的例子:檢測異常

Person 1 has access to files A, B, E 
    Person 2 has access to files A, B 
    Person 3 has access to files A, B 
    Person 4 has access to files C, D, E 
    Person 5 has access to files C, D 
    Person 6 has access to files C, D, E 

我希望能夠沒有它(無監督學習)是1-3人及人事4-6是同樣的功能,並有可能在同一組,因爲分類認識到自己的類似的文件訪問(集羣)。之後,我們確定了集羣,那麼WE標誌異常訪問,這是人1文件E.

我試圖尋找到AI4R Ruby庫,而是來到了一個死衚衕。有很多算法可供選擇。我只需要指出正確的方式。謝謝。

+0

怎麼樣一個簡單的GROUP_BY?可能會給你一個概述。 – three 2012-02-17 21:53:00

回答

0

這樣做的一個直接的辦法就是建立每個人的特徵向量,並使用cosine similarity /點積兩者之間的相似性的措施。特徵向量可能類似於(A = 1,B = 0,C = 1 ...)等等。計算時如果數據太稀疏,即訪問選項過多,則最終可能會得到非常低的相似性度量。

您也可以建立的兩個特徵/接入如何彼此相關的引用(特徵)矩陣,即它們是彼此的相似(比如說在0和1之間的值)。當你取加權平均值時,兩個向量之間的相似性度量可能會更聰明一些:Sum(f1,f2)/(nr(f1)* nr(f2))其中f1是特徵/訪問形式person1,f2是來自人2的特徵/訪問。nr(f1)=人1的總特徵,以及人2的總特徵nr(f2)。

現在說你已經測量了每個人與另一個人的關係。現在您可以使用agglomerative clustering策略,該策略將允許您以預定義(意味着您設置此限制)數量的集羣結束。或者,您可以設置關於羣集質心之間最大增量的規則以允許聚集,這可能會使進程在某個不可預知的階段停止(即最終得到未指定數量的羣集)。

這些都是很簡單的策略。特徵矩陣需要領域知識,並且需要時間來構建,特別是如果您有很多特徵/訪問類型。