Permalink
Fetching contributors…
Cannot retrieve contributors at this time
1456 lines (1418 sloc) 68.8 KB
3.13 2017-??-??:
recommenders:
- IIterativeModel: get rid of ComputeObjective() -- not used
- remove LatentFeatureLogLinearModel -- implementation was never complete
hyperparameter search:
- do not explore negative values of hyperparameters
3.12 2016-12-30
recommenders:
- #457: add bigram association rules recommender (Dimitris Paraschakis)
- SoftMarginBPRMF: speed up -- only update if there is a ranking violation
- remove the recommenders that were marked as obsolete 1 year ago
command-line tools:
- more robust specification of evaluation metrics (Julien Verplanken)
evaluation:
- #464: fix fit computation in cross-validation (Dominik Imrich)
- #465: fix randomization in cross-validation for rating prediction (NEBabylon)
documentation
- improved documentation, e.g. updated literature pointers
- API documentation with properly rendered diamond inheritance
misc
- We now use Travis CI for continuous integration.
- test item recommenders a bit more thoroughly
- split up MovieLens download scripts
- #469: fix ignore_first_line bug in ItemData.cs (Jordan Silva)
- remove SequentialDiversification
- upgrade to C5 2.4 and MathNet.Numerics 3.15
3.11 2015-12-31
recommenders
- fix incremental update bug (user vs. item ID confusion) for item
recommendation ItemKNN (pull request by Jessica Tölke)
- get rid of recommender BPRLinear
- mark (Weighted)Ensemble, (BiPolar)SlopeOne, GridSearch, CoClustering,
FactorWiseMatrixFactorization, NaiveBayes as obsolete
correlations
- #453: add RatingCosine (Nicolas Hug)
misc
- #440: fix MovieLens 10M URL (pull request by Greg Najda)
- #448: fix misleading documentation in Eval.CandidateItems (Chris
Newell)
- mark SequentialDiversification as obsolete
- remove GUI demo
- remove Perl6, Python, and Ruby examples
3.10 2013-09-23
recommenders
- BPRMF: init random number generator in LoadModel() (pull request by
KwangSeob Kim)
command-line tools
- write out final predictions after last iteration with --find-iter
(reported by Tobias Lang)
- item recommendation: prevent NPE with --find-iter when --test-file
nor test-ratio is specified (reported by Tobias Lang)
- rating prediction: prevent NPE when --test-file=FILE not specified
(reported by Roberto Abalde)
- support writing predictions to stdout on Unix (requested by GitHub
user jkleint)
data structures
- fix bug in SparseMatrix.Resize() (reported by GitHub user
guoguibing)
IO
- RatingData.cs: add missing param ignore_first_line to method call
(reported by GitHub user guoguibing)
evaluation
- avoid null reference for cold-start users (pull request by KwangSeob
Kim)
- #425: Randomize ordering of candidate_items in ItemRecommender
evaluations (reported by Chris Newell)
3.09 2013-06-22
command-line tools
- make sure that --online-evaluation is used together with either
--test-file, --test-ratio, or --cross-validation; make sure it is
not combined with --find-iter; make sure that --find-iter has
something to evaluate on (based on a report by Lina Weichbrodt)
- move more CheckParameter() code to the common CommandLineProgram
class
misc
- #413: Add missing reference to System.Data (Roland Richter)
- make MyMediaLite.Random a true (per-thread) singleton
3.08 2013-04-15
recommenders
- #400: cut ratings to allowed range for SlopeOne (reported by Simon
Dooms)
- WRMF:
- support incremental training
- reduce training time by about 50%, by explointing symmmetry and by
reducing the number of multiplications
- BPRMF:
- avoid duplicate calls to UpdateUser() and UpdateItem() during
incremental updates
- set item bias to zero in RemoveItem()
- move some incremental update functionality to class MF
- fix fold-in learning
- ItemRecommendation.KNN: actually support Weighted property
- BPRLinear, BPRSLIM: remove obsolete fast sampling
- remove CLiMF, as the implementation was never complete nor working
- remove BPRMF_Mapping (incomplete implementation)
- remove ItemAttributeSVM
command-line tools
- #399: add --help-measures to all 3 tools
- item_recommendation: add usage information for
--(load|save)-(user|item)-mapping=FILE
- rating_prediction:
- do not print complete usage information for invalid command line
argument combinations; only describe what is wrong
- allow test files without rating column via --test-no-ratings
(suggested by Michael Ekstrand)
evaluation
- shuffle candidate items to avoid biased results for recommenders
that return the same score for many items for --overlap-items and
--all-items (reported by Pieter-Jan Perbruggen)
data structures
- fix updating count_by_user and count_by_items in Ratings, which caused
a crash when performing incremental updates for BiasedMatrixFactorization
with FrequencyRegularization=true (reported by Jia Huang)
misc
- remove namespace AttrToFactor
3.07 2013-02-04
#378: get rid of group recommendation code
recommenders
- new rating predictor GSVD++ (by Marcelo Manzato)
- new recommenders ExternalRatingPredictor and ExternalItemRecommender:
to evaluate external prediction tools with the MyMediaLite evaluation
framework
- incremental updates for item recommendation UserKNN and ItemKNN
(pull request by João Vinagre)
- MatrixFactorization: rename LearnRateDecay to Decay
- SLIM: fix wrong data type in LoadModel()
evaluation
- simplify item recommender evaluation - do not pass ignore_items to
the methods computing the measures
- item cross-validation: fix bug where train and test sets were
switched
- item online evaluation: rewrote protocol; now documented and simpler
data types
- get rid of unused vector and matrix code (mostly double precision
code)
- matrix operations: speed up and simplify random initialization,
element-wise multiplication, increment, addition
- more unit tests for vector operations
- SymmetricCorrelationMatrix: improve API documentation
correlations
- throw NotImplementedException for "Weighted" scenario
BinaryData(As|S)ymmetricCorrelationMatrix.ComputeCorrelation()
command-line tools
- share SetupRecommender() code between the 3 command-line tools
- add default evaluation measure to rating_based_ranking
- rating_based_ranking: add support for --cross-validation (reported
by Pieter-Jan Verbruggen)
3.06 2012-12-18
recommenders
- CLiMF: add warning that it is not finished yet
- BiasedMatrixFactorization, (Sigmoid)SVDPlusPlus:
- fix learn rate decay
- fix System.ArgumentOutOfRangeException in FoldIn() (reported by
Greg Najda)
- SigmoidCombinedAsymmetricFactorModel:
- implement fold-in
- fix potential NullReferenceException in Train()
- UserKNN for item recommendation: add fold-in support
- UserKNN and ItemKNN for item recommendation: fix prediction bug -
wrong scoring and potential exception if k=inf
- BPRMF, MultiCoreBPRMF, SoftMarginRankinMF:
- #353: get rid of 'fast sampling' feature
- MultiCoreBPRMF
- fix multithreading behavior for WithReplacement=false and
UniformUserSampling=false (thanks to Alex V. for the help)
- BPRMF:
- move different sampling strategies into different protected
methods
- improve documentation, add formula for optimization problem
- SoftMarginRankingMF:
- show all relevant options in ToString()
- WeightedBPRMF
- fix sampling corner case (last element was ignored)
- set WithReplacement = false and UniformUserSampling = true in
constructor
- SocialMF
- fix NRE when UserRelation is not set
- more flexible Iterate() method
- do not check for negative user/item IDs any more - this would be
caught anyway by other means
- add more unit tests for rating prediction methods
data types
- (Sparse)Matrix: implement IsSymmetric according to interface
specification
command-line tools
- #337: use Mono's default garbage collector
- #301: reduce measurement output, let user select which measures to
display
documentation
- refer to new website: http://mymedialite.net
website
- add disclaimer to FAQ
- move website into its own repository
misc
- UnhandledExceptionHandler: fix output formatting
- Makefile: use variable ACK for ack/ack-grep
- run all system tests with make target 'test'
- MultiCore helper class
- add unit tests
- fix behavior when there are less tasks to divide than threads
- method PartitionIndices() returns IList instead of an array
3.05 2012-10-23
recommenders
- new item recommenders: BPRSLIM (#120) and LeastSquareSLIM (#118)
(by Lucas Drumond)
- MatrixFactorization: fix bug related to the learn rate decay
introduced in the last release (reported by Lucas Drumond and Josif
Grabocka)
- MatrixFactorization: support learning rate decay for fold-in
- add some more unit tests
command-line tools
- fix to work when symbolically linked (by Lars Schmidt-Thieme)
website
- add more MyMediaLite users
- fix issue with trailing whitespaces for included links
- add Lucas Drumond to authors
misc
- clean up Makefile
- rename Utils.GetTypesInNamespace() to GetTypes(), make it
an extension method, add unit tests
3.04 2012-10-14
API
- IMatrix.IsSymmetric: now explicitly defined as the storage
strategy, not the mathematical property
recommenders
- new: CLiMF (best paper at RecSys 2012, not complete yet)
- BPRMF: improve doc
- WRMF: rename hyperparameter c_pos to alpha (more consistent with
the paper)
- UserKNN, ItemKNN: correct handling of incremental updates for
asymmetric correlations; avoid calling Update(User|Item) in
baseline_predictor twice
- ItemKNN: support fold-in rating prediction
- MostPopular:
- #312: distinguish number of users and number of events
- score computation: divide by number of users or events
- SVD++ and AFM variants: better names for temporary values
- UserItemBaseline: improved API doc with formula of the optimization
problem (suggested by Yong Zheng)
- MatrixFactorization: improved API doc
- all factorization models for rating prediction: add multiplicative
learn rate decay: property LearnRateDecay, --recommender-option
learn_rate_decay=0.9
command-line tools
- rating_prediction: improve usage description
- item_recommendation: new line after prediction_time output
evaluation
- average precision: more readable computation
- PrecisionAndRecall.cs: fix API doc generation
- add enum RepatedEvents
documentation
- document Diversification namespace
website
- add some papers that use MyMediaLite
- add list of organizations that use MyMediaLite
misc:
- #90: Makefile: call ack-grep instead of ack
3.03 2012-09-09
API
- rename (I)EntityMapping to (I)Mapping
- attribute- and relation-aware interfaces, IO.AttributeData,
IO.RelationData: refer to interfaces instead of classes
- introduce more general IIncrementalRecommender inferface, which
is extended by IIncrementalRatingRecommender (otherwise not
changed) and IIncrementalItemRecommender (now more flexible)
- introduce abstract Recommender class that implements behavior
common to most rating predictors and item recommenders
recommenders
- BPRMF: add fold-in support, new incremental update interface
- MostPopular: new incremental update interface
- MostPopularByItemAttributes: divide score by number of item
attributes (otherwise attributes with many attributes have
automatically higher scores)
- KNN:
- add option to select the kind of correlation for determining
the nearest neighbors
- get rid of the distinction between weighted and non-weighted
kNN
- safer and shorter implementation of GetMostSimilar(Users|Items)
- ensembles: define attributes as interfaces instead of classes
correlations
- new correlations: ConditionalProbability, Cooccurrence (#267),
BidirectionalConditionalProbability
- share routines between different kinds of binary data correlations
(#166)
- support weighting according to global frequency of an entity (#170)
command line tools
- fix early abortion if cutoff not set for item_recommendation
(bug was introduced in 3.02)
- rename --repeat-evaluation to --repeat-items, and support this
option also for writing out predictions, not only for evaluation
(reported by Elvio Vicosa, #124)
- remove KDDCup 2011 and ICDM 2010 executables: would have to be
maintained; for reference, they are still available in MML's
older releases
- new argument --num-iter=N
- add version number to stack trace
- move more code to abstract CommandLineProgram class
data types
- IMatrix<T>: rename Grow() to Resize()
documentation
- improve Installation description
- correct Doxygen namespace for MyMediaLite.GroupRecommendation
scripts
- add artist-to-song preprocessing script for MSD challenge
- add script to allow easier adding of results to YAML files
evaluation
- fix some Gendarme warnings
tests
- test_item_recommendation_online.sh: constant random seed
misc
- get rid of generic Pair class, use System.Tuple instead
- get rid of Util namespace
3.02 2012-07-23
API
- information about the rating scale (minimum rating, maximum rating,
the different levels, etc.) are now in contained in the class
RatingScale
recommenders
- new item recommender: MostPopularByItemAttributes: predict songs with
same attributes even if they have a count of zero
- new rating predictor: NaiveBayes
- group recommenders: take CanPredict() into account, some cleanup
- WeightedBPRMF: use Feedback data structure more efficiently
- ItemKNN item recommender: fix cast/integer division bug in Predict()
(reported by Cees Wesseling)
- SigmoidCombinedAsymmetricFactorModel: fix crash during training
data structures
- get rid of SparseBooleanMatrixBinarySearch and
SparseBooleanMatrixStatic
- sparse matrix types: get rid of NonEmptyRows property
- Ratings: enable GetEnumerator()
- DataSet, PosOnlyFeedback: add C(dataset) constructors
command line tools
- #32: share some code between the command line tools
- rating prediction: support binary ranking measures
evaluation
- fix MAP@k computation
- aggregated output for cross-validation of iterative models
documentation
- improve documentation on website:
- GUI demo
- attribute files
- get rid of mdoc-generated HTML documentation
scripts
- MSD challenge evaluation: fix MAP@k computation, give out number
of users with AP=0
- MSD challenge: add script to generate artist attributes
- import_dataset.pl: allow event constants of value 0
3.01 2012-05-30
API
- move CountBy(User|Item) from IRatings to IDataSet
recommenders
- new rating predictors Sigmoid(User|Combined)AsymmetricFactorModel
- new item recommender MostPopularByItemAttributes
- WRMF: support out-of-the-box multi-core learning (#233)
- SocialMF: remove unnecessary if-statement
- BiasedMatrixFactorization: 'naive' parallelization
- BPRMF and variants: get rid of bold-driver heuristics (not
effective/efficient for these recommenders)
- (Sigmoid)SVDPlusPlus, SigmoidItemAsymmetricFactorModel: take the
ratings that have to be predicted into account
command line tools
- do not print all usage information on errors that have easy
explanations
- #234: get rid of argument --show-fold-results
evaluation
- MyMediaLite.Extensions: parameter n (number of top-n predictions)
for PredictItems() and ScoreItems() methods
- rating prediction: detailed evaluation of cold-start events
- remove ItemsFiltered class
scripts
- add scripts for creating submissions, evaluation, and blending for
the Million Song Dataset Challenge on Kaggle
- add script for user-stratified crossvalidation
- import_dataset.pl: more flexible ID mapping file format
tests
- NUnit tests now also run from the command line
- update time estimates to newer computer
misc
- more readable doc/ComponentLicenses (pointed out by Greg Najda)
3.0 2012-04-05
recommenders
- new recommender: SigmoidItemAsymmetricFactorModel
- SocialMF:
- implement with sigmoid function
- training bug fixes (error reported by Nicholas Ampazis)
- speed up case social_regularization=0
- add bold-driver heuristics
- add support for MAE and logistic loss optimization
- RatingPredictor.KNN:
- NumIter attribute for the underlying bias model
- set default K to 80 instead of inf
- speed up rating access by using user-wise indices of item-wise
ones
- remove the seldomly used InitMean and InitStdDev from the ToString()
method of all recommenders that have it
- generalize parts of ComputeObjective()
- (Sigmoid)SVDPlusPlus: implement ComputeObjective()
- BPRLinear: get rid of unnecessary iteration_length variable
- GlobalAverage, ItemAverage, UserAverage, ItemAttributeKNN: fix
incorrect statements in API documentation (reported by Chris Newell)
command-line programs
- fix #78: '--recommender-options="option=" leads to exception'
- rating prediction: --prediction-line=ranking writes a ranked list of
items for each user
- item recommendation: load user and item ID mappings if requested
- item recommendation: fix crash when predicting for all users
- item recommendation: always use --data-dir for --test-users-file
- item recommendation: get rid of --filtered-evaluation
- rating prediction: simplify LoadData() method
- make the program classes static
I/O
- speed up writing out item recommendations by using a heap to store
intermediate results (suggested by Brian McFee)
- add static class IO.FileSerializer
- perform fast binary (de)serialization if user and item IDs are not
mapped
- TimedRatingData: improved handling of different time/date formats
- database access: introduce GetFloatGetter() to retrieve ratings
data structures
- make DataSet, Ratings, StaticRatings, StaticByteRatings,
TimedRatings, PosOnlyFeedback, and EntityMapping serializable
- RatingType: represent enum by byte
evaluation
- add static classes to Eval.Measures: MAE, RMSE, LogisticLoss
scripts
- import_dataset.pl: fix indentation of usage message; allow output
without event column
- add some helper scripts for KDD Cup 2012
- add overlap.pl and statistics.pl
misc
- #132: get rid of package MyMediaLiteExperimental
- HyperParameter.NelderMead: fix bug in center computation (reported
by Chris Newell)
- speed up test scipts
- get rid of delegate definitions in some classes, use Func<> instead
- Util.RecommenderParameters: get rid of redundant constructor code
2.99 2012-03-02
API
- most rating stuff is now using float instead of double
- IRecommender: Predict(user, item) now returns float instead of
double
- IIncrementalRatingPredictor:
(Add|Update)Rating(u,i,r) -> (Add|Update)Ratings(ratings),
RemoveRating(u,i) -> RemoveRatings(ratings)
- move PredictItems from ItemRecommendation.Extensions to Extensions,
add method ScoreItems
- add interface IFoldInRatingPredictor with extension methods
- implement this interface for (Biased)MatrixFactorization,
UserKNN(Cosine|Pearson), UserAverage, and
(Sigmoid)SVDPlusPlus
- add interface IFoldInItemRecommender
- IIterativeModel: double ComputeLoss() => float ComputeObjective()
recommenders
- new rating predictors: SVDPlusPlus and SigmoidSVDPlusPlus
- #157: matrix factorization recommenders use float to store the
latent factors
- BiasedMatrixFactorization: differentiate regularization of user and
item biases, by using reg_u * bias_reg and reg_i * bias_reg,
same with the learn rate;: compute rating_range_size only once;
use global average (#162), use user/item bias whenever possible
(#163), frequency-based regularization
- MatrixFactorization: proper intialization of latent factors for
users and items without known feedback
- merge MultiCoreMatrixFactorization and
LogisticRegressionMatrixFactorization into BiasedMatrixFactorization
- RatingPredictor: fix setting MaxUserID and MaxItemID
- TimeAwareBaseline: fix day computation (reported by Chris Newell),
fix initialization of c_u parameter, proper use of user_scaling
- TimeAwareBaseline(WithFrequencies): fixes in UpdateParameters() and
ComputeLoss()
- ItemRecommender.ItemKNN: fix wrong prediction
(reported by Chris Newell)
- EntityAverage:
- remove unnecessary parameter from Retrain()
- compute averages using doubles instead of floats
- initialize entity_averages in Train() (reported by Chris Newell)
- ItemAttributeSVM: improve API doc and ToString() method
command-line programs
- more compact usage information
- item recommendation: actually take user list into account when writing
predictions (reported by Yue Shi)
- add --(save|load)-(user|item)-mapping=FILE options
- rating prediction: add option --prediction-header=LINE
- add --no-id-mapping option to save memory for large-scale datasets
where the user and item IDs have no gaps
- #202, #203: the criterion to be used for cut-off/convergence
checking can now be configured via the --measure=MEASURE option
for both rating prediction and item recommendation, --epsilon=NUM
is now also supported by the item recommendation tool
- explicitly prevent combination of --cross-validation=K and
--(load|save)-model=FILE
- rating prediction: fix bug in KDD Cup data handling
- item recommendation: add dependency to System.Data assembly
- item recommendation: fix usage description of --predict-items-number
and --repeat-evaluation (reported by Simon Renaud)
- item recommendation: show number of test users when writing out
predictions
I/O
- #206 (suggested by Simon Dooms): string user, item, and attribute
IDs (instead of long)
- DB: support integer, long, and string IDs
- rename IO.IMatrixExtensions to IO.MatrixExtensions
- remove class NumberFile (not used any more)
data types
- MatrixExtensions: speed up some operations by precomputing offsets
- remove SparseVector and Triple: not used any more
data structures
- correctly handle MinRating and MaxRating in CombinedRatings
- Ratings: update indices after removing ratings, fix bug in
RemoveUser() and RemoveItem()
- RatingsProxy: proper handling of MaxUserID and MaxItemID,
implement Remover(At|User|Item)
- EntityMappings: use List instead of Dictionary to store internal to
external mappings
correlations
- BinaryCosine: fix division by zero (reported by Chris Newell)
evaluation
- save results as float instead of double
documentation
- improve API doc of IIncrementalItemRecommender
misc
- remove Data.WeightedItem (use Pair<S, T> instead)
- NelderMead: fix compilation in VisualStudio (reported by
Artus Krohn-Grimberghe and user LHCGreg on reddit)
- Utils.Shuffle is now an extension method
- Utils.Recommender: simplify, allow enum options
2.03 2012-01-14
API
- add method Grow(x, y) to IMatrix interface
- #72: method ComputeFit() renamed to ComputeLoss(),
ComputeFit() is now an extension method (see below under
'evaluation')
- #145: move index-related methods from IRatings to IDataSet
- #147: add interfaces IItemSimilarityProvider and
IUserSimilarityProvider
recommenders
- new (experimental) recommender: MultiCoreBPRMF
- new recommender: LogisticRegressionMatrixFactorization
- #171: add random and constant rating predictors
- BPRMF: fix bug in negative item sampling with fast sampling
deactivated
- UserItemBaseline: fix wrong initialization in OptimizeUserBiases()
and OptimizeItemBiases(), reported by Tom Tung
- ItemKNNCosine: fix bug in incremental updates
- SoftMarginRankingMF: move to main package, improve API doc
- MultiCoreMatrixFactorization: rename Blocks to blocks (not a
property), rename NumBlocks to MaxThreads
- #177: FactorWiseMatrixFactorization: add RegU and RegI properties
(of the underlying baseline predictor)
- TimeAwareBaseline(WithFrequencies): fixes in UpdateParameters() and
ComputeLoss() functions
- UserKNN, ItemKNN: implement SimilarityProvider interfaces
- #161: rename BPR_Linear to BPRLinear
- #160: incremental updates for (Global|User|Item)Average
- move MultiCoreMatrixFactorization, SoftMarginRankingMF, SocialMF,
and WeightedBPRMF from experimental to normal section
command-line programs
- #51: mark iterative and incremental recommenders
- starter scripts: use --gc=sgen to allow very large datasets
- avoid exception when combining --cross-validation=K and
--compute-fit
- remove redundant code for setting the random seed
- fix error message when using --online-evaluation with a
non-incremental recommender
- rating prediction: fix usage --file-format=kddcup_2011 instead of
--file-format=kddcup2011
- KDD Cup tool (track 2): support compute_fit, align iteration output
with the other MyMediaLite programs
correlations
- get rid of unnecessary copy constructor in Jaccard and BinaryCosine
- use dense matrices for computing Pearson, BinaryCosine and Jaccard,
to avoid the overhead of our sparse matrices
- use SymmetricMatrix as base class of CorrelationMatrix, saving some
memory
- make BinaryDataCorrelationMatrix and RatingCorrelationMatrix
abstract
- Pearson: perform shrinkage as in chapter 5 of the RecSys Handbook,
which describes an MAP estimate; improve API doc; turn shrinkage
field into property 'Shrinkage'
- implement weighted cosine similarity (Xie et al., )
data types
- add data type SymmetricMatrix
evaluation
- new rating prediction measure: CBD (capped binomial deviance)
- #75: allow combination of --cross-validation=K and --compute-fit
- introduce extension method ComputeFit() which computes the fit
(RMSE/AUC) on the training data of the recommender
- fix potential race condition in DoCrossValidation()
documentation
- #158: put API documentation into a separate package
- Diversification: improve API doc
- UserItemBaseline, RatingPrediction.KNN: improve API doc
- FactorWiseMatrixFactorization: improve API doc
misc
- fix #176: DoCrossValidation() hangs forever; random number
generation now should be thread-safe and reproducible
(thanks to Tom Tung for reporting the issue and suggesting the
solution)
- #165: move statistics routines in Util.Utils to Data.Extensions,
now return string instead of writing to STDOUT
- turn more methods in Util.Recommender into extension methods
- C# rating prediction example: add DoCrossValidation() example
- Nelder-Mead: use InvariantCulture for output formatting
- #173: remove Makefile target 'source-package'
- move Diversification namespace from experimental to normal section
- move code related to the KDD Cup 2011 data from experimental to
normal section
- move namespace HyperParameter from experimental to normal section
- add script visualize_iterations.pl
- add options --no-mapping and --ignore-line-regex=REGEX to script
import_dataset.pl
2.02 2011-11-29
MyMediaLite now needs MonoDevelop 2.6 or later or xbuild to build
API
- IRecommender: now inherits from IClonable, improve API doc
- IDataSet: add Count property
- IRatings: get rid of Get() method
- IIncrementalRatingPredictor: add UpdateUsers and UpdateItems
properties
- TimeAwareBaseline: fix crash when trying to predict a rating after
the training period
- #114: methods in (ItemRecommendation|RatingPrediction).Prediction
are now extension methods, rename to Extensions
- make mapping arguments optional
- less method overloads
- move Pair and Triple from Util namespace to DataType
- Recommender.Configure() and SetProperty() are now an extension
methods
- Recommender.CreateRatingPredictor() and CreateItemRecommender() now
also accept complete type names (including namespaces)
recommenders
- new rating predictor: CoClustering (based on a 2005 paper by George
and Merugu)
- BPRMF: fix bug in incremental updates
- MulticoreMatrixFactorization: simplify implementation
- UserItemBaseline: make RetrainUser(user_id) and RetrainItem(item_id)
public instead of protected
- TimeAwareBaseline(WithFrequencies): several bug fixes
- FactorWiseMatrixFactorization:
- remove unused field global_bias
- turn field residuals into a local variable
- fix crash on LoadModel() with Ratings == null
- #49: kNN recommenders: use UserItemBaseline via composition, not
inheritance
- (BiPolar)SlopeOne: remove unnecessary cast to double
- move group recommenders from experimental to main section
command-line programs
- rename from ItemRecommendation.exe to item_recommendation.exe and
RatingPrediction.exe to rating_prediction.exe
- add scripts that call Mono on Unix-like systems: item_recommendation
and rating_prediction
- #61: add the option to ignore first line of training/test file
- #27: command-line programs: load from model file without specifying
recommender type
- print "prediction_time" instead of "predicting_time"
- item recommendation
- add --file-format= option
- fix wrong check "predict_for_users_file == null" to "!=" in
Predict() method
examples
- simplify the C#, Python, and Ruby examples
- add F# example
evaluation
- #109: formulate evaluation routines as extension methods
- #122: introduce specific datatypes for evaluation results
- move filtered evaluation and group recommendation evaluation from
experimental to main section
- move online eval for item recommendation into its own test script
- provide defaults for test_users and candidate_items in
Items.Evaluate()
I/O
- fix reading in timestamps in TimedRatingData and MovieLensRatingData
- add enum IO.ItemDataFileFormat
- add IGNORE_FIRST_LINE to enum IO.RatingFileFormat
- add read/write methods for integer vectors to IO.VectorExtensions
- user/item mappings are now optional arguments for all IO routines
- add unit tests for all interaction data reading classes
- Model.Load: do not check for empty string any more
data structures
- move MinRating and MaxRating from DataSet to Ratings
documentation
- improve API doc of Correlation.Jaccard and
ItemRecommendation.IIncrementalItemRecommender
- improve GUI Demo documentation on website
- update doc/Installation
misc
- ship NUnit DLLs so that we won't have any versioning problems
- add test cases for CoClustering, MultiCoreMatrixFactorization,
--rating-format=float|byte|double to rating prediction test script
- add test script for time-aware rating prediction
- #87: create Makefile in src/ that calls xbuild to build MyMediaLite
on the command line
- add make targets "install" and "uninstall" for installation on
Unix-like systems (thanks go to Simon Dooms for valuable feedback on
this)
2.01 2011-11-13
bugfix release: fix a null pointer exception in the item recommendation
tool (reported by Damir Logar)
2.00 2011-11-10
API
- add abstract class TimeAwareRatingPredictor and interface
ITimeAwareRatingPredictor
- add interface ITimedDataSet
- add interface IHyperParameterSearch
- most methods in *MatrixUtils are now extension methods, allowing
them to be called in a much more elegant way: mat.method() instead
of MatrixUtils.method(mat); renamed *MatrixUtils to
*MatrixExtensions
- IIterativeModel is no sub-interface of IRecommender any more
(not necessary)
recommenders
- add TimeAwareBaseline and TimeAwareBaselineWithFrequencies rating
predictors (from Koren's Netflix Grand Prize report)
- RatingPredictor: LoadModel() and SaveModel() now have default
implementations that throw a NotImplementedException()
- UserItemBaseline: make parameters protected so that library users
can inherit from the class; ComputeFit now returns the exact loss
instead of the training error
- MultiCoreMatrixFactorization: complete API doc
command line programs
- move source code into Programs/ directory
- improved exception handler
- #76: allow combination of --cross-validation and --find-iter
- rating prediction:
- improved usage information
- --chronological-split parameter
evaluation
- add chronological splits (global and per user) for rating prediction
- PosOnlyFeedbackCrossValidationSplit: fix compilation problem with
Visual Studio 2010 (reported by Saurabh S.)
- rating prediction: transparently support using dates/times in the
evaluation (if present)
- RatingsSimpleSplit: better ArgumentException message; guaranteed
sizes for train and test parts; add unit tests
- catch exceptions in parallel CV code
- AUC
- fix computation involving ignore_items
- handle empty and complete correct item lists
- throw exception if ranked item list is too short (reported by
Tomas Horvath)
- add unit tests
data structures
- (I)TimedRatings: add EarliestTime and LatestTime properties
- add RatingsChronologicalSplit
- Matrix, SparseMatrix, SparseBooleanMatrix, SparseVector,
SparseBooleanMatrixStatic, SparseBooleanMatrixBinarySearch: change
accessibility of internal data presentation to "protected internal"
- SparseBooleanMatrix: change datatype of internal representation from
List<ISet<int> to IList<ISet<int>>
- add SparseMatrixExtensions
I/O
- completely drop support for reading from STDIN
- catch line format exceptions in a uniform way
- use default arguments for rating_type argument of methods
StaticRatingData.Read()
- ItemData I/O: on error, display offending line
- NumberFile I/O: add unit tests
- rename TimedRatings to TimedRatingData
- improved support for MovieLens 1M/10M file format
- move DataType.IMatrixUtils.cs to IO.IMatrixExtensions - the class
only contains extension methods for matrix IO
- move IO part of VectorUtils to IO.VectorExtensions
misc
- update script download_movielens.sh because the download URLs have
changed
- introduce static Wrap class, which contains MeasureTime() and
FormatException() method wrappers
- Utils.DisplayDataStats: use default parameters"
- move hyper-parameter search to its own namespace
- MatrixUtils: add Max() method
1.99 2011-10-08
- MyMediaLite now needs .NET 4.0/Mono 2.8 or later (2.10.x recommended)
- add multicore support
- item recommendation evaluation and filtered item rec. evaluation
- cross-validation for rating prediction and item recommendation
- distributed SGD (see below)
- API changes
- add (more abstract) IDataSet interface, and DataSet class
- rename IItemRecommender to IIncrementalItemRecommender and
split off IIncrementalRatingPredictor from IRatingPredictor -
to better reflect what those interfaces actually offer
- add classes IncrementalItemRecommender and
IncrementalRatingPredictor (classes for the above interfaces)
- rename IO.RatingPrediction to IO.RatingData and
IO.RatingPredictionStatic to IO.StaticRatingData
- rename IO.ItemRecommendation to IO.ItemData and
IO.ItemRecommendationRatingThreshold to IO.ItemDataRatingThreshold
- move read/write routines from Util.Recommender to the new static
class IO.Model; rename LoadModel() to Load(), SaveModel to Save()
- RatingPrediction.Prediction.WritePredictions():
move line_format argument to last position to be able to use it as
an optional argument
- IPosOnlyFeedback
- AllUsers and AllItems properties: ICollection<int> -> IList<int>
- Overlap() -> OverlapCount()
- IBooleanMatrix
NonEmpty(Row|Column)IDs properties: ICollection<int> -> IList<int>
- Data.IRatings.AllUsers/AllItems: HashSet<int> -> IList<int>
- recommenders
- new rating predictor MultiCoreMatrixFactorization based on
Distributed SGD paper at KDD 2011 by Gemulla et al.
- MostPopular: set MaxItemID in LoadModel() (by Chris Newell)
- BiasedMatrixFactorization: make fields needed for the bold-driver
learning rate heuristic protected
- MatrixFactorization: avoid unnecessary computation of update terms
- kNN models for item recommendation: deal gracefully with unknown
users and items
- BPRMF:
- add UpdateJ option
- fully support RemoveItem()
- add WithReplacement option to choose between sampling with and
without replacement
- add UniformUserSampling option
- factorization models that need random initialization:
rename property Stdev to StdDev
- BPR_Linear: no warning when predicting for unknown items; get rid
of random initialization - 0 is okay for linear model
- MostPopular: adapt to new PosOnlyFeedback
- command-line tools
- add --show-fold-results for cross-validation
- support --compute-fit for all kinds of modes, not only in
conjunction with --find-iter=N
- rename ItemPrediction.exe to ItemRecommendation.exe
- item recommendation: all items in training+test are now the default,
instead of all items in training; get this behavior now via the
--in-training-items option; add --all-items option (makes a
difference if there are also items which were not observed - viewed,
bought - at all, e.g. in combination with --rating-threshold);
thanks go to Jagadeesh Gorla for bugging me about the details of
the evaluation protocol.
- item recommendation: rename --relevant-items=FILE to
--candidate-items=FILE to avoid confusion with the way the word
"relevance" is used in information retrieval; rename
--relevant-users=FILE to --test-users=FILE
- drop support for --prediction-file=- (write to STDOUT)
- improved usage information
- check parameters after creating recommender, catching more errors
- refer to GitHub issue tracker in exception handler, make handler
output more noticeable
- evaluation
- different modes for selecting candidate items now also work for
cross-validation
- fixes and improvements for item recommendation CV
- new evaluation measure: mean reciprocal rank (MRR)
- item recommender evaluation: more descriptive parameter name
repeated_events
- move item recommender evaluation measures into their own classes
(Eval.Items class got too big)
- move online evaluation and cross-validation for both items and
ratings into their own classes, respectively
- I/O
- new static class IO.Constants, which for now contains SPLIT_CHARS
(used by several other IO classes)
- new static class IO.NumberFile (with routines that used to be in
Util.Utils)
- support long user and item IDs (instead of 32 bit integer), as
suggested by Sebastian Schelter
- data structures
- SparseBooleanMatrix: more unit tests
- PosOnlyFeedback: add unit tests, inherit from DataSet
- Ratings.BuildRandomIndex(): shuffle existing index instead building
from scratch
- documentation
- API docs:
- improved literature references and web links
- add links to RecSysWiki articles
- IItemRecommender: explain the task of item recommendation
- IRatingPredictor: explain the task of rating prediction
- add data file format descriptions to website
- misc
- upgrade from Math.NET Iridium to Math.NET Numerics Beta 2
- use Math.NET Numerics for generating normal distributed random
numbers (doubles the speed of MF initialization)
- cleaned up solution and project files for MonoDevelop
- improved ToString() methods
- declared all classes as static that contain only static methods
- move unit tests into namespaces, rename their top namespace
from MyMediaLiteTest to Tests
- updated and improved test scripts; add test script for the
cross-validation feature
- rename example programs from item_prediction.* to
item_recommendation.*
- also add RatingPrediction.exe.mdb (the file with the debug
information) to the binary package
1.05 2011-09-01
- API changes
- ISplit
- use IList<T> instead of List<T> for Train and Test
- NumberOfFolds is now a uint instead of an int
- Eval.Ratings and Eval.Items
- replace DisplayResults by FormatResults
- add support for group recommendation
- recommenders
- add WeightedBPRMF: the item recommender developed for KDD Cup 2011
track 2
- group recommenders: add aggregation methods Average, Minimum,
Maximum, PairwiseWins, Weighted Average
- add SoftMarginRankingMF: item recommender inspired both by CofiRank
(ranking loss) and BPR-MF (stochastic gradient descent learning)
- WRMF: set NumIter default value down to 15
- BiasedMatrixFactorization: improved API doc
- BPRMF: do not implement IIterativeModel (this is done indirectly by
inheriting from the MF class)
- command-line tools
- display memory stats just once when the program finishes
- display memory stats after loading data is complete
- introduce CheckParameters() method for better source readability
- ensure that 'random' data splitting is reproducible when using
--random-seed=N
- improved attribute statistics output
- item prediction:
- add support for k-fold cross-validation: --cross-validation=K
- better handling of different prediction scenarios
- improved error/usage messages
- new parameter --rating-threshold=NUM uses ratings of at least NUM
as positive examples
- support --user-prediction by transposing the user-item matrix
- support group recommendation: --group-evaluation and
--user-groups=FILE
- add 'groups as user' approach for group recommendation
- evaluation
- item prediction: more generic method signatures; more compact code
- item/group/filtered prediction: modify progress output
- add class PosOnlyFeedbackCrossValidationSplit
- RatingsSimpleSplit and PosOnlyFeedbackSimpleSplit:
simplified constructor
- RatingsCrossValidationSplit: check in constructor whether num_folds
has a legal value
- add Eval.Items.RecallAt()
- add Eval.Items.EvaluateOnSplit()
- IO
- support CSV format also for attribute and relation files
- documentation
- more detailed system requirements in doc/Installation
- improved API documentation, with some links to RecSysWiki
http://recsyswiki.com
- helper scripts
- fix bug in ml100k_genres.pl
- better --help usage information for crossvalidation.pl
1.04 2011-08-03
- API changes
- Eval.RatingPrediction -> RatingPrediction.Prediction
- Eval.ItemPrediction -> ItemRecommendation.Prediction
- Eval.RatingPredictionEval -> Eval.Ratings
- Eval.ItemPredictionEval -> Eval.Items
- IUserAttributeAwareRecommender: remove set from NumUserAttributes
- IItemAttributeAwareRecommender: remove set from NumItemAttributes
- recommenders
- BPRMF: speed up training by about 5% for higher num_factors
- UserAverage, ItemAverage, GlobalAverage: support LoadModel() and
SaveModel()
- BiasedMatrixFactorization: fix incorrect output of LoadModel()
- merge functionality of BiasedMatrixFactorizationMAE into
BiasedMatrixFactorization
- RatingPredictor: get rid of InitModel() method
- SlopeOne: get rid of unnecessary String.Format() call
- UserItemBaseline: fixed incorrect item ID check
- simple recommenders: avoid reimplementation of ToString() method
- command-line tools
- --find-iter=N: explicitly state that the last number refers to the
number of iterations computed so far
- fix bug that suppressed evaluation with --test-ratio
- rating prediction:
- add user-defined prediction format via the --prediction-line
argument
- get rid of --min-rating and --max-rating, it is now automatically
read from the data
- rename --split-ratio to --test-ratio: more intuitive, and
consistent with the item prediction tool
- item prediction:
- always obey --relevant-users=FILE and --relevant-items=FILE
arguments
- add arguments --num-test-users, --overlap-items and --test-items
- improved error messages
- evaluation
- add "filtered evaluation" protocol for item recommendation:
for every user, compute recommendation quality for item sets
filtered according to given attributes: Eval.ItemsFiltered
- support predicting and evaluating items that have interactions
with the given user in the training set (which would usually be
ignored). This is useful e.g. for repeat buying, and for computing
the fit on the training data.
- data structures
- Ratings: set MinRating and MaxRating to double.MaxValue and
double.MinValue, respectively
- examples
- fix KDD Cup examples (reported by Subramanyeshwar Cherukuri)
- misc
- MatrixUtils: rename RowInitNormal(m, d, d) to InitNormal() - "row"
made no sense here
- Utils.Recommender: add Load(filename) method that creates a
recommender object of the appropriate type and loads the model from
file
- also create genres file for MovieLens 10M
- packaging: add missing lib/ directory to source package (reported
by Artus Krohn-Grimberghe)
1.03 2011-06-22
- IMPORTANT ANNOUNCEMENT: This may be the last version to support
Mono 2.6. If you use MyMediaLite and rely on running it on Mono 2.6,
please contact the authors: mymedialite@ismll.de.
- web service API
- add prototype for a SOAP web service for rating prediction, plus
three test scripts
- API changes
- IRatingPredictor
- Add() is now AddRating()
- remove AddUser() and AddItem()
- IItemRecommender
- remove AddUser() and AddItem()
- Util.Recommender.Configure can now be called without a delegate
argument.
- IIterativeModel: NumIter is now uint instead of int
- recommenders
- remove NewKNN from project (still not finished)
- new rating predictor FactorWiseMatrixFactorization
- new rating predictor BiasedMatrixFactorizationMAE, which is BMF
optimized for MAE instead of RMSE
- BiasedMatrixFactorization: fixed a wrong constant factor in
ComputeLoss()
- BPRMF: add optional bold driver heuristic for learn rate adaptation
- MatrixFactorization:
- use method from Eval namespace to compute fit
- NumFactors: int -> uint
- ItemRecommendation.MF: NumFactors: int -> uint
- UserItemBaseline:
- use several iterations of alternating optimization instead of just
one; implement IIterativeModel
- implement LoadModel() and SaveModel()
- command-line tools
- item prediction: rename --predict-for-users-file to
--relevant-users for consistency with --relevant-items
- rating prediction:
- support all IIterativeModel recommenders, not just the ones
derived from MatrixFactorization
- --compute-fit now works in all cases
- evaluate on simple split (given split ratio)
- write out predictions every N iterations with --prediction-file=F
and --find-iter=N (bug reported by Alejandro Bellogin)
- write loading time to STDERR, not STDOUT
- support online evaluation with incremental updates (see below)
- allow several --recommender-options arguments
- evaluation
- RatingEval
- add EvaluateOnline() method
- rename RatingPredictionMeasures to Measures
- ItemPredictionEval
- add EvaluateOnline() method
- rename ItemPredictionMeasures to Measures
- data structures
- add interfaces IBooleanMatrix and IPosOnlyFeedback
- make PosOnlyFeedback generic to allow different backends
- add SparseBooleanMatrixBinarySearch and SparseBooleanMatrixStatic
- IMatrix<T> interface: add Transpose() method
- SparseBooleanMatrix: remove Rows() method (not necessary)
- Matrix<T>:
- perform bounds check only when DEBUG is set
- faster GetRow()/SetRow()
- generic return types
- additional constructor with list of list of T as argument
- MatrixUtils:
- remove ContainsNaN()
- rename InitNormal() to RowInitNormal(); add ColumnInitNormal()
- VectorUtils:
- add L1Norm()
- simplify ReadVector()
- fix bug in Ratings that prevented incremental updates to work properly
(reported by Chris Newell)
- documentation
- some API doc improvements
- get rid of the word 'engine', as it usually carries no relevant
information
- get rid of the term 'online updates', as it may cause confusion
because of the term "online learning" in the machine learning
literature; we now use the term 'incremental updates'
- IO
- minor speed-up: do not .Trim() lines before checking whether they
are empty
- misc
- reflection-based recommender configuration from string: check
whether properties are read-only
- move GridSearch to experimental section
- add Nelder-Mead algorithm for hyperparameter selection; currently
only rating prediction is supported (experimental)
- remove obsolete option_file functionality
- add test script for incremental updates (rating prediction)
- suppress localized formatting in a more elegant way (saves more
than 100 lines of source code overall)
- 'make clean' now removes more temporary files
1.02 2011-05-24
- recommenders
- BPR_Linear: less verbose output
- BPRMF: fix loading/saving of models
- BiasedMatrixFactorization: simplify a bit
- SlopeOne: move computation of rating average to Train()
- BiPolarSlopeOne: fix loading/saving of models
- UserItemBias: set default values for reg_u and reg_i
- command-line tools
- item prediction: fix null pointer exception when no --test-file is
given
- rating prediction: save model file in all cases when requested
- documentation
- fix Doxygen API doc (wrong path)
- Doxygen: do not build LaTeX doc; add main page
- remove <inheritdoc/> XML tags - currently not supported by any
tool we use
- drop ImmDoc.NET support
1.01 2011-05-19
- API changes
- add interface IEntityMapping
- IRatings: add CountByUser and CountByItem
- recommenders
- make ItemRecommender and RatingPredictor clonable
- BiasedMatrixFactorization
- rename BiasRegularization to BiasReg for consistency with other
recommenders
- different regularization parameters for user and item factors
- add ComputeLoss() (also for MatrixFactorization)
- add optional bold driver heuristic for learn rate adaptation
- BPRMF:
- get rid of unnecessary IterationLength parameter
- only interate once over relevant data points in online learning
- explicitly model item bias
- significant training speed-up
- BPR_Linear
- significant training speed-up
- kNN recommenders
- improve API documentation
- Random: remove unnecessary methods
- Zero: new item recommender that always predicts the score 0
- rename MyMediaLite.ensemble namespace to MyMediaLite.Ensemble
- make matrix factorization recommender faster by using
MatrixUtils.RowScalarProduct
- command-line tools
- move DisplayDataStats() for item recommendation from the program
to the library
- improved usage information
- use Mono.Options for command-line argument parsing
- support --help and --version
- evaluation
- add relevant_users feature for item prediction
- rating evaluation: check arguments for null
- rating evaluation cross validation: clone recommender to be
unaffected by state changes
- data structures
- fix incorrect error message in Matrix class (reported by
Chris Newell)
- documentation
- update performance stats
- misc
- add target download-imdb to Makefile
- KDD Cup 2011
- one program per track
- add validation functionality for track 2
- add IKDDCupRecommender interface for recommenders that use the
KDDCup item data
1.0 2011-03-19
- recommenders
- BPRMF: bug fix in item bias handling (reported by Christian Brauch)
- UserItemBaseline: use internal splitting to find good regularization
parameters
- API changes
- new data structures and interfaces for rating prediction and for
item prediction from implicit feedback (consume less memory)
- CanPredict() is now part of the IRecommender interface.
- rename IO.RatingPredictionData to IO.RatingPrediction
- rename IO.ItemRecommenderData to IO.ItemRecommendation
- add rating data structures with time stamps: RatingsWithDateTime
and StaticRatingsWithDateTime
- command-line programs
- add command-line program for KDD Cup 2011
- rating prediction now lets the user specify to store the ratings
as bytes or floats instead of doubles, to save memory
- display number of ratings
- give out memory usage also for find_iter
- move some statistics routines to the library because they are
used several times
- rename the arguments rating_predictions_file and
item_predictions_file to prediction_file for consistency in
all command-line programs
- IO
- add routines for KDD Cup 2011 data
- evaluation
- add simple dataset splitting
- improve grid search routines
- example programs
- fix a bug in the example programs (reported by Yongfeng Wang)
- data preprocessing scripts
- fix download_movielens.sh
0.11 2011-03-04
- add simple GUI demo for CeBIT
- recommenders
- SlopeOne and BiPolarSlopeOne
- faster and consume less memory
- fix exception when predicting for new users
- MatrixFactorization and BiasedMatrixFactorization
- online update bug fixes
- command-line programs
- handle DirectoryNotFoundExceptions
- give out memory usage
- ignore abstract recommender classes
- API changes
- seal some classes
- IO
- support for MovieLens 1M and 10M rating data format
- data types
- add SkewSymmetricSparseMatrix
- data preprocessing scripts
- also download MovieLens 10M
- add IMDB data download script
- utils
- remove the Utils.Split() method
0.10 2011-02-04
- API changes
- rename IRecommenderEngine to IRecommender
- rename namespace ItemRecommender to ItemRecommendation
- rename Memory to ItemRecommender
- rename namespace RatingPredictor to RatingPrediction
- rename Memory to RatingPredictor
- command-line programs
- find and load recommenders via reflection
- recommender names are now CamelCase (exactly their class names)
- recommenders
- kNN-based recommenders are now much faster and consume less memory
- add BiPolarSlopeOne
- move SlopeOne to the stable code
- data types
- SparseBooleanMatrix now implements IMatrix<bool>
- new type SymmetricSparseMatrix
- IMatrix<T>: new property IsSymmetric
- Matrix<T>: faster computation of IsSymmetric
- move WeightedItem from DataType to Data
- add unit tests for SparseMatrix<T>
- add sequential diversification (Ziegler et al.) to experimental
section
- correlation matrices
- distinguish between different kinds of data: binary data and
real-valued rating vectors
- rename Correlation.Cosine to CorrelationBinaryCosine
- add Correlation.Jaccard and Correlation.AdjustedCosine
- data preprocessing scripts
- add item genre script for MovieLens 100K
0.09 2011-01-12
- IO
- add database and IDataReader support (by Artus Krohn-Grimberghe)
- graceful handling of FileNotExceptions
- bug fix in rating data reading routine: expect at least three
columns
- recommenders
- add Slope-One rating predictor
- weighted-item-kNN: fix ToString() method
- fix configuration bug that affected parameters of type float
- recommender configuration: interpret string "inf" as MaxValue for
signed and unsigned integers
- evaluation
- initial support for dataset splits, cross-validation, and
hyperparameter search
- add evaluation measure normalized mean absolute error (NMAE)
- shorter method names for RatingEval and ItemRecommenderEval
- data types
- add IMatrix interface for both sparse and dense matrices
- improve SparseMatrix implementation
- source code structure
- split up unit tests: one file per tested class
- get rid of 'Experimental' namespace, experimental recommenders now
reside in their own project
0.08 2010-12-09
- add information about ML's non-commercial use license to the download
script
- Makefiles, unit tests, and MonoDevelop finally work together nicely
- the number of factors (per entity) for matrix factorization models is
now consistently called num_factors, both in the code as well as in
the documentation (thank you Artus for pointing this out)
- simplify IO.RelationData and IO.ItemRecommenderData
- rename namespace 'attr_to_feature' to 'AttrToFactor'
- LoadModel() of MF methods: assign correct number of factors
- move experimental code into its own project
- add three different kinds of API documentation generators for HTML:
mdoc (included with Mono), Doxygen, and ImmDoc.NET
- add IronRuby examples
- rename namespace from 'my_namespace' to 'MyNamespace' to follow the
.NET platform habits; it also allows us to support IronRuby
- removed the interface ILatentFactorModel
0.07 2010-11-18
- Bugfix release. You only need to upgrade if you encounter problems
with the issues mentioned below.
- fix some tiny errors in the Makefile
- fix an error in the MovieLens download script
- command line tools: ignore data_dir for save_model and load_model
- small documentation updates
0.06 2010-11-17
- Makefile-based build system allows compilation without IDE
- automated release management
- also read comma-separated text files (like Mahout)
- export Mahout-compatible item predictions
- attribute-to-factor mapping framework (ICDM 2010)
- add shell/Perl cripts to download MovieLens and IMDB data
- tests should now run on every Unix computer
- recommenders
- encapsulate hyperparameters of ItemAttributeSVM and WRMF
- print newline after Pearson correlation is computed
- support LoadModel() and SaveModel() for biased MF
- simpler LoadModel() and SaveModel() for all matrix factorization
methods
- fix LoadModel() and SaveModel() for item prediction kNN
recommenders
- differentiate between weighted and unweighted item-based kNN for
item prediction
- fix off-by-one error in attribute-aware recommenders
- interfaces
- new interfaces ILatentFactorModel
- new interface IItemRecommender (instead of abstract class)
- simplify interface of io.AttributeData
- add property NumberOfColumns to SparseBooleanMatrix
- attibute-aware recommenders: attributes now also have getters
- command-line programs
- exception handler: encourage users to file bug reports
- check again for unknown program parameters
- misc
- code clean-ups
- documentation improvements in many places
- automagic recommender configuration: proper handling of read-only
properties
- development: improve 'make gendarme' and 'make todo'
- add more test cases (e.g. for LoadModel() and SaveModel())
- separate test code from production code
- The core library and the command-line programs now do not contain
any critical issues that Gendarme would complain about.
- add Perl script to create k-fold CV dataset splits,
and for generating cold-start evaluation scenarions
0.05 2010-11-02
- rename the library from 'Algorithms' to 'MyMediaLite'
- recommenders
- more fixes to ensure locale-independent output of '.' as floating
point separator
- MF and linear recommenders for item prediction: rename init_f_mean to
init_mean and init_f_stdev to init_stdev
- return hyperparameter values in ItemAttributeSVM.ToString() and all
kNN recommenders
- fix bug that caused crashes with new users/items for user/item knn
rating predictors
- kNN: do not store hyperparameter values in model files (consistent
with the other recommenders)
- RatingPredictor: shorter property names:
- MinRatingValue -> MinRating
- MaxRatingValue -> MaxRating
- interface names now all start with 'I'
- BiasedMatrixFactorization: model biases explicitly, allow separate
regularization
- command-line programs
- rating prediction: map internal user/item IDs back to the original
ones (this bug was found and reported by Thorsten Angermann)
- configure recommenders via reflection
- improve usage information
- item prediction: rename option 'prec_cutoff' to 'prec5_cutoff'
- item prediction: fix iteration statistics display
- rating prediction: display correct number of users and items
- evaluation
- correct computation of AUC if there are irrelevant items in the
test set
- misc:
- add unit tests for some basic data types (Christina Lichtenthäler)
- improve exception handling in CorrelationMatrix
- rename util.EngineStorage class to util.Engines, because it now
contains different utility methods, not just for storing
- code clean-ups
- more XML API documentation
- add IronPython examples
0.04 2010-10-21
- new features:
- Map user/item IDs to internal IDs on the fly. That makes it
unnecessary to convert datasets before using them with the
MyMediaLite command-line tools.
- MAP (mean average precision) for item recommender evaluation
- API documentation in XML (generated from the inline XML docs)
- support recommenders that use relations over users and/or items
using the interfaces UserRelationAwareRecommender and
ItemRelationAwareRecommender
- SocialMF by Jamali+Ester 2010
- recommender changes:
- add global bias term to BiasedMatrixFactorization
- command-line programs:
- allow input from STDIN and output to STDOUT
- nicer time output for both demo programs
- nicer result output for both demo programs
- rating prediction: save model earlier
- rating prediction: option to stop iterating if there is no progress
- always output '.'-separated floating point numbers, independent
of the current locale.
- better documentation of arguments
- rating prediction: MAE and RMSE cutoff values for iteration search
- give out data loading time
- give out iteration statistics even if program stopped with Ctrl-C
- interface changes:
- use IterativeModel interface in rating prediction program
- consistent parameters for RatingData constructor
- SparseBooleanMatrix now allows [x, y] and [x] access, has
properties instead of GetXXX() methods
- Matrix now allows [x, y] access
- UserAttributeAwareRecommender and ItemAttributeAwareRecommender
now both are completely property-based
- misc:
- code clean-up and bug fixes
0.03 2010-09-29
- fix some crashes in both demo programs
- add initial pre-release test suite
- allow lower case names for all recommenders
- some code clean-up
- introduced interface IterativeModel
0.02 2010-09-27
- save some memory
- fix an argument bug in the command line programs
- nicer find_iter output in rating prediction command line program
- add a flyer for the RecSys 2010 demo session
- finalize README
0.01 2010-09-24
- Initial release