/// protected override void InitModel() { base.InitModel(); user_factors = null; item_factors = null; p = new Matrix <float> (MaxUserID + 1, NumFactors); p.InitNormal(InitMean, InitStdDev); y = new Matrix <float> (MaxItemID + 1, NumFactors); y.InitNormal(InitMean, InitStdDev); x = new Matrix <float> (item_attributes.NumberOfColumns, NumFactors); x.InitNormal(InitMean, InitStdDev); q = new Matrix <float> (MaxItemID + 1, NumFactors); q.InitNormal(InitMean, InitStdDev); int num_attributes = item_attributes.NumberOfColumns; x_reg = new float[num_attributes]; for (int attribute_id = 0; attribute_id < num_attributes; attribute_id++) { x_reg [attribute_id] = FrequencyRegularization? (RegX / (float)(1 + Math.Exp(-0.005 * item_attributes.NumEntriesByColumn(attribute_id)))) : RegX; } y_reg = new float[MaxItemID + 1]; for (int item_id = 0; item_id <= MaxItemID; item_id++) { var feedback_count_by_item = Feedback.ItemMatrix [item_id]; if (feedback_count_by_item.Count > 0) { y_reg [item_id] = FrequencyRegularization ? (float)(RegY / Math.Sqrt(feedback_count_by_item.Count)) : RegY; } else { y_reg [item_id] = 0; } } Console.Write("Learning attributes..."); BPRLinear learnAttr = new BPRLinear(); learnAttr.Feedback = Feedback; learnAttr.ItemAttributes = item_attributes; learnAttr.NumIter = NumIter; //10; learnAttr.LearnRate = LearnRate; //0.05f; learnAttr.Regularization = 0.015f; //0.001f; learnAttr.Train(); item_attribute_weight_by_user = learnAttr.ItemAttributeWeights; learnAttr = null; Console.WriteLine("Done"); }
/// protected override void InitModel() { base.InitModel(); user_factors = null; item_factors = null; p = new Matrix <float> (MaxUserID + 1, NumFactors); p.InitNormal(InitMean, InitStdDev); q = new Matrix <float> (MaxItemID + 1, NumFactors); q.InitNormal(InitMean, InitStdDev); Console.Write("Learning attributes..."); BPRLinear learnAttr = new BPRLinear(); learnAttr.Feedback = Feedback; learnAttr.ItemAttributes = item_attributes; learnAttr.NumIter = NumIter; //10; learnAttr.LearnRate = LearnRate; //0.05f; learnAttr.Regularization = 0.015f; //0.001f; learnAttr.Train(); item_attribute_weight_by_user = learnAttr.ItemAttributeWeights; learnAttr = null; Console.WriteLine("Done"); }
/// protected override void InitModel() { base.InitModel (); user_factors = null; item_factors = null; p = new Matrix<float> (MaxUserID + 1, NumFactors); p.InitNormal (InitMean, InitStdDev); y = new Matrix<float> (MaxItemID + 1, NumFactors); y.InitNormal (InitMean, InitStdDev); x = new Matrix<float> (item_attributes.NumberOfColumns, NumFactors); x.InitNormal (InitMean, InitStdDev); q = new Matrix<float> (MaxItemID + 1, NumFactors); q.InitNormal (InitMean, InitStdDev); int num_attributes = item_attributes.NumberOfColumns; x_reg = new float[num_attributes]; for (int attribute_id = 0; attribute_id < num_attributes; attribute_id++) x_reg [attribute_id] = FrequencyRegularization? (RegX / (float)(1 + Math.Exp(-0.005*item_attributes.NumEntriesByColumn (attribute_id)))) : RegX; y_reg = new float[MaxItemID + 1]; for (int item_id = 0; item_id <= MaxItemID; item_id++) { var feedback_count_by_item = Feedback.ItemMatrix [item_id]; if (feedback_count_by_item.Count > 0) y_reg [item_id] = FrequencyRegularization ? (float)(RegY / Math.Sqrt (feedback_count_by_item.Count)) : RegY; else y_reg [item_id] = 0; } Console.Write("Learning attributes..."); BPRLinear learnAttr = new BPRLinear(); learnAttr.Feedback = Feedback; learnAttr.ItemAttributes = item_attributes; learnAttr.NumIter = NumIter;//10; learnAttr.LearnRate = LearnRate;//0.05f; learnAttr.Regularization = 0.015f;//0.001f; learnAttr.Train(); item_attribute_weight_by_user = learnAttr.ItemAttributeWeights; learnAttr = null; Console.WriteLine ("Done"); }
/// protected override void InitModel() { base.InitModel (); user_factors = null; item_factors = null; p = new Matrix<float> (MaxUserID + 1, NumFactors); p.InitNormal (InitMean, InitStdDev); q = new Matrix<float> (MaxItemID + 1, NumFactors); q.InitNormal (InitMean, InitStdDev); Console.Write("Learning attributes..."); BPRLinear learnAttr = new BPRLinear(); learnAttr.Feedback = Feedback; learnAttr.ItemAttributes = item_attributes; learnAttr.NumIter = NumIter;//10; learnAttr.LearnRate = LearnRate;//0.05f; learnAttr.Regularization = 0.015f;//0.001f; learnAttr.Train(); item_attribute_weight_by_user = learnAttr.ItemAttributeWeights; learnAttr = null; Console.WriteLine ("Done"); }