public SlopeOneRecommender( DataModel dataModel, Weighting weighting, Weighting stdDevWeighting, DiffStorage diffStorage) : base(dataModel) { //if (stdDevWeighting != Weighting.WEIGHTED) //Preconditions.checkArgument(stdDevWeighting != Weighting.WEIGHTED || weighting != Weighting.UNWEIGHTED, // "weighted required when stdDevWeighted is set"); //Preconditions.checkArgument(diffStorage != null, "diffStorage is null"); this.weighted = weighting == Weighting.WEIGHTED; this.stdDevWeighted = stdDevWeighting == Weighting.WEIGHTED; this.diffStorage = diffStorage; }
/// <summary> /// <p>Creates a <see cref="taste.Recommender.SlopeOne.SlopeOneRecommender">SlopeOneRecommender</see> based on the given /// <see cref="taste.Model.DataModel">DataModel</see>.</p> /// <p>If <code>weighted</code> is set, acts as a weighted slope one Recommender. /// This implementation also includes an experimental "standard deviation" weighting which weights /// item-item ratings diffs with lower standard deviation more highly, on the theory that they are more /// reliable.</p> /// </summary> /// <param name="dataModel"></param> /// <param name="weighted">if <code>true</code>, acts as a weighted slope one Recommender</param> /// <param name="stdDevWeighted">use optional standard deviation weighting of diffs</param> /// <param name="diffStorage"></param> /// <remarks> /// Throws ArgumentException if <code>diffStorage</code> is null, or stdDevWeighted is set /// when weighted is not set /// </remarks> public SlopeOneRecommender(DataModel dataModel, bool weighted, bool stdDevWeighted, DiffStorage diffStorage) : base(dataModel) { if (stdDevWeighted && !weighted) { throw new ArgumentException("weighted required when stdDevWeighted is set"); } if (diffStorage == null) { throw new ArgumentNullException("diffStorage is null"); } this.weighted = weighted; this.stdDevWeighted = stdDevWeighted; this.diffStorage = diffStorage; }