The Kadri Framework is meant for the analysis of the Netflix data set. It is based on Icefox's Netflix Recommender Framework. It uses Icefox's framework to build the core data files, and expands on it to allow pre-processing, the use of dates, and blending.
Requirements:
- Qt
- LAPACK
- 64-bit OS (or 32-bit OS with increased RAM limits for processes) and 64-bit compiler
The download includes Average, Globals, KNN, Matrix Factorization, and blending classes. All of these extend the Algorithm class, which contains the Algorithm::predict(movieid, userid, votedate) and Algorithm::runProbe() functions. To create a new algorithm, make a new class (see the included classes for guidance) centered around the predict() function. The setMovie() and determine() functions are just empty functions added for compatibility with the existing code. You can then use that algorithm to predict the data sets via Algorithm::runProbe() and Algorithm::runQualifying() (see algorithm.cpp for details). You can even run an algorithm on the training set using Algorithm::runTaining() if you wish.
Use the Algorithm::buildPreProcessor("fileprefix") function to build pre-processing files, containing residuals that can be loaded and used to generate models of their own. Note that these files are another ~800MB that must be mapped into memory, so you need lots of RAM to do this.
The blending classes are algorithms of their own, and can be used just like any other model. The ::setup(...) functions take in the names of the preprocessor files and perform the blending calculations based on the probe set, with the first argument needing to be the number of models being blended. The code below is an example that will generate residuals for the Average and Matrix Factorization algorithms, then blend then and run the result on the probe set.
Average avg(&db); avg.buildPreProcessor("somefolder/averagefilename"); Matrix_Factorization mf(&db); mf.calculate_incr(); mf.buildPreProcessor("somefolder/matrixfilename"); Blend blend(&db); blend.setUp(2, "somefolder/averagefilename", "somefolder/matrixfilename"); blend.runProbe;
You can download the framework here:
kadri_framework_v1.2.1.zip (96.0 KiB, 679 hits)
See README.txt for setup instructions.
[...] created a pseudo-SVD++(3) model (mf_time.cpp in my framework) – one without the |N(u)|^(-.5)*Yi feedback term, and also without the alpha_u*dev_u_hat term [...]