1

사용자 - 항목 매트릭스의 사용자가 데이터베이스의 전체 사용자 중 선택된 일부인 일종의 사용자 - 사용자 협업 필터링을 수행하고자합니다. 이러한 선택된 사용자는 새로 선택된 사용자 기본 설정으로 정기적으로 새로 고쳐집니다. 새로운 사용자를 매트릭스에 추가해서는 안됩니다. 새로운 사용자의 경우, 선호도에 따라 사용자 항목 매트릭스 (사용자 중 일부만 선택)에서 항목을 추천해야합니다. 새로운 익명 사용자를 매트릭스에 추가하고 싶지 않습니다.사용자 사용자 협업 필터링을위한 모델 생성

Mahout에서 탐험했지만 도움이 필요합니다. Mahout의 Recommender 클래스는 user_id를 인수로 취하는 권장 (...) 메소드를 제공합니다. 이것은 내가 원하지 않는 것입니다. 이 방법은 환경 설정을 받아 들여야하며 모델을 기반으로 항목을 권장해야합니다. Mahout에서 그것을하는 방법 ?? PlusAnonymousUserDataModel을 사용할 수 있습니까 ??

그렇지 않으면 코끼리 조련사, 다른 도구는이 작업을 수행 할 수있는 ...

나는 정상적인 사용과 권고 사항이있는 사용자에 대한 권장 사항을 제공하지 않습니다 PlusAnonymousUserDataModel에 사용되는 코드 ..

DataModel model = new GenericBooleanPrefDataModel(GenericBooleanPrefDataModel.toDataMap(new FileDataModel(f))); 
    TanimotoCoefficientSimilarity similarity = new TanimotoCoefficientSimilarity(model); 
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(1000, similarity, model); 
    new_user_preferences = { ... } // new user items.. 
    DataModel plusmodel = new PlusAnonymousUserDataModel(model); 
    PreferenceArray anonymousPrefs = new GenericUserPreferenceArray(new_user_preference.length); 
    anonymousPrefs.setUserID(0, PlusAnonymousUserDataModel.TEMP_USER_ID); 
    for(int i = 0;i < new_user_preference.length;i++) 
    { 
     anonymousPrefs.setItemID(i, new_user_preference[i]); 
    } 
    PlusAnonymousUserDataModel plusAnonymousModel = (PlusAnonymousUserDataModel) plusmodel; 
    Recommender recommender1 = new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity); 
    plusAnonymousModel.setTempPrefs(anonymousPrefs); 
    List<RecommendedItem> recommendations1 = recommender1.recommend(plusAnonymousModel.TEMP_USER_ID, 10); 

코드에 문제가 있습니까?

답변

1

sravan_kumar, 당신은 plusAnonymousModel 3의 장소로 model를 교체하는 경우 :
TanimotoCoefficientSimilarity 유사성 = 새로운 TanimotoCoefficientSimilarity (plusAnonymousModel);
UserNeighborhood 인접 = 새로운 NearestNUserNeighborhood (1000, 유사도, plusAnonymousModel);
추천인 recommender1 = 새로운 GenericBooleanPrefUserBasedRecommender (plusAnonymousModel, 인접, 유사성);

단지 모델을 초기화 한 후, plusAnonymousModel에게 권리를 초기화 :
PlusAnonymousUserDataModel plusAnonymousModel = 새로운 PlusAnonymousUserDataModel (모델);
(사용할 때 plusmodel 변수가 필요 없음)
, 원하는 결과를 얻을 수 있습니다!

또한, 우리는 PlusAnonymousUserDataModel를 사용하는 경우 여러 스레드가 동시에 추천인에 액세스 할 수 BooleanUserPreferenceArray :

2

예, PlusAnonymousUserDataModel은 Mahout에서 원하는 것과 가장 유사한 것입니다. 약간의 반창고지만 작동합니다.

+0

GenericUserPreferenceArray을 변경 ?? –

+0

스레드로부터 안전하지만 거기에 추가로 하위 클래스가 있습니다. –

+0

답장을 보내 주셔서 감사합니다. 하위 클래스 및 사용 방법을 자세히 설명해 주실 수 있습니까? PlusAnonymousUserDataModel 클래스가 새 사용자의 환경 설정으로 행렬을 수정합니까 ?? –