Libraries/Microsoft.ML.Sweeper.xml

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Microsoft.ML.Sweeper</name>
    </assembly>
    <members>
        <member name="T:Microsoft.ML.Runtime.Sweeper.SignatureSweeperFromParameterList">
            <summary>
            Signature for the GUI loaders of sweepers.
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.SweeperBase">
            <summary>
            Base sweeper that ensures the suggestions are different from each other and from the previous runs.
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.RandomGridSweeper">
            <summary>
            Random grid sweeper, it generates random points from the grid.
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper">
            <summary>
            Kernel Density Optimization (KDO) is a sequential model-based optimization method originally developed by George D. Montanez (me).
            The search space consists of a unit hypercube, with one dimension per hyperparameter (it is a spatial method, so scaling the dimensions
            to the unit hypercube is critical). The idea is that the exploration of the cube to find good values is performed by creating an approximate
            (and biased) kernel density estimate of the space (where density corresponds to metric performance), concentrating mass in regions of better
            performance, then drawing samples from the pdf.
             
            To trade off exploration versus exploitation, an fitness proportional mutation scheme is used. Uniform random points are selected during
            initialization and during the runs (parameter controls how often). A Gaussian model is fit to the distribution of performance values, and
            each evaluated point in the history is given a value between 0 and 1 corresponding to the CDF evaluation of its performance under the
            Gaussian. Points with low quantile values are mutated more strongly than those with higher values, which allows the method to hone in
            precisely when approaching really good regions.
             
            Categorical parameters are handled by forming a categorical distribution on possible values weighted by observed performance of each value,
            taken independently.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper.GenerateCandidateConfigurations(System.Int32,Microsoft.ML.Runtime.IRunResult[])">
            <summary>
            REVIEW: Assumes metric is between 0.0 and 1.0. Will not work with metrics that have values outside this range.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper.SampleChild(Microsoft.ML.Runtime.ParameterSet,System.Double,System.Int32,Microsoft.ML.Runtime.IRunResult[],System.Double,System.Double,System.Boolean)">
            <summary>
            Sample child configuration from configuration centered at parent, using fitness proportional mutation.
            </summary>
            <param name="parent">Starting parent configuration (used as mean in multivariate Gaussian).</param>
            <param name="fitness">Numeric value indicating how good a configuration parent is.</param>
            <param name="n">Count of how many items currently in history.</param>
            <param name="previousRuns">Run history.</param>
            <param name="rMean">Mean metric value of previous random runs.</param>
            <param name="rVar">Metric value empirical variance of previous random runs.</param>
            <param name="isMetricMaximizing">Flag for if we are minimizing or maximizing values.</param>
            <returns>A mutated version of parent (i.e., point sampled near parent).</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper.BuildBandwidthMatrix(System.Int32,System.Double[])">
            <summary>
            Creates a diagonal rule-of-thumb kernel bandwidth matrix.
            </summary>
            <param name="n">Number of items in history (just acts as a regularization parameter in KDO).</param>
            <param name="stddevs">Array of per feature standard deviations.</param>
            <returns>A matrix of bandwidth values, for use in kernel density estimation.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper.HistoryToWeights(Microsoft.ML.Runtime.IRunResult[],System.Int32,System.Double,System.Double)">
            <summary>
            Converts a set of history into a set of weights, one for each run in the history.
            </summary>
            <param name="history">Input set of historical runs.</param>
            <param name="n">Number of total runs (history may be truncated)</param>
            <param name="rMean">Mean metric value of previous random runs.</param>
            <param name="rVar">Metric value empirical variance of previous random runs.</param>
            <returns>Array of weights.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper.CategoriesToWeights(Microsoft.ML.Runtime.Sweeper.DiscreteValueGenerator,Microsoft.ML.Runtime.IRunResult[])">
            <summary>
            New version of CategoryToWeights method, which fixes an issue where we could
            potentially assign a lot of mass to bad categories.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper.CategoriesToWeightsOld(Microsoft.ML.Runtime.Sweeper.DiscreteValueGenerator,System.Collections.Generic.IEnumerable{Microsoft.ML.Runtime.IRunResult})">
            <summary>
            REVIEW: This was the original CategoriesToWeights function. Should be deprecated once we can validate the new function works
            better. It contains a subtle issue, such that categories with poor performance but which are seen a lot will have
            high weight. New function addresses this issue, while also improving exploration capability of algorithm.
            </summary>
            <param name="param"></param>
            <param name="previousRuns"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.KdoSweeper.TruncateHistory(Microsoft.ML.Runtime.IRunResult[])">
            <summary>
            Keep only the top K results from the history.
            </summary>
            <param name="history">set of all history.</param>
            <returns>The best K points contained in the history.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.SweeperProbabilityUtils.NormalRVs(System.Int32,System.Double,System.Double)">
            <summary>
            Samples from a Gaussian Normal with mean mu and std dev sigma.
            </summary>
            <param name="numRVs">Number of samples</param>
            <param name="mu">mean</param>
            <param name="sigma">standard deviation</param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.SweeperProbabilityUtils.SampleCategoricalDistribution(System.Int32,System.Double[])">
            <summary>
            This performs (slow) roulette-wheel sampling of a categorical distribution. Should be swapped for other
            method as soon as one is available.
            </summary>
            <param name="numSamples">Number of samples to draw.</param>
            <param name="weights">Weights for distribution (should sum to 1).</param>
            <returns>A set of indicies indicating which element was chosen for each sample.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.Algorithms.SweeperProbabilityUtils.BinarySearch(System.Double[],System.Double,System.Int32,System.Int32)">
            <summary>
            Simple binary search method for finding smallest index in array where value
            meets or exceeds what you're looking for.
            </summary>
            <param name="a">Array to search</param>
            <param name="u">Value to search for</param>
            <param name="low">Left boundary of search</param>
            <param name="high">Right boundary of search</param>
            <returns></returns>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.UniformRandomSweeper">
            <summary>
            Random sweeper, it generates random values for each of the parameters.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SmacSweeper.GenerateCandidateConfigurations(System.Int32,System.Collections.Generic.IEnumerable{Microsoft.ML.Runtime.IRunResult},Microsoft.ML.Runtime.FastTree.FastForestRegressionPredictor)">
            <summary>
            Generates a set of candidate configurations to sweep through, based on a combination of random and local
            search, as outlined in Hutter et al - Sequential Model-Based Optimization for General Algorithm Configuration.
            Makes use of class private members which determine how many candidates are returned. This number will include
            random configurations interleaved (per the paper), and thus will be double the specified value.
            </summary>
            <param name="numOfCandidates">Number of candidate solutions to return.</param>
            <param name="previousRuns">History of previously evaluated points, with their emprical performance values.</param>
            <param name="forest">Trained random forest ensemble. Used in evaluating the candidates.</param>
            <returns>An array of ParamaterSets which are the candidate configurations to sweep.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SmacSweeper.GreedyPlusRandomSearch(Microsoft.ML.Runtime.ParameterSet[],Microsoft.ML.Runtime.FastTree.FastForestRegressionPredictor,System.Int32,System.Collections.Generic.IEnumerable{Microsoft.ML.Runtime.IRunResult})">
            <summary>
            Does a mix of greedy local search around best performing parameter sets, while throwing random parameter sets into the mix.
            </summary>
            <param name="parents">Beginning locations for local greedy search.</param>
            <param name="forest">Trained random forest, used later for evaluating parameters.</param>
            <param name="numOfCandidates">Number of candidate configurations returned by the method (top K).</param>
            <param name="previousRuns">Historical run results.</param>
            <returns>Array of parameter sets, which will then be evaluated.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SmacSweeper.LocalSearch(Microsoft.ML.Runtime.ParameterSet,Microsoft.ML.Runtime.FastTree.FastForestRegressionPredictor,System.Double,System.Double)">
            <summary>
            Performs a local one-mutation neighborhood greedy search.
            </summary>
            <param name="parent">Starting parameter set configuration.</param>
            <param name="forest">Trained forest, for evaluation of points.</param>
            <param name="bestVal">Best performance seen thus far.</param>
            <param name="epsilon">Threshold for when to stop the local search.</param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SmacSweeper.GetOneMutationNeighborhood(Microsoft.ML.Runtime.ParameterSet)">
            <summary>
            Computes a single-mutation neighborhood (one param at a time) for a given configuration. For
            numeric parameters, samples K mutations (i.e., creates K neighbors based on that paramater).
            </summary>
            <param name="parent">Starting configuration.</param>
            <returns>A set of configurations that each differ from parent in exactly one parameter.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SmacSweeper.GetForestRegressionLeafValues(Microsoft.ML.Runtime.FastTree.FastForestRegressionPredictor,Microsoft.ML.Runtime.ParameterSet[])">
            <summary>
            Goes through forest to extract the set of leaf values associated with filtering each configuration.
            </summary>
            <param name="forest">Trained forest predictor, used for filtering configs.</param>
            <param name="configs">Parameter configurations.</param>
            <returns>2D array where rows correspond to configurations, and columns to the predicted leaf values.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SmacSweeper.ComputeForestStats(System.Double[][])">
            <summary>
            Computes the empirical means and standard deviations for trees in the forest for each configuration.
            </summary>
            <param name="leafValues">The sets of leaf values from which the means and standard deviations are computed.</param>
            <returns>A 2D array with one row per set of tree values, and the columns being mean and stddev, respectively.</returns>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.IAsyncSweeper">
            <summary>
            An interface for sweeper with asynchornous update and proposal.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.IAsyncSweeper.Propose">
            <summary>
            Propose a <see cref="T:Microsoft.ML.Runtime.ParameterSet"/>.
            </summary>
            <returns>A future <see cref="T:Microsoft.ML.Runtime.ParameterSet"/> and its id. Null if unavailable or cancelled.</returns>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.IAsyncSweeper.Update(System.Int32,Microsoft.ML.Runtime.IRunResult)">
            <summary>
            Notify the sweeper of a finished run.
            </summary>
            <param name="id">Id of the run.</param>
            <param name="result">Result of the run. Null if not available.</param>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.IAsyncSweeper.Cancel">
            <summary>
            Request the sweeper to stop generating and dispensing new parameters.
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.SimpleAsyncSweeper">
            <summary>
            Expose existing <see cref="T:Microsoft.ML.Runtime.ISweeper"/>s as <see cref="T:Microsoft.ML.Runtime.Sweeper.IAsyncSweeper"/> with no synchronization over the past runs.
            Nelder-Mead requires synchronization so is not compatible with SimpleAsyncSweeperBase.
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.DeterministicSweeperAsync">
            <summary>
            An wrapper around <see cref="T:Microsoft.ML.Runtime.ISweeper"/> which enforces determinism by imposing synchronization over past runs.
            Suppose n <see cref="T:Microsoft.ML.Runtime.ParameterSet"/>s are generated up to this point. The sweeper will refrain from making a decision
            until the runs with indices in [0, n - relaxation) have all finished. A new batch of <see cref="T:Microsoft.ML.Runtime.ParameterSet"/>s will be
            generated based on the first n - relaxation runs.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.LocalExeConfigRunner.RunProcess(System.String,System.String[],System.String,System.IO.TextWriter,System.IO.TextWriter)">
            <summary>
            Run specified EXE with given arguments
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.LongValueGenerator">
            <summary>
            The integer type parameter sweep.
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.FloatValueGenerator">
            <summary>
            The floating point type parameter sweep.
            </summary>
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.DiscreteValueGenerator">
            <summary>
            The discrete parameter sweep.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SuggestedSweepsParser.TryParseParameter(System.String,System.Type,System.String,Microsoft.ML.Runtime.IValueGenerator@,System.String@)">
             <summary>
             Generic parameter parser. Currently hand-hacked to auto-detect type.
             
             Generic form: Name:Values
             e.g.: lr:0.05-0.4
                      lambda:0.1-1000@log10
                      nl:2-64@log2
                      norm:-,+
             </summary>
             REVIEW: allow overriding auto-detection to specify type
             and delegate to parameter type for actual parsing
             REVIEW: specifying ordinal discrete parameters
        </member>
        <member name="T:Microsoft.ML.Runtime.Sweeper.SynthConfigRunner">
            <summary>
            This class gives a simple way of running optimization experiments on synthetic functions, rather than on actual learning problems.
            It was initially created to test the sweeper methods on the Rastrigin function.
            </summary>
        </member>
        <member name="M:Microsoft.ML.Runtime.Sweeper.SynthConfigRunner.Rastrigin(Microsoft.ML.Runtime.ParameterSet)">
            <summary>
            Synthetic function used in the optimization literature to test optimization methods. Highly multi-modal,
            this functions causes problems for methods that get stuck at local optima (like hill-climbing methods).
            This synthetic function takes the place of an actual metric evaluation (hence, a synthetic runner).
            </summary>
            <param name="ps">The set of parameters to evaluate using the function.</param>
            <returns>The numerical evaluation of the parameter values.</returns>
        </member>
    </members>
</doc>