Class BlockCoordinateDescentDictionaryUpdater

  • All Implemented Interfaces:
    IDictionaryUpdater

    public class BlockCoordinateDescentDictionaryUpdater
    extends Object
    implements IDictionaryUpdater
    Implements the block coordinate descent for dictionary update from Mairal et al., 2010. The algorithm can be found in "Sparse Modeling, Theory, Algorithms, and Applications" by Irina Rish and Genady Ya. Grabarnik. Published by CRC Press 2015, on page 173. The block-coordinate descent general algorithm can be found on p 154 of the same.
    Author:
    Dustin Kempton, Data Mining Lab, Georgia State University
    • Constructor Detail

      • BlockCoordinateDescentDictionaryUpdater

        public BlockCoordinateDescentDictionaryUpdater​(double epsilon)
        Constructor with the error stopping point (epsilon) passed in.
        Parameters:
        epsilon - The acceptable difference in the norm between updates. A proxy for error after update. This really needs to be around 1e-4 or lower to do much.
    • Method Detail

      • updateDictionary

        public void updateDictionary​(smile.math.matrix.DenseMatrix dictionary,
                                     smile.math.matrix.DenseMatrix auxMatrixU,
                                     smile.math.matrix.DenseMatrix auxMatrixV)
                              throws MatrixDimensionMismatch,
                                     VectorDimensionMismatch
        Description copied from interface: IDictionaryUpdater
        Does a dictionary update based on some algorithm utilizing the input matrices.
        Specified by:
        updateDictionary in interface IDictionaryUpdater
        Parameters:
        dictionary - The dictionary to be updated.
        auxMatrixU - An auxiliary matrix used to update the dictionary.
        auxMatrixV - Another auxiliary matrix used to update the dictionary.
        Throws:
        MatrixDimensionMismatch - Thrown when the operations cannot be completed because the dimensions of the dictionary and the two auxiliary matrices mismatch.
        VectorDimensionMismatch - Thrown when an operation cannot be done be cause a dimension in the auxiliary matrices do not work with the input dictionary.