Example usage for org.apache.mahout.common RandomWrapper nextGaussian

List of usage examples for org.apache.mahout.common RandomWrapper nextGaussian

Introduction

In this page you can find the example usage for org.apache.mahout.common RandomWrapper nextGaussian.

Prototype

@Override
    public double nextGaussian() 

Source Link

Usage

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();
}