List of usage examples for org.apache.mahout.common RandomWrapper nextGaussian
@Override public double nextGaussian()
From source file:com.predictionmarketing.itemrecommend.CliMF.java
License:Apache License
protected void prepareTraining() throws TasteException { RandomWrapper random = (RandomWrapper) RandomUtils.getRandom(0L); userVectors = new double[dataModel.getNumUsers()][numFeatures]; itemVectors = new double[dataModel.getNumItems()][numFeatures]; LongPrimitiveIterator socialuser = SocialdataModel.getUserIDs(); while (socialuser.hasNext()) { //create social date model idset because user may have no friend ,and it will cause bug long userID = socialuser.nextLong(); SocialIDset.add(userID);/*from w w w. j ava 2s. c om*/ } // double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * randomNoise; } //unit vectorize userVectors[userIndex] = unitvectorize(userVectors[userIndex]); } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * randomNoise; } //unit vectorize itemVectors[itemIndex] = unitvectorize(itemVectors[itemIndex]); } //compute bias try { computeBias(); } catch (TasteException e) { System.out.println("error in bias computing"); } }
From source file:com.predictionmarketing.itemrecommend.RatingSGDFactorizer.java
License:Apache License
protected void prepareTraining() throws TasteException { RandomWrapper random = (RandomWrapper) RandomUtils.getRandom(0L); userVectors = new double[dataModel.getNumUsers()][numFeatures]; itemVectors = new double[dataModel.getNumItems()][numFeatures]; LongPrimitiveIterator socialuser = SocialdataModel.getUserIDs(); while (socialuser.hasNext()) { //create social date model idset because user may have no friend ,and it will cause bug long userID = socialuser.nextLong(); SocialIDset.add(userID);//from w w w . ja v a 2 s . com } double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * randomNoise; } } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * randomNoise; } } //compute bias //user bias double userAverage = 0; double userMax = -Double.MAX_VALUE; double userMin = Double.MAX_VALUE; LongPrimitiveIterator userIDs = dataModel.getUserIDs(); while (userIDs.hasNext()) { long userid = userIDs.nextLong(); double user_sum = 0; for (Preference record : dataModel.getPreferencesFromUser(userid)) { user_sum += record.getValue(); } userAverage += user_sum; userMax = (user_sum > userMax) ? user_sum : userMax; userMin = (user_sum < userMin) ? user_sum : userMin; int userindex = userIndex(userid); userVectors[userindex][USER_BIAS_INDEX] = user_sum; } userAverage /= dataModel.getNumUsers(); double min_dist = userAverage - userMin; double max_dist = userMax - userAverage; double normalize = (min_dist > max_dist) ? min_dist : max_dist; userIDs = dataModel.getUserIDs(); while (userIDs.hasNext()) { long userid = userIDs.nextLong(); int userindex = userIndex(userid); userVectors[userindex][USER_BIAS_INDEX] -= userAverage; userVectors[userindex][USER_BIAS_INDEX] /= normalize; } //item bias double itemAverage = 0; double itemMax = -Double.MAX_VALUE; double itemMin = Double.MAX_VALUE; LongPrimitiveIterator itemIDs = dataModel.getItemIDs(); while (itemIDs.hasNext()) { long itemid = itemIDs.nextLong(); double item_sum = 0; for (Preference record : dataModel.getPreferencesForItem(itemid)) { item_sum += record.getValue(); } itemAverage += item_sum; itemMax = (item_sum > itemMax) ? item_sum : itemMax; itemMin = (item_sum < itemMin) ? item_sum : itemMin; int itemindex = itemIndex(itemid); itemVectors[itemindex][ITEM_BIAS_INDEX] = item_sum; } itemAverage /= dataModel.getNumItems(); min_dist = itemAverage - itemMin; max_dist = itemMax - itemAverage; normalize = (min_dist > max_dist) ? min_dist : max_dist; itemIDs = dataModel.getItemIDs(); while (itemIDs.hasNext()) { long itemid = itemIDs.nextLong(); int itemindex = itemIndex(itemid); itemVectors[itemindex][ITEM_BIAS_INDEX] -= itemAverage; itemVectors[itemindex][ITEM_BIAS_INDEX] /= normalize; } cachePreferences(); shufflePreferences(); }
From source file:com.recsys.factorizer.GSVDPlusPlusFactorizer.java
License:Apache License
protected void prepareTraining() throws TasteException { RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][numFeatures]; itemVectors = new double[dataModel.getNumItems()][numFeatures]; double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item // feature contains // item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * randomNoise; }//from w ww . j a v a 2s . c om } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature // contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user // feature contains // user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * randomNoise; } } cachePreferences(); // Random random = RandomUtils.getRandom(); p = new double[dataModel.getNumUsers()][numFeatures]; for (int i = 0; i < p.length; i++) { for (int feature = 0; feature < FEATURE_OFFSET; feature++) { p[i][feature] = 0; } for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { p[i][feature] = random.nextGaussian() * randomNoise; } } y = new double[dataModel.getNumItems()][numFeatures]; for (int i = 0; i < y.length; i++) { for (int feature = 0; feature < FEATURE_OFFSET; feature++) { y[i][feature] = 0; } for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { y[i][feature] = random.nextGaussian() * randomNoise; } } x = new double[tagIds.size()][numFeatures]; for (int i = 0; i < x.length; i++) { for (int feature = 0; feature < FEATURE_OFFSET; feature++) { x[i][feature] = 0; } for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { x[i][feature] = random.nextGaussian() * randomNoise; } } q = new double[dataModel.getNumItems()][numFeatures]; for (int i = 0; i < q.length; i++) { for (int feature = 0; feature < FEATURE_OFFSET; feature++) { q[i][feature] = 0; } for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { q[i][feature] = random.nextGaussian() * randomNoise; } } /* get internal item IDs which we will need several times */ itemsByUser = Maps.newHashMap(); LongPrimitiveIterator userIDs = dataModel.getUserIDs(); while (userIDs.hasNext()) { long userId = userIDs.nextLong(); int userIndex = userIndex(userId); FastIDSet itemIDsFromUser = dataModel.getItemIDsFromUser(userId); List<Integer> itemIndexes = Lists.newArrayListWithCapacity(itemIDsFromUser.size()); itemsByUser.put(userIndex, itemIndexes); for (long itemID2 : itemIDsFromUser) { int i2 = itemIndex(itemID2); itemIndexes.add(i2); } } }
From source file:org.codelibs.elasticsearch.taste.recommender.svd.ParallelSGDFactorizer.java
License:Apache License
protected void initialize() { final RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][rank]; itemVectors = new double[dataModel.getNumItems()][rank]; final double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * NOISE; }/*from w w w . j a v a 2 s . com*/ } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * NOISE; } } }
From source file:org.codelibs.elasticsearch.taste.recommender.svd.RatingSGDFactorizer.java
License:Apache License
protected void prepareTraining() { final RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][numFeatures]; itemVectors = new double[dataModel.getNumItems()][numFeatures]; final double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * randomNoise; }/*from w w w. j a va 2 s. com*/ } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * randomNoise; } } cachePreferences(); shufflePreferences(); }
From source file:org.gpfvic.mahout.cf.taste.impl.recommender.svd.ParallelSGDFactorizer.java
License:Apache License
protected void initialize() throws TasteException { RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][rank]; itemVectors = new double[dataModel.getNumItems()][rank]; double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * NOISE; }//from w w w . jav a 2 s . co m } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * NOISE; } } }
From source file:org.gpfvic.mahout.cf.taste.impl.recommender.svd.RatingSGDFactorizer.java
License:Apache License
protected void prepareTraining() throws TasteException { RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][numFeatures]; itemVectors = new double[dataModel.getNumItems()][numFeatures]; double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * randomNoise; }// ww w . j av a2s . co m } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < numFeatures; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * randomNoise; } } cachePreferences(); shufflePreferences(); }