Back to the table of contents

Previous      Next

waffles_recommend

A command-line tool for predicting missing values in incomplete data, or for testing collaborative filtering recommendation systems. Here's the usage information:

Full Usage Information
[Square brackets] are used to indicate required arguments.
<Angled brackets> are used to indicate optional arguments.

waffles_recommend [command]
   Predict missing values in data, and test collaborative-filtering
   recommendation systems.
   crossvalidate <options> [3col-data] [collab-filter]
      Measure accuracy using cross-validation. Prints MSE and MAE to stdout.
      <options>
         -seed [value]
            Specify a seed for the random number generator.
         -folds [n]
            Specify the number of folds. If not specified, the default is 2.
      [3col-data]
         The filename of 3-column (user, item, rating) dataset. Column 0
         contains a user ID. Column 1 contains an item ID. Column 2 contains
         the known rating for that user-item pair.
   fillmissingvalues <options> [data] [collab-filter]
      Fill in the missing values in an ARFF file with predicted values and
      print the resulting full dataset to stdout. ([data] is in full
      users*items or patterns*attributes format, not the dense 3-column
      format.)
      <options>
         -seed [value]
            Specify a seed for the random number generator.
         -nonormalize
            Do not normalize all of the columns to fall between 0 and 1 before
            imputing the missing values. (The default is to normalize first.)
      [data]
         The filename of a dataset with missing values to impute.
   precisionrecall <options> [3col-data] [collab-filter]
      Compute precision-recall data
      <options>
         -seed [value]
            Specify a seed for the random number generator.
         -ideal
            Ignore the model and compute ideal results (as if the model always
            predicted correct ratings).
      [3col-data]
         The filename of 3-column (user, item, rating) dataset. Column 0
         contains a user ID. Column 1 contains an item ID. Column 2 contains
         the known rating for that user-item pair.
   roc <options> [3col-data] [collab-filter]
      Compute data for an ROC curve. (The area under the curve will appear in
      the comments at the top of the data.)
      <options>
         -seed [value]
            Specify a seed for the random number generator.
         -ideal
            Ignore the model and compute ideal results (as if the model always
            predicted correct ratings).
      [3col-data]
         The filename of 3-column (user, item, rating) dataset. Column 0
         contains a user ID. Column 1 contains an item ID. Column 2 contains
         the known rating for that user-item pair.
   transacc <options> [train] [test] [collab-filter]
      Train using [train], then test using [test]. Prints MSE and MAE to
      stdout.
      <options>
         -seed [value]
            Specify a seed for the random number generator.
      [train]
         The filename of 3-column (user, item, rating) dataset with one row for
         each rating. Column 0 contains a user ID. Column 1 contains an item
         ID. Column 2 contains the known rating for that user-item pair.
      [test]
         The filename of 3-column (user, item, rating) dataset with one row for
         each rating. Column 0 contains a user ID. Column 1 contains an item
         ID. Column 2 contains the known rating for that user-item pair.
   usage
      Print usage information.
[collab-filter]
   A collaborative-filtering recommendation algorithm.
   bag <contents> end
      A bagging (bootstrap aggregating) ensemble. This is a way to combine the
      power of collaborative filtering algorithms through voting. "end" marks
      the end of the ensemble contents. Each collaborative filtering algorithm
      instance is trained on a subset of the original data, where each
      expressed element is given a probability of 0.5 of occurring in the
      training set.
      <contents>
         [instance_count] [collab-filter]
            Specify the number of instances of a collaborative filtering
            algorithm to add to the bagging ensemble.
   baseline
      A very simple recommendation algorithm. It always predicts the average
      rating for each item. This algorithm is useful as a baseline algorithm
      for comparison.
   clusterdense [n] <options>
      A collaborative-filtering algorithm that clusters users based on a dense
      distance metric with k-means, and then makes uniform recommendations
      within each cluster.
      [n]
         The number of clusters to use.
      <options>
         -norm [l]
            Specify the norm for the L-norm distance metric to use.
         -missingpenalty [d]
            Specify the difference to use in the distance computation when a
            value is missing from one or both of the vectors.
   clustersparse [n] <options>
      A collaborative-filtering algorithm that clusters users based on a sparse
      similarity metric with k-means, and then makes uniform recommendations
      within each cluster.
      [n]
         The number of clusters to use.
      <options>
         -pearson
            Use Pearson Correlation to compute the similarity between users.
            (The default is to use the cosine method.)
   instance [k] <options>
      An instance-based collaborative-filtering algorithm that makes
      recommendations based on the k-nearest neighbors of a user.
      [k]
         The number of neighbors to use.
      <options>
         -pearson
            Use Pearson Correlation to compute the similarity between users.
            (The default is to use the cosine method.)
         -regularize [value]
            Add [value] to the denominator in order to regularize the results.
            This ensures that recommendations will not be dominated when a
            small number of overlapping items occurs. Typically, [value] will
            be a small number, like 0.5 or 1.5.
         -sigWeight [value]
            Scale the significane weighting of the items based on how many
            items two users have rated. The default value of 0 indicates the no
            significance weightig will be done. The significance is scaled as
            numItemsRatedByBotheUSers/sigWeight.
   matrix [intrinsic] <options>
      A matrix factorization collaborative-filtering algorithm. (Implemented
      according to the specification on page 631 in Takacs, G., Pilaszy, I.,
      Nemeth, B., and Tikk, D. Scalable collaborative filtering approaches for
      large recommender systems. The Journal of Machine Learning Research,
      10:623-656, 2009. ISSN 1532-4435., except with the addition of
      learning-rate decay and a different stopping criteria.)
      [intrinsic]
         The number of intrinsic (or latent) feature dims to use to represent
         each user's preferences.
      <options>
         -regularize [value]
            Specify a regularization value. Typically, this is a small value.
            Larger values will put more pressure on the system to use small
            values in the matrix factors.
         -miniters [value]
            Specify a the minimum number of iterations to train the model
            before checking its validation error. This ensures that model does
            at least a certain amount of training before converging.
         -decayrate [value]
            Specify a decay rate in the range of (0-1) for the learning rate
            parameter. Value closer to 1 will cause the rate the decay slower
            while rate closer to 0 cause the a faster decay.
         -nonneg
            Constrain all non-bias weights to be non-negative
   nlpca [intrinsic] <options>
      A non-linear PCA collaborative-filtering algorithm. This algorithm was
      published in Scholz, M. Kaplan, F. Guy, C. L. Kopka, J. Selbig, J.,
      Non-linear PCA: a missing data approach, In Bioinformatics, Vol. 21,
      Number 20, pp. 3887-3895, Oxford University Press, 2005. It uses a
      generalization of backpropagation to train a multi-layer perceptron to
      fit to the known ratings, and to predict unknown values.
      [intrinsic]
         The number of intrinsic (or latent) feature dims to use to represent
         each user's preferences.
      <options>
         -addlayer [size]
            Add a hidden layer with "size" logisitic units to the network. You
            may use this option multiple times to add multiple layers. The
            first layer added is adjacent to the input features. The last layer
            added is adjacent to the output labels. If you don't add any hidden
            layers, the network is just a single layer of sigmoid units.
         -learningrate [value]
            Specify a value for the learning rate. The default is 0.1
         -momentum [value]
            Specifies a value for the momentum. The default is 0.0
         -windowepochs [value]
            Specifies the number of training epochs that are performed before
            the stopping criteria is tested again. Bigger values will result in
            a more stable stopping criteria. Smaller values will check the
            stopping criteria more frequently.
         -minwindowimprovement [value]
            Specify the minimum improvement that must occur over the window of
            epochs for training to continue. [value] specifies the minimum
            decrease in error as a ratio. For example, if value is 0.02, then
            training will stop when the mean squared error does not decrease by
            two percent over the window of epochs. Smaller values will
            typically result in longer training times.
         -dontsquashoutputs
            Don't squash the outputs values with the logistic function. Just
            report the net value at the output layer. This is often used for
            regression.
         -noinputbias
            Do not use an input bias.
         -nothreepass
            Use one-pass training instead of three-pass training.
         -regularize [value]
            Specify a regularization value. Typically, this is a small value.
            Larger values will put more pressure on the system to use small
            values in the matrix factors. Note that is only used if three-pass
            training is being used and there is at least on hidden layer.
         -miniters [value]
            Specify a the minimum number of iterations to train the model
            before checking its validation error. This ensures that model does
            at least a certain amount of training before converging.
         -decayrate [value]
            Specify a decay rate in the range of (0-1) for the learning rate
            parameter. Value closer to 1 will cause the rate the decay slower
            while rate closer to 0 cause the a faster decay.
   hybridnlpca [intrinsic] [item_dataset] <data_opts> <options>
      A hybrid content-based recommendation and collaborative filter based on
      NLPCA. This approach uses collaborative filtering and content-based
      recommendation DUDE.
      [intrinsic]
         The number of intrinsic (or latent) feature dims to use to represent
         each user's preferences.
      [items_dataset] <data_opts>
         The dataset representing the item attributes. It is assumed that the
         item dataset matrix is in the form of item id followed by the
         attribute values for each item. It assumes that the item corresponds
         with the first column in the 3-col data.
      <data_opts>
         -labels [attr_list]
            Specify which attributes to use as labels. (If not specified, the
            default is to use the last attribute for the label.) [attr_list] is
            a comma-separated list of zero-indexed columns. A hypen may be used
            to specify a range of columns.  A '*' preceding a value means to
            index from the right instead of the left. For example, "0,2-5"
            refers to columns 0, 2, 3, 4, and 5. "*0" refers to the last
            column. "0-*1" refers to all but the last column.
         -ignore [attr_list]
            Specify attributes to ignore. [attr_list] is a comma-separated list
            of zero-indexed columns. A hypen may be used to specify a range of
            columns.  A '*' preceding a value means to index from the right
            instead of the left. For example, "0,2-5" refers to columns 0, 2,
            3, 4, and 5. "*0" refers to the last column. "0-*1" refers to all
            but the last column.
      <options>
         -addlayer [size]
            Add a hidden layer with "size" logisitic units to the network. You
            may use this option multiple times to add multiple layers. The
            first layer added is adjacent to the input features. The last layer
            added is adjacent to the output labels. If you don't add any hidden
            layers, the network is just a single layer of sigmoid units.
         -learningrate [value]
            Specify a value for the learning rate. The default is 0.1
         -momentum [value]
            Specifies a value for the momentum. The default is 0.0
         -windowepochs [value]
            Specifies the number of training epochs that are performed before
            the stopping criteria is tested again. Bigger values will result in
            a more stable stopping criteria. Smaller values will check the
            stopping criteria more frequently.
         -minwindowimprovement [value]
            Specify the minimum improvement that must occur over the window of
            epochs for training to continue. [value] specifies the minimum
            decrease in error as a ratio. For example, if value is 0.02, then
            training will stop when the mean squared error does not decrease by
            two percent over the window of epochs. Smaller values will
            typically result in longer training times.
         -dontsquashoutputs
            Don't squash the outputs values with the logistic function. Just
            report the net value at the output layer. This is often used for
            regression.
         -crossentropy
            Use cross-entropy instead of squared-error for the error signal.
         -noinputbias
            Do not use an input bias.
         -nothreepass
            Use one-pass training instead of three-pass training.
         -regularize [value]
            Specify a regularization value. Typically, this is a small value.
            Larger values will put more pressure on the system to use small
            weight values. Note that is only used if three-pass training is
            being used and there is at least on hidden layer.
         -miniters [value]
            Specify a the minimum number of iterations to train the model
            before checking its validation error. This ensures that model does
            at least a certain amount of training before converging.
         -decayrate [value]
            Specify a decay rate in the range of (0-1) for the learning rate
            parameter. Value closer to 1 will cause the rate the decay slower
            while rate closer to 0 cause the a faster decay.
   contentbased [item_dataset] <data_opts> [learning_algorithm] <learning_opts>
      A content-based filter. A content-based recommendation filter is build
      using the supervised learning algorithms provided in the Waffles toolkit.
      [items_dataset] <data_opts>
         The dataset representing the item attributes. It is assumed that the
         item dataset matrix is in the form of item id followed by the
         attribute values for each item. It assumes that the item corresponds
         with the first column in the 3-col data.
      <data_opts>
         -labels [attr_list]
            Specify which attributes to use as labels. (If not specified, the
            default is to use the last attribute for the label.) [attr_list] is
            a comma-separated list of zero-indexed columns. A hypen may be used
            to specify a range of columns.  A '*' preceding a value means to
            index from the right instead of the left. For example, "0,2-5"
            refers to columns 0, 2, 3, 4, and 5. "*0" refers to the last
            column. "0-*1" refers to all but the last column.
         -ignore [attr_list]
            Specify attributes to ignore. [attr_list] is a comma-separated list
            of zero-indexed columns. A hypen may be used to specify a range of
            columns.  A '*' preceding a value means to index from the right
            instead of the left. For example, "0,2-5" refers to columns 0, 2,
            3, 4, and 5. "*0" refers to the last column. "0-*1" refers to all
            but the last column.
      [learning_algorithm] <learning_opts>
         See the usage statement for the desired learning algorithm using
         "waffles_learn usage".
   cbcf [item_dataset] <data_opts> [learning_algorithm] <learning_opts> -- [k] <inst_options>
      A content-boosted collaborative filter. This algorithm was published in
      P. Melville, R. Mooney, and R. Nagarajan, Content-Boosted Collaborative
      Filtering for Improved Recommendations, in Proceedings of the 18th
      National Conference on Artificial Intelligence (AAAI-02), pp. 187-192,
      2002. It uses a content-based filter to fill in the sparse matrix before
      giving it to a collaborative filter. We followed the Author's
      implementation and used an instance-based collaborative filter. Note that
      this algorithm often takes a while to run.
      [items_dataset] <data_opts>
         The dataset representing the item attributes. It is assumed that the
         item dataset matrix is in the form of item id followed by the
         attribute values for each item. It assumes that the item corresponds
         with the first column in the 3-col data.
      <data_opts>
         -labels [attr_list]
            Specify which attributes to use as labels. (If not specified, the
            default is to use the last attribute for the label.) [attr_list] is
            a comma-separated list of zero-indexed columns. A hypen may be used
            to specify a range of columns.  A '*' preceding a value means to
            index from the right instead of the left. For example, "0,2-5"
            refers to columns 0, 2, 3, 4, and 5. "*0" refers to the last
            column. "0-*1" refers to all but the last column.
         -ignore [attr_list]
            Specify attributes to ignore. [attr_list] is a comma-separated list
            of zero-indexed columns. A hypen may be used to specify a range of
            columns.  A '*' preceding a value means to index from the right
            instead of the left. For example, "0,2-5" refers to columns 0, 2,
            3, 4, and 5. "*0" refers to the last column. "0-*1" refers to all
            but the last column.
      [learning_algorithm] <learning_opts>
         See the usage statement for the desired learning algorithm using
         "waffles_learn usage".
      --
         Denotes the ending of the learning algorithm parameters and the
         parameters for the collaborative filter.
      [k]
         The number of neighbors to use.
      <inst_options>
         -pearson
            Use Pearson Correlation to compute the similarity between users.
            (The default is to use the cosine method.)
         -regularize [value]
            Add [value] to the denominator in order to regularize the results.
            This ensures that recommendations will not be dominated when a
            small number of overlapping items occurs. Typically, [value] will
            be a small number, like 0.5 or 1.5.
         -sigWeight [value]
            Scale the significane weighting of the items based on how many
            items two users have rated. The default value of 0 indicates the no
            significance weightig will be done. The significance is scaled as
            numItemsRatedByBotheUSers/sigWeight.

Previous      Next

Back to the table of contents