Class RandomSearchCV
- java.lang.Object
-
- es.upm.etsisi.cf4j.util.optimization.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 Summary
Constructors Constructor Description RandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, int cv, double coverage)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, int cv, double coverage, long seed)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, int cv, int numIters)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int cv, double coverage)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int cv, double coverage, long seed)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int cv, int numIters)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int cv, int numIters, long seed)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, int cv, double coverage)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, int cv, double coverage, long seed)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, int cv, int numIters)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, int cv, double coverage)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, int cv, double coverage, long seed)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, int cv, int numIters)
RandomSearchCV constructorRandomSearchCV(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, int cv, int numIters, long seed)
RandomSearchCV constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
exportResults(String filename)
Exports results of RandomSerachCV in csv formatvoid
exportResults(String filename, boolean includeHeader)
Exports results of RandomSerachCV in csv formatvoid
exportResults(String filename, String separator)
Exports results of RandomSerachCV in csv formatvoid
exportResults(String filename, String separator, boolean includeHeader)
Exports results of RandomSerachCV in csv formatvoid
fit()
Performs the searchMap<String,Object>
getBestParams()
Get the best result parameters.Map<String,Object>
getBestParams(boolean lowerIsBetter)
Get the best result parameters.Map<String,Object>
getBestParams(int index, boolean lowerIsBetter)
Get the best result parameters.double
getBestScore()
Get the best result score.double
getBestScore(boolean lowerIsBetter)
Get the best result score.double
getBestScore(int index, boolean lowerIsBetter)
Get the best result score.void
printResults(int topN)
Prints the results of the random search.void
printResults(int topN, boolean lowerIsBetter)
Prints the results of the random search.void
printResults(int topN, int index, boolean lowerIsBetter)
Prints the results of the random search.void
printResults(String numberFormat, int topN, int index, boolean lowerIsBetter)
Prints the results of the random search.
-
-
-
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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- Percentage of samples of the development set to be evaluatedseed
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationnumIters
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- Percentage of samples of the development set to be evaluatedseed
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationnumIters
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationnumIters
- Number of samples of the development set to be evaluatedseed
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- Percentage of samples of the development set to be evaluatedseed
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationnumIters
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationcoverage
- Percentage of samples of the development set to be evaluatedseed
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationnumIters
- 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 instancegrid
- ParamsGrid instance containing the development setrecommenderClass
- 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 validationnumIters
- Number of samples of the development set to be evaluatedseed
- 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 obtainedlowerIsBetter
- 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 oneslowerIsBetter
- 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 onesindex
- Index of the quality measure for which the best results are to be printedlowerIsBetter
- 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 valuestopN
- Number of entries of the development set to be shown as the top onesindex
- Index of the quality measure for which the best results are to be printedlowerIsBetter
- 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 nameincludeHeader
- 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 nameseparator
- 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 nameseparator
- 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.
-
-