Class RandomSearchCV

  • Direct Known Subclasses:
    GridSearchCV

    public class RandomSearchCV
    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 by splitting the train set of the dataset in validations sets using cross validation. 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

      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure> qualityMeasureClass,
                              int cv,
                              double coverage)
        RandomSearchCV 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 contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure> qualityMeasureClass,
                              int cv,
                              double coverage,
                              long seed)
        RandomSearchCV 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 contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure> qualityMeasureClass,
                              int cv,
                              int numIters)
        RandomSearchCV 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 contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        cv - Number of fold for the cross validation
        numIters - Number of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure> qualityMeasureClass,
                              Map<String,​Object> qualityMeasureParams,
                              int cv,
                              double coverage)
        RandomSearchCV 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 contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure> qualityMeasureClass,
                              Map<String,​Object> qualityMeasureParams,
                              int cv,
                              double coverage,
                              long seed)
        RandomSearchCV 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 contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure> qualityMeasureClass,
                              Map<String,​Object> qualityMeasureParams,
                              int cv,
                              int numIters)
        RandomSearchCV 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 contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        numIters - Number of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure> qualityMeasureClass,
                              Map<String,​Object> qualityMeasureParams,
                              int cv,
                              int numIters,
                              long seed)
        RandomSearchCV 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 contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasureParams - Map object containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        numIters - Number of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure>[] qualityMeasuresClasses,
                              int cv,
                              double coverage)
        RandomSearchCV 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>)
        qualityMeasuresClasses - QualityMeasure classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure>[] qualityMeasuresClasses,
                              int cv,
                              double coverage,
                              long seed)
        RandomSearchCV 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>)
        qualityMeasuresClasses - QualityMeasure classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure>[] qualityMeasuresClasses,
                              int cv,
                              int numIters)
        RandomSearchCV 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>)
        qualityMeasuresClasses - QualityMeasure classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        cv - Number of fold for the cross validation
        numIters - Number of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure>[] qualityMeasuresClasses,
                              Map<String,​Object>[] qualityMeasuresParams,
                              int cv,
                              double coverage)
        RandomSearchCV 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>)
        qualityMeasuresClasses - QualityMeasure classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasuresParams - Maps objects containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure>[] qualityMeasuresClasses,
                              Map<String,​Object>[] qualityMeasuresParams,
                              int cv,
                              double coverage,
                              long seed)
        RandomSearchCV 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>)
        qualityMeasuresClasses - QualityMeasure classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasuresParams - Maps objects containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        coverage - Percentage of samples of the development set to be evaluated
        seed - Random seed for random numbers generation
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure>[] qualityMeasuresClasses,
                              Map<String,​Object>[] qualityMeasuresParams,
                              int cv,
                              int numIters)
        RandomSearchCV 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>)
        qualityMeasuresClasses - QualityMeasure classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasuresParams - Maps objects containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        numIters - Number of samples of the development set to be evaluated
      • RandomSearchCV

        public RandomSearchCV​(DataModel datamodel,
                              ParamsGrid grid,
                              Class<? extends Recommender> recommenderClass,
                              Class<? extends QualityMeasure>[] qualityMeasuresClasses,
                              Map<String,​Object>[] qualityMeasuresParams,
                              int cv,
                              int numIters,
                              long seed)
        RandomSearchCV 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>)
        qualityMeasuresClasses - QualityMeasure classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)
        qualityMeasuresParams - Maps objects containing the quality measure parameters names (keys) and values (value)
        cv - Number of fold for the cross validation
        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 the search
      • getBestParams

        public Map<String,​Object> getBestParams()
        Get the best result parameters.
        Returns:
        Map with best params
      • getBestParams

        public Map<String,​Object> getBestParams​(boolean lowerIsBetter)
        Get the best result parameters.
        Parameters:
        lowerIsBetter - Boolean value that takes true if the quality measure is better the lower its value. False otherwise.
        Returns:
        Map with best params
      • getBestParams

        public Map<String,​Object> getBestParams​(int index,
                                                      boolean lowerIsBetter)
        Get the best result parameters.
        Parameters:
        index - Index of the quality measure for which the best parameters are to be obtained.
        lowerIsBetter - Boolean value that takes true if the quality measure is better the lower its value. False otherwise.
        Returns:
        Map with best params
      • getBestScore

        public double getBestScore()
        Get the best result score.
        Returns:
        double value with best score.
      • getBestScore

        public double getBestScore​(boolean lowerIsBetter)
        Get the best result score.
        Parameters:
        lowerIsBetter - Boolean value that takes true if the quality measure is better the lower its value. False otherwise.
        Returns:
        double value with best score.
      • getBestScore

        public double getBestScore​(int index,
                                   boolean lowerIsBetter)
        Get the best result score.
        Parameters:
        index - Index of the quality measure for which the best score is to be obtained
        lowerIsBetter - Boolean value that takes true if the quality measure is better the lower its value. False otherwise.
        Returns:
        double value with best score.
      • printResults

        public void printResults​(int topN)
        Prints the results of the random search. By default, the quality measure is better the lower its value.
        Parameters:
        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 - Boolean value that takes true if the quality measure is better the lower its value. False otherwise.
      • printResults

        public void printResults​(int topN,
                                 int index,
                                 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
        index - Index of the quality measure for which the best results are to be printed
        lowerIsBetter - Boolean value that takes true if the quality measure is better the lower its value. False otherwise.
      • printResults

        public void printResults​(String numberFormat,
                                 int topN,
                                 int index,
                                 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
        index - Index of the quality measure for which the best results are to be printed
        lowerIsBetter - Boolean value that takes true if the quality measure is better the lower its value. False otherwise.
      • exportResults

        public void exportResults​(String filename)
                           throws IOException
        Exports results of RandomSerachCV in csv format
        Parameters:
        filename - File name
        Throws:
        IOException - When file is not found or is locked.
      • exportResults

        public void exportResults​(String filename,
                                  boolean includeHeader)
                           throws IOException
        Exports results of RandomSerachCV in csv format
        Parameters:
        filename - File name
        includeHeader - Include CSV header line. By default: true
        Throws:
        IOException - When file is not found or is locked.
      • exportResults

        public void exportResults​(String filename,
                                  String separator)
                           throws IOException
        Exports results of RandomSerachCV in csv format
        Parameters:
        filename - File name
        separator - CSV separator field. By default: colon character (,)
        Throws:
        IOException - When file is not found or is locked.
      • exportResults

        public void exportResults​(String filename,
                                  String separator,
                                  boolean includeHeader)
                           throws IOException
        Exports results of RandomSerachCV in csv format
        Parameters:
        filename - File name
        separator - CSV separator field. By default: colon character (,)
        includeHeader - Include CSV header line. By default: true
        Throws:
        IOException - When file is not found or is locked.