List of usage examples for org.apache.mahout.cf.taste.impl.neighborhood NearestNUserNeighborhood NearestNUserNeighborhood
public NearestNUserNeighborhood(int n, double minSimilarity, UserSimilarity userSimilarity, DataModel dataModel, double samplingRate) throws TasteException
From source file:com.buddycloud.channeldirectory.search.handler.common.mahout.ChannelRecommender.java
License:Apache License
public ChannelRecommender(Properties properties) throws TasteException { this.recommenderDataModel = createDataModel(properties); DataModel dataModel = recommenderDataModel.getDataModel(); UserSimilarity userSimilarity = new CachingUserSimilarity(new LogLikelihoodSimilarity(dataModel), MAX_CACHE_SIZE);/*from www. j av a2 s . c o m*/ this.userNeighborhood = new NearestNUserNeighborhood(10, Double.NEGATIVE_INFINITY, userSimilarity, dataModel, 1.0); this.userRecommender = new GenericBooleanPrefUserBasedRecommender(dataModel, userNeighborhood, userSimilarity); this.itemSimilarity = new LogLikelihoodSimilarity(dataModel); }
From source file:edu.uci.ics.sourcerer.ml.ApiRecommender.java
License:Open Source License
public ApiRecommender(DataModel bcModel) throws TasteException { // UserSimilarity similarity = new EuclideanDistanceSimilarity(bcModel,Weighting.WEIGHTED); // UserSimilarity similarity = new LogLikelihoodSimilarity(bcModel); //UserSimilarity similarity = new PearsonCorrelationSimilarity(bcModel); UserSimilarity similarity = new TanimotoCoefficientSimilarity(bcModel); // UserSimilarity similarity = new MySqlTanimotoCoefficientUserSimilarity( // ManualPoolingMysqlDataSourceFactory.getDataSource( // "jdbc:mysql://mondego.calit2.uci.edu:3307/sourcerer_test", // "sourcerer", // "")); // UserSimilarity similarity = new HammingDistanceSimilarity(bcModel); UserNeighborhood neighborhood = new NearestNUserNeighborhood(15, 0.4, similarity, bcModel, 1.0); recommender = new CachingRecommender(new GenericUserBasedRecommender(bcModel, neighborhood, similarity)); }
From source file:org.easyrec.plugin.mahout.MahoutBooleanGenerator.java
License:Open Source License
@Override protected void doExecute(ExecutionControl executionControl, MahoutBooleanGeneratorStats stats) throws Exception { // when doExecute() is called, the generator has been initialized with the configuration we should use Date execution = new Date(); MahoutBooleanGeneratorConfig config = getConfiguration(); TypeMappingService typeMappingService = (TypeMappingService) super.getTypeMappingService(); ItemAssocService itemAssocService = getItemAssocService(); executionControl.updateProgress("initialize DataModel"); DataModel easyrecDataModel = new EasyrecDataModel(config.getTenantId(), typeMappingService.getIdOfActionType(config.getTenantId(), config.getActionType()), false, mahoutDataModelMappingDAO);//w w w.j ava 2s. c om if (config.getCacheDataInMemory() == 1) { executionControl.updateProgress("initialize EasyrecInMemoryDataModel"); easyrecDataModel = new EasyrecInMemoryDataModel(easyrecDataModel); } /*TanimotoCoefficientSimilarity is intended for "binary" data sets where a user either expresses a generic "yes" preference for an item or has no preference.*/ UserSimilarity userSimilarity = null; switch (config.getUserSimilarityMethod()) { case 1: executionControl.updateProgress("using LogLikelihoodSimilarity as UserSimilarity"); userSimilarity = new LogLikelihoodSimilarity(easyrecDataModel); break; case 2: executionControl.updateProgress("using TanimotoCoefficientSimilarity as UserSimilarity"); userSimilarity = new TanimotoCoefficientSimilarity(easyrecDataModel); break; case 3: executionControl.updateProgress("using SpearmanCorrelationSimilarity as UserSimilarity"); userSimilarity = new SpearmanCorrelationSimilarity(easyrecDataModel); break; case 4: executionControl.updateProgress("using CityBlockSimilarity as UserSimilarity"); userSimilarity = new CityBlockSimilarity(easyrecDataModel); break; } /*ThresholdUserNeighborhood is preferred in situations where we go in for a similarity measure between neighbors and not any number*/ UserNeighborhood neighborhood = null; Double userNeighborhoodSamplingRate = config.getUserNeighborhoodSamplingRate(); Double neighborhoodThreshold = config.getUserNeighborhoodThreshold(); int neighborhoodSize = config.getUserNeighborhoodSize(); double userNeighborhoodMinSimilarity = config.getUserNeighborhoodMinSimilarity(); switch (config.getUserNeighborhoodMethod()) { case 1: executionControl.updateProgress("using ThresholdUserNeighborhood as UserNeighborhood"); neighborhood = new ThresholdUserNeighborhood(neighborhoodThreshold, userSimilarity, easyrecDataModel, userNeighborhoodSamplingRate); break; case 2: executionControl.updateProgress("using NearestNUserNeighborhood as UserNeighborhood"); neighborhood = new NearestNUserNeighborhood(neighborhoodSize, userNeighborhoodMinSimilarity, userSimilarity, easyrecDataModel, userNeighborhoodSamplingRate); break; } /*GenericBooleanPrefUserBasedRecommender is appropriate for use when no notion of preference value exists in the data. */ executionControl.updateProgress("using GenericBooleanPrefUserBasedRecommender as Recommender"); Recommender recommender = new GenericBooleanPrefUserBasedRecommender(easyrecDataModel, neighborhood, userSimilarity); itemTypeDAO.insertOrUpdate(config.getTenantId(), "USER", true); Integer assocType = typeMappingService.getIdOfAssocType(config.getTenantId(), config.getAssociationType()); Integer userType = typeMappingService.getIdOfItemType(config.getTenantId(), "USER"); Integer sourceType = typeMappingService.getIdOfSourceType(config.getTenantId(), getId().toString()); Integer viewType = typeMappingService.getIdOfViewType(config.getTenantId(), config.getViewType()); stats.setNumberOfItems(easyrecDataModel.getNumItems()); int totalSteps = easyrecDataModel.getNumUsers(); int currentStep = 1; for (LongPrimitiveIterator it = easyrecDataModel.getUserIDs(); it.hasNext() && !executionControl.isAbortRequested();) { executionControl.updateProgress(currentStep++, totalSteps, "Saving Recommendations..."); long userId = it.nextLong(); List<RecommendedItem> recommendations = recommender.recommend(userId, config.getNumberOfRecs()); if (recommendations.isEmpty()) { logger.debug("User " + userId + " : no recommendations"); } // print the list of recommendations for each for (RecommendedItem recommendedItem : recommendations) { logger.debug("User " + userId + " : " + recommendedItem); Integer itemToId = (int) recommendedItem.getItemID(); Integer itemToType = itemDAO.getItemTypeIdOfItem(config.getTenantId(), itemToId); ItemVO<Integer, Integer> fromItem = new ItemVO<Integer, Integer>(config.getTenantId(), (int) userId, userType); Double recommendationStrength = (double) recommendedItem.getValue(); ItemVO<Integer, Integer> toItem = new ItemVO<Integer, Integer>(config.getTenantId(), itemToId, itemToType); ItemAssocVO<Integer, Integer> itemAssoc = new ItemAssocVO<Integer, Integer>(config.getTenantId(), fromItem, assocType, recommendationStrength, toItem, sourceType, "Mahout Boolean Generator", viewType, null, execution); itemAssocService.insertOrUpdateItemAssoc(itemAssoc); stats.incNumberOfRulesCreated(); } } }
From source file:org.zaizi.mahout.config.ClassNameNeighborHoodConfiguration.java
License:Open Source License
public UserNeighborhood getNeighborhood(DataModel dataModel, UserSimilarity userSimilarity) throws TasteException { UserNeighborhood neighborhood = null; if (ThresholdUserNeighborhood.class.getName().equals(neighborHoodClassName)) { if (samplingRate > 0d) { neighborhood = new ThresholdUserNeighborhood(threshold, userSimilarity, dataModel, samplingRate); } else {/*from w w w . j a v a 2 s. co m*/ neighborhood = new ThresholdUserNeighborhood(threshold, userSimilarity, dataModel); } } else { if (samplingRate > 0d) { neighborhood = new NearestNUserNeighborhood(neighborhoodSize, minSimilarity, userSimilarity, dataModel, samplingRate); } else { neighborhood = new NearestNUserNeighborhood(neighborhoodSize, minSimilarity, userSimilarity, dataModel); } } return new CachingUserNeighborhood(neighborhood, dataModel); }
From source file:services.CrossingRecommender.java
License:Apache License
public CrossingRecommender(DataModel bcModel) throws TasteException { UserSimilarity similarity = new CachingUserSimilarity(new EuclideanDistanceSimilarity(bcModel), bcModel); UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, 0.2, similarity, bcModel, 0.2); recommender = new GenericUserBasedRecommender(bcModel, neighborhood, similarity); }