2015年3月29日 星期日

mahout training set for irstats

https://github.com/apache/mahout/blob/master/mrlegacy/src/main/java/org/apache/mahout/cf/taste/GenericRecommenderIRStatsEvaluator.java

130~134行用意在從原始資料集dataModel,
參考用戶標準答案集relevantItemIDs,重新製作一份userID專用的訓練集trainingUsers:

//  建立一個空的喜好容器,容量為資料集所有用戶數,當成初始訓練集trainingUsers

FastByIDMap trainingUsers = new FastByIDMap(dataModel.getNumUsers());
LongPrimitiveIterator it2 = dataModel.getUserIDs();  // 取得資料集所有用戶之列舉器


while (it2.hasNext())
{


   // 就每一列舉用戶it2.nextLong(),從資料集dataModel依下法適當取得喜好,加入訓練集trainingUsers
   //    若遇userID用戶,就只取其所有資料集喜好,扣掉標準答案relevantItemIDs,加入訓練集;
   //    若遇其他用戶,則取其所有資料集喜好,直接加入訓練集;
   // 詳https://github.com/apache/mahout/blob/master/mrlegacy/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRelevantItemsDataSplitter.java


   dataSplitter.processOtherUser(userID, relevantItemIDs, trainingUsers, it2.nextLong(), dataModel);
}