كيفية الحصول على تفضيلات المستخدم في نموذج بيانات mahout
-
21-12-2019 - |
سؤال
أحاول تجربة mahout وأتساءل عن نموذج بيانات الإدخال
للنسخة غير الموزعة
يجب أن يتبع نموذج بيانات الملف ما يلي:userId ، itemId ، userPreference المشكلة هل لا أملك قيم تفضيلات المستخدم هذه ، يجب أن تتمثل في أن يكون لها أي طريقة للقيام بذلك؟
لقد وجدت مقالا http://www.codeproject.com/Articles/620717/Building-A-Recommendation-Engine-Machine-Learningيبدو أن المؤلف لم يكن لديه حقًا قيم تفضيلات المستخدم، لكنه استخدمها org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURRENCE
للحساب من {userId ، QuestionId} من ما يمكنني قوله ، يبدو أن Mahout يحسب قيم perference من البيانات ثم حساب التوصية ، هل أنا تصحح في هذه الحالة؟
المحلول
إذا لم تكن لديك قيم تفضيلات المستخدم، فربما لا تحتاج إليها.يقدم Mahout تطبيقًا للتوصية بالعناصر للمستخدمين دون وجود قيم تفضيلية.هذا يسمي التفضيلات المنطقية. في الأساس، أنت تعرف أن بعض المستخدمين يحبون بعض العناصر، لكنك لا تعرف مقدار إعجابهم بها.في بعض الأحيان يكون هذا جيدًا.
فيما يلي نموذج للتعليمات البرمجية لكيفية القيام بذلك.في الأساس، يختلف السطر الأول فقط، حيث تخبر أن نموذج البيانات الخاص بك من النوع BooleanPrefDataModel
.ثم باستخدام البيانات المنطقية، يمكنك استخدام نوعين من مقاييس التشابه:سجل التشابه, TanimotoCoefficientSimilarity
.يمكن استخدام كلاهما لحساب التوصيات المستندة إلى المستخدم والقائمة على العناصر.
DataModel model = new GenericBooleanPrefDataModel( GenericBooleanPrefDataModel.toDataMap( new FileDataModel(new File("FILE_NAME"))));
UserSimilarity similarity = new LogLikelihoodSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model);
Reecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
List<RecommendedItem> recommendations = recommender.recommend(1, 10);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
البديل الآخر هو حساب قيم التفضيلات خارج mahout وتغذية نموذج البيانات في بعض الخوارزميات الأخرى المستندة إلى المستخدم أو العنصر.لكن على حد علمي، لا يقدم برنامج mahout إمكانية تنفيذ قيم تفضيلات الحوسبة.
نصائح أخرى
يمكنك تحديد قيمة التفضيل لنموذج البيانات الخاص بك (لكن ذلك يعتمد على نموذج البيانات الخاص بك).على سبيل المثال، عناصر نموذج البيانات الخاصة بك هي مسارات يستمع إليها المستخدمون.يمكن تحديد قيمة التفضيلات بحيث يستمع المستخدم 1 إلى المسارA x مرات.وبالتالي، يجب تحديد قيمة التفضيلات لنموذج البيانات لكل زوج فريد من نوعه من معرف المستخدم والعنصر.
مثال لنموذج البيانات:
معرف المستخدم، itemid، التفضيلات
1،1،3 - 1،2،5 - ....- 5،1،2 ...قريباً.