Class RandomSearch
- java.lang.Object
-
- es.upm.etsisi.cf4j.util.optimization.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 Summary
Constructors Modifier Constructor Description RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, double coverage)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, double coverage, long seed)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, int numIters)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, double coverage)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, double coverage, long seed)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int numIters)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int numIters, long seed)
RandomSearch constructorprotected
RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int numIters, long seed, String progressPrefix)
RandomSearch constructor to be used inside es.upm.etsisi.cf4j.util.optimization packageRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, double coverage)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, double coverage, long seed)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, int numIters)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, double coverage)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, double coverage, long seed)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, int numIters)
RandomSearch constructorRandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, Map<String,Object> qualityMeasureParams, int numIters, long seed)
RandomSearch constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
exportResults(String filename)
Exports results of RandomSerach in csv formatvoid
exportResults(String filename, boolean includeHeader)
Exports results of RandomSerach in csv formatvoid
exportResults(String filename, String separator)
Exports results of RandomSerach in csv formatvoid
exportResults(String filename, String separator, boolean includeHeader)
Exports results of RandomSerach in csv formatvoid
fit()
Performs grid 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.protected Map<Map<String,Object>,Double[]>
getResults()
This method is required for cross validation (CV).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
-
RandomSearch
public RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, double coverage)
RandomSearch 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 classes used to evaluate the Recommender. These classes must contain a constructor with the signature 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, double coverage, long seed)
RandomSearch 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 classes used to evaluate the Recommender. These classes must contain a constructor with the signature QualityMeasure.<init>(Recommender, Map<String, Object>)coverage
- Percentage of samples of the development set to be evaluatedseed
- Random seed for random numbers generation
-
RandomSearch
public RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure> qualityMeasureClass, int numIters)
RandomSearch 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 classes used to evaluate the Recommender. These classes must contain a constructor with the signature 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, Map<String,Object> qualityMeasureParams, double coverage)
RandomSearch 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)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, long seed)
RandomSearch 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)coverage
- Percentage of samples of the development set to be evaluatedseed
- 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 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)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, Map<String,Object> qualityMeasureParams, int numIters, long seed)
RandomSearch 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)numIters
- Number of samples of the development set to be evaluatedseed
- Random seed for random numbers generation
-
RandomSearch
public RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, double coverage)
RandomSearch 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>)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>[] qualityMeasuresClasses, double coverage, long seed)
RandomSearch 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>)coverage
- Percentage of samples of the development set to be evaluatedseed
- Random seed for random numbers generation
-
RandomSearch
public RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, int numIters)
RandomSearch 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>)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>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, double coverage)
RandomSearch 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)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>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, double coverage, long seed)
RandomSearch 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)coverage
- Percentage of samples of the development set to be evaluatedseed
- Random seed for random numbers generation
-
RandomSearch
public RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int numIters)
RandomSearch 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)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>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int numIters, long seed)
RandomSearch 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)numIters
- Number of samples of the development set to be evaluatedseed
- Random seed for random numbers generation
-
RandomSearch
protected RandomSearch(DataModel datamodel, ParamsGrid grid, Class<? extends Recommender> recommenderClass, Class<? extends QualityMeasure>[] qualityMeasuresClasses, Map<String,Object>[] qualityMeasuresParams, int numIters, long seed, String progressPrefix)
RandomSearch constructor to be used inside es.upm.etsisi.cf4j.util.optimization package- 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)numIters
- Number of samples of the development set to be evaluatedseed
- Random seed for random numbers generationprogressPrefix
- String prefix to be printed during fit
-
-
Method Detail
-
fit
public void fit()
Performs grid 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 RandomSerach 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 RandomSerach 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 RandomSerach 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 RandomSerach 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.
-
-