私はそのようなモデルを持っています(非Hadoop):
DataModel data = new FileDataModel(new File("file.csv"));
UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(dataModel);
userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer(data));
UserNeighborhood userNeighborhood = new NearestNUserNeighborhood(1, userSimilarity, data);
たとえば、userSimilarity は [0,100] の間で正規化されていないため、エンド ユーザーに表示する場合は、次のソリューションを使用します。
long maxSim = userSimilarity.userSimilarity(userId1, userNeighborhood.getUserNeighborhood(userId1)[0]);
long finalSimilarity = Math.min(100, Math.max((int) Math.ceil(100 * userSimilarity.userSimilarity(userId1, userId2) / maxSim), 0))
これでパフォーマンスの問題が発生しました(ユーザーごとにさまざまな秒)。別の可能性、または特定のユーザーごとに min(similarity) = 0 および max(similarity) = 100 にする最も簡単な方法はありますか?