Class RandomSearch

  • Direct Known Subclasses:
    GridSearch

    public class RandomSearch
    extends Object
    Utility class to performs a random search over a Recommender instance. The Recommender class used during the random search must contains a constructor with the signature Recommender::<init>(DataModel, Map<String, Object>) that initializes the Recommender using the attributes defined in the Map object. The parameters used in the search process, i.e. the development set, must be defined in a ParamsGrid instance. The random search is executed in such a way that it minimizes (by default) or maximizes a QualityMeasure instance over the test set of the DataModel instance. If the QualityMeasure requires parameters to work, it must contains a constructor with the signature QualityMeasure::<init>(Recommender, Map<String, Object>) that initializes the QualityMeasure using the attributes defined in the Map object. The search is performed by selecting numIters parameters of the development set.
    • Constructor Detail

      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            int numIters)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        numIters - Number of samples of the development set to be evaluated
      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            int numIters,
                            long seed)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        numIters - Number of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            Map<String,​Object> qualityMeasureParams,
                            int numIters)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        numIters - Number of samples of the development set to be evaluated
      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            double coverage)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        coverage - Percentage of samples of the development set to be evaluated
      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            Map<String,​Object> qualityMeasureParams,
                            double coverage)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        coverage - Percentage of samples of the development set to be evaluated
      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            double coverage,
                            long seed)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        coverage - Percentage of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            Map<String,​Object> qualityMeasureParams,
                            double coverage,
                            long seed)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        coverage - Percentage of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearch

        public RandomSearch​(DataModel datamodel,
                            ParamsGrid grid,
                            Class<? extends Recommender> recommenderClass,
                            Class<? extends QualityMeasure> qualityMeasureClass,
                            Map<String,​Object> qualityMeasureParams,
                            int numIters,
                            long seed)
        RandomSearch constructor
        Parameters:
        datamodel - DataModel instance
        grid - ParamsGrid instance containing the development set
        recommenderClass - Recommender class to be evaluated. This class must contains a constructor with the signature Recommender.<init>(DataModel, Map<String, Object>)
        qualityMeasureClass - QualityMeasure class used to evaluate the Recommender. This class must contains a constricutor with the signautre QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        numIters - Number of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
    • Method Detail

      • fit

        public void fit()
        Performs grid search
      • printResults

        public void printResults()
        Prints the results of the random search. By default, the quality measure is better the lower its value.
      • printResults

        public void printResults​(int topN)
        Prints the results of the random search
        Parameters:
        topN - Number of entries of the development set to be shown as the top ones
      • printResults

        public void printResults​(String numberFormat)
        Prints the results of the random search. By default, the quality measure is better the lower its value.
        Parameters:
        numberFormat - Number format for the quality measure values
      • printResults

        public void printResults​(boolean lowerIsBetter)
        Prints the results of the random search
        Parameters:
        lowerIsBetter - True if the quality measure is better the lower its value. False otherwise.
      • printResults

        public void printResults​(String numberFormat,
                                 int topN)
        Prints the results of the random search
        Parameters:
        numberFormat - Number format for the quality measure values
        topN - Number of entries of the development set to be shown as the top ones
      • printResults

        public void printResults​(int topN,
                                 boolean lowerIsBetter)
        Prints the results of the random search
        Parameters:
        topN - Number of entries of the development set to be shown as the top ones
        lowerIsBetter - True if the quality measure is better the lower its value. False otherwise.
      • printResults

        public void printResults​(String numberFormat,
                                 boolean lowerIsBetter)
        Prints the results of the random search
        Parameters:
        numberFormat - Number format for the quality measure values
        lowerIsBetter - True if the quality measure is better the lower its value. False otherwise.
      • printResults

        public void printResults​(String numberFormat,
                                 int topN,
                                 boolean lowerIsBetter)
        Prints the results of the random search
        Parameters:
        numberFormat - Number format for the quality measure values
        topN - Number of entries of the development set to be shown as the top ones
        lowerIsBetter - True if the quality measure is better the lower its value. False otherwise.
      • getResults

        public List<org.apache.commons.math3.util.Pair<String,​Double>> getResults()