2012-02-17 3 views
1

회사의 액세스 권한에 대해 일부 데이터 마이닝을 시도하고 있습니다. 나는 그들이 가지고있는 접근에 따라 서로 다른 그룹을 함께 클러스터링하려고 시도하고있다. 그런 다음 그룹 피어 중 누구도 액세스 할 수 없기 때문에 다른 사람의 액세스가 용의성이 있는지 판단한다. 나는 이것으로 나를 도울 수있는 알고리즘을 찾고있다. 거의 반전 추천 시스템입니다 (예 : Netflix, Amazon). 다음은 간단한 예제 :사용자 액세스 권한의 이상 감지

내가 (자율 학습) 사람 1-3 명 4-6 유사 기능이며, 때문에, 같은 그룹에 가능성이 있음을 분류하지 않고 인식 할 수 있도록하려면
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 

자신의 비슷한 파일 액세스 (클러스터링). 클러스터를 확인한 후에 파일 E가있는 사람 1 인 비정상적인 액세스를 플래그로 지정합니다.

AI4R 루비 라이브러리를 조사하려고했지만 막 다른 방향으로 왔습니다. 선택할 수있는 알고리즘이 너무 많습니다. 나는 그저 올바른 길을 가리킬 필요가 있습니다. 감사.

+0

간단한 group_by는 어떨까요? 당신에게 개요를 줄 수 있습니다. – three

답변

0

이 작업을 수행하는 직접적인 방법은 각 사람에 대한 특징 벡터를 작성하고 두 사람 사이의 유사성 측정 값으로 cosine similarity/내적을 사용하는 것입니다. 특징 벡터는 (A = 1, B = 0, C = 1 ...) 등등이 될 것입니다. 계산할 때 데이터가 너무 희박하므로 액세스 옵션이 너무 많으면 유사성 측정 값이 매우 낮아질 수 있습니다.

두 기능/액세스가 서로 얼마나 유사한 지, 즉 서로가 얼마나 비슷한 지 (0에서 1 사이의 값)라는 참조 (기능) 행렬을 작성할 수도 있습니다. Sum (f1, f2)/(nr (f1) * nr (f2)) 여기서 f1은 지형지 물/액세스 형식 person 1이고 f2는 지형지 물입니다. 사람 2의 기능/액세스입니다. nr (f1) = 사람 1의 전체 기능 및 사람 2의 전체 기능 nr (f2)

이제 각 사람이 다른 사람과 어떤 관계가 있는지 측정 할 수 있습니다. 이제 agglomerative clustering 전략을 사용할 수 있습니다.이 전략을 사용하면 미리 정의 된 (이 제한을 설정한다는 의미의) 클러스터 수로 끝날 수 있습니다. 또는 클러스터의 중심 사이의 최대 델타에 대한 규칙을 설정하여 응집을 허용 할 수 있습니다. 이로 인해 예측할 수없는 단계에서 프로세스가 중단 될 수 있습니다 (예 : 불특정 다수의 클러스터로 끝남).

이것은 매우 간단한 전략입니다. 기능 매트릭스에는 도메인 지식이 필요하며 많은 기능/액세스 유형이있는 경우 특히 구축하는 데 시간이 걸립니다.