protected void initialize() { int num3; RandomWrapper wrapper = RandomUtils.getRandom(); this.userVectors = new double[this.dataModel.getNumUsers()][]; this.itemVectors = new double[this.dataModel.getNumItems()][]; double num = this.getAveragePreference(); for (int i = 0; i < this.userVectors.Length; i++) { this.userVectors[i] = new double[this.rank]; this.userVectors[i][0] = num; this.userVectors[i][USER_BIAS_INDEX] = 0.0; this.userVectors[i][ITEM_BIAS_INDEX] = 1.0; num3 = FEATURE_OFFSET; while (num3 < this.rank) { this.userVectors[i][num3] = wrapper.nextGaussian() * NOISE; num3++; } } for (int j = 0; j < this.itemVectors.Length; j++) { this.itemVectors[j] = new double[this.rank]; this.itemVectors[j][0] = 1.0; this.itemVectors[j][USER_BIAS_INDEX] = 1.0; this.itemVectors[j][ITEM_BIAS_INDEX] = 0.0; for (num3 = FEATURE_OFFSET; num3 < this.rank; num3++) { this.itemVectors[j][num3] = wrapper.nextGaussian() * NOISE; } } }
protected void initialize() { RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.GetNumUsers()][]; itemVectors = new double[dataModel.GetNumItems()][]; double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.Length; userIndex++) { userVectors[userIndex] = new double[rank]; 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; } } for (int itemIndex = 0; itemIndex < itemVectors.Length; itemIndex++) { itemVectors[itemIndex] = new double[rank]; 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; } } }
protected override void prepareTraining() { int num; int num2; base.prepareTraining(); RandomWrapper wrapper = RandomUtils.getRandom(); this.p = new double[base.dataModel.getNumUsers()][]; for (num = 0; num < this.p.Length; num++) { this.p[num] = new double[base.numFeatures]; num2 = 0; while (num2 < RatingSGDFactorizer.FEATURE_OFFSET) { this.p[num][num2] = 0.0; num2++; } num2 = RatingSGDFactorizer.FEATURE_OFFSET; while (num2 < base.numFeatures) { this.p[num][num2] = wrapper.nextGaussian() * base.randomNoise; num2++; } } this.y = new double[base.dataModel.getNumItems()][]; for (num = 0; num < this.y.Length; num++) { this.y[num] = new double[base.numFeatures]; num2 = 0; while (num2 < RatingSGDFactorizer.FEATURE_OFFSET) { this.y[num][num2] = 0.0; num2++; } for (num2 = RatingSGDFactorizer.FEATURE_OFFSET; num2 < base.numFeatures; num2++) { this.y[num][num2] = wrapper.nextGaussian() * base.randomNoise; } } this.itemsByUser = new Dictionary <int, List <int> >(); IEnumerator <long> enumerator = base.dataModel.getUserIDs(); while (enumerator.MoveNext()) { long current = enumerator.Current; int num4 = base.userIndex(current); FastIDSet set = base.dataModel.getItemIDsFromUser(current); List <int> list = new List <int>(set.size()); this.itemsByUser[num4] = list; foreach (long num5 in set) { int item = base.itemIndex(num5); list.Add(item); } } }
protected virtual void prepareTraining() { RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.GetNumUsers()][]; //numFeatures itemVectors = new double[dataModel.GetNumItems()][]; double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.Length; userIndex++) { userVectors[userIndex] = new double[numFeatures]; 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] = new double[numFeatures]; 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(); }
protected virtual void prepareTraining() { int num3; RandomWrapper wrapper = RandomUtils.getRandom(); this.userVectors = new double[this.dataModel.getNumUsers()][]; this.itemVectors = new double[this.dataModel.getNumItems()][]; double num = this.getAveragePreference(); for (int i = 0; i < this.userVectors.Length; i++) { this.userVectors[i] = new double[this.numFeatures]; this.userVectors[i][0] = num; this.userVectors[i][USER_BIAS_INDEX] = 0.0; this.userVectors[i][ITEM_BIAS_INDEX] = 1.0; num3 = FEATURE_OFFSET; while (num3 < this.numFeatures) { this.userVectors[i][num3] = wrapper.nextGaussian() * this.randomNoise; num3++; } } for (int j = 0; j < this.itemVectors.Length; j++) { this.itemVectors[j] = new double[this.numFeatures]; this.itemVectors[j][0] = 1.0; this.itemVectors[j][USER_BIAS_INDEX] = 1.0; this.itemVectors[j][ITEM_BIAS_INDEX] = 0.0; for (num3 = FEATURE_OFFSET; num3 < this.numFeatures; num3++) { this.itemVectors[j][num3] = wrapper.nextGaussian() * this.randomNoise; } } this.cachePreferences(); this.shufflePreferences(); }