public class ConstrainedGLMUtils
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
ConstrainedGLMUtils.CoefIndices |
static class |
ConstrainedGLMUtils.ConstraintGLMStates |
static class |
ConstrainedGLMUtils.ConstraintsDerivatives |
static class |
ConstrainedGLMUtils.ConstraintsGram |
static class |
ConstrainedGLMUtils.LinearConstraintConditions |
static class |
ConstrainedGLMUtils.LinearConstraints |
Constructor and Description |
---|
ConstrainedGLMUtils() |
Modifier and Type | Method and Description |
---|---|
static boolean |
activeConstraints(ConstrainedGLMUtils.LinearConstraints[] equalityC,
ConstrainedGLMUtils.LinearConstraints[] lessThanEqualToC) |
static void |
addBCEqualityConstraint(java.util.List<ConstrainedGLMUtils.LinearConstraints> equalityC,
GLM.BetaConstraint betaC,
java.lang.String[] coefNames,
int index)
This method will extract the equality constraint and add to equalityC from beta constraint by doing the following
transformation: val <= beta <= val: transformed to beta-val == 0, add to equalTo constraint.
|
static void |
addBCGreaterThanConstraint(java.util.List<ConstrainedGLMUtils.LinearConstraints> lessThanC,
GLM.BetaConstraint betaC,
java.lang.String[] coefNames,
int index)
This method will extract the greater than constraint and add to lessThanC from beta constraint by doing the following
transformation: low_val <= beta <= Infinity: transformed to low_val - beta <= 0.
|
static void |
addBCLessThanConstraint(java.util.List<ConstrainedGLMUtils.LinearConstraints> lessThanC,
GLM.BetaConstraint betaC,
java.lang.String[] coefNames,
int index)
This method will extract the less than constraint and add to lessThanC from beta constraint by doing the following
transformation: -Infinity <= beta <= high_val: transformed to beta - high_val <= 0.
|
static void |
addConstraintGradient(double[] lambda,
ConstrainedGLMUtils.ConstraintsDerivatives[] constraintD,
GLM.GLMGradientInfo gradientInfo)
Add contribution of constraints to objective/likelihood/gradient.
|
static void |
addPenaltyGradient(ConstrainedGLMUtils.ConstraintsDerivatives[] constraintDeriv,
ConstrainedGLMUtils.LinearConstraints[] constraintD,
GLM.GLMGradientInfo gradientInfo,
double ck)
This method adds the contribution to the gradient from the penalty term ck/2*transpose(h(beta))*h(beta)
|
static void |
adjustLambda(ConstrainedGLMUtils.LinearConstraints[] constraints,
double[] lambda) |
static void |
calculateConstraintSquare(ComputationState state,
ConstrainedGLMUtils.LinearConstraints[] equalConst,
ConstrainedGLMUtils.LinearConstraints[] lessThanConst) |
static GLM.GLMGradientInfo |
calGradient(double[] betaCnd,
ComputationState state,
GLM.GLMGradientSolver ginfo,
double[] lambdaE,
double[] lambdaL,
ConstrainedGLMUtils.LinearConstraints[] constraintE,
ConstrainedGLMUtils.LinearConstraints[] constraintL)
This method calls getGradient to calculate the gradient, likelhood and objective function values.
|
static java.lang.String[] |
collinearInConstraints(java.lang.String[] collinear_cols,
java.lang.String[] constraintNames) |
static ConstrainedGLMUtils.LinearConstraints[] |
combineConstraints(ConstrainedGLMUtils.LinearConstraints[] const1,
ConstrainedGLMUtils.LinearConstraints[] const2) |
static java.lang.String |
constraint2Str(ConstrainedGLMUtils.LinearConstraints oneConst,
java.lang.String startStr,
ComputationState state) |
static boolean |
constraintsStop(GLM.GLMGradientInfo gradientInfo,
ComputationState state)
This method will check if the stopping conditions for constraint GLM are met and they are namely:
1.
|
static int |
countNumConst(ComputationState state) |
static void |
evalOneConstraint(ConstrainedGLMUtils.LinearConstraints constraint,
double[] beta,
java.util.List<java.lang.String> coefNames)
This method will evaluate the value of a constraint given the GLM coefficients and the coefficicent name list.
|
static boolean |
evaluateConstraint(ComputationState state,
ConstrainedGLMUtils.LinearConstraints[] constraints,
boolean equalityConstr,
double[] beta,
java.util.List<java.lang.String> coefNames,
java.lang.String startStr,
java.util.List<java.lang.String> constraintCond,
java.util.List<java.lang.String> cSatisfied,
java.util.List<java.lang.Double> cValues,
java.util.List<java.lang.String> cConditions,
java.util.List<java.lang.String> constraintsStrings)
Print constraints without any standardization applied so that people can see the setting in their original
form without standardization.
|
static int[] |
extractBetaConstraints(ComputationState state,
java.lang.String[] coefNames)
This method will extract the constraints specified in beta constraint and combine it with the linear constraints
later.
|
static boolean |
extractCoeffNames(java.util.List<java.lang.String> coeffList,
ConstrainedGLMUtils.LinearConstraints[] constraints) |
static void |
extractConstraint(water.fvec.Frame constraintF,
java.util.List<java.lang.Integer> rowIndices,
java.util.List<ConstrainedGLMUtils.LinearConstraints> equalC,
DataInfo dinfo,
java.util.List<java.lang.String> coefNames,
java.util.List<java.lang.String> colNames) |
static java.util.List<java.lang.String> |
extractConstraintCoeffs(ComputationState state) |
static int |
extractConstraintValues(ConstrainedGLMUtils.LinearConstraints[] constraints,
java.util.List<java.lang.String> constraintNamesList,
double[][] initCMatrix,
int rowIndex,
int[] betaLessThan) |
static void |
extractLinearConstraints(ComputationState state,
water.Key<water.fvec.Frame> linearConstraintFrameKey,
DataInfo dinfo)
This method will extract the constraints specified in the Frame with key linearConstraintFrameKey.
|
static void |
fillConstraintValues(ComputationState state,
java.util.List<java.lang.String> constraintNamesList,
double[][] initCMatrix,
int[] betaLessThan) |
static double[][] |
formConstraintMatrix(ComputationState state,
java.util.List<java.lang.String> constraintNamesList,
int[] betaEqualLessThanInd) |
static java.util.List<java.lang.String> |
foundRedundantConstraints(ComputationState state,
double[][] initConstraintMatrix) |
static void |
genInitialLambda(java.util.Random randObj,
ConstrainedGLMUtils.LinearConstraints[] constraints,
double[] lambda)
The initial value of lambda values really do not matter that much.
|
static java.util.List<java.lang.String> |
genRedundantConstraint(ComputationState state,
java.util.List<java.lang.Integer> duplicatedEleIndics) |
static ConstrainedGLMUtils.LinearConstraints |
getConstraintFromIndex(ComputationState state,
java.lang.Integer constraintIndex) |
static java.lang.String |
grabRedundantConstraintMessage(ComputationState state,
java.lang.Integer constraintIndex) |
static void |
makeConstraintSummaryTable(GLMModel model,
ConstrainedGLMUtils.LinearConstraintConditions cCond) |
static ConstrainedGLMUtils.LinearConstraintConditions |
printConstraintSummary(ComputationState state,
java.lang.String[] coefNames) |
static void |
printConstraintSummary(GLMModel model,
ComputationState state,
java.lang.String[] coefNames) |
static double[][] |
sumGramConstribution(ConstrainedGLMUtils.ConstraintsGram[] gramConstraints,
int numCoefs) |
static void |
updateConstraintParameters(ComputationState state,
double[] lambdaEqual,
double[] lambdaLessThan,
ConstrainedGLMUtils.LinearConstraints[] equalConst,
ConstrainedGLMUtils.LinearConstraints[] lessThanConst,
GLMModel.GLMParameters parms)
This method will update the constraint parameter values cKCS, epsilonkCS, etakCS.
|
static void |
updateConstraintValues(double[] betaCnd,
java.util.List<java.lang.String> coefNames,
ConstrainedGLMUtils.LinearConstraints[] equalityConstraints,
ConstrainedGLMUtils.LinearConstraints[] lessThanEqualToConstraints)
Simple method to all linear constraints given the coefficient values.
|
static void |
updateLambda(double[] lambda,
double ckCS,
ConstrainedGLMUtils.LinearConstraints[] constraints) |
public static final double EPS
public static final double EPS2
public static ConstrainedGLMUtils.LinearConstraints[] combineConstraints(ConstrainedGLMUtils.LinearConstraints[] const1, ConstrainedGLMUtils.LinearConstraints[] const2)
public static int[] extractBetaConstraints(ComputationState state, java.lang.String[] coefNames)
public static void addBCEqualityConstraint(java.util.List<ConstrainedGLMUtils.LinearConstraints> equalityC, GLM.BetaConstraint betaC, java.lang.String[] coefNames, int index)
public static void addBCGreaterThanConstraint(java.util.List<ConstrainedGLMUtils.LinearConstraints> lessThanC, GLM.BetaConstraint betaC, java.lang.String[] coefNames, int index)
public static void addBCLessThanConstraint(java.util.List<ConstrainedGLMUtils.LinearConstraints> lessThanC, GLM.BetaConstraint betaC, java.lang.String[] coefNames, int index)
public static void extractLinearConstraints(ComputationState state, water.Key<water.fvec.Frame> linearConstraintFrameKey, DataInfo dinfo)
public static void extractConstraint(water.fvec.Frame constraintF, java.util.List<java.lang.Integer> rowIndices, java.util.List<ConstrainedGLMUtils.LinearConstraints> equalC, DataInfo dinfo, java.util.List<java.lang.String> coefNames, java.util.List<java.lang.String> colNames)
public static double[][] formConstraintMatrix(ComputationState state, java.util.List<java.lang.String> constraintNamesList, int[] betaEqualLessThanInd)
public static void fillConstraintValues(ComputationState state, java.util.List<java.lang.String> constraintNamesList, double[][] initCMatrix, int[] betaLessThan)
public static int extractConstraintValues(ConstrainedGLMUtils.LinearConstraints[] constraints, java.util.List<java.lang.String> constraintNamesList, double[][] initCMatrix, int rowIndex, int[] betaLessThan)
public static void printConstraintSummary(GLMModel model, ComputationState state, java.lang.String[] coefNames)
public static void makeConstraintSummaryTable(GLMModel model, ConstrainedGLMUtils.LinearConstraintConditions cCond)
public static ConstrainedGLMUtils.LinearConstraintConditions printConstraintSummary(ComputationState state, java.lang.String[] coefNames)
public static boolean evaluateConstraint(ComputationState state, ConstrainedGLMUtils.LinearConstraints[] constraints, boolean equalityConstr, double[] beta, java.util.List<java.lang.String> coefNames, java.lang.String startStr, java.util.List<java.lang.String> constraintCond, java.util.List<java.lang.String> cSatisfied, java.util.List<java.lang.Double> cValues, java.util.List<java.lang.String> cConditions, java.util.List<java.lang.String> constraintsStrings)
public static java.lang.String constraint2Str(ConstrainedGLMUtils.LinearConstraints oneConst, java.lang.String startStr, ComputationState state)
public static java.util.List<java.lang.String> extractConstraintCoeffs(ComputationState state)
public static boolean extractCoeffNames(java.util.List<java.lang.String> coeffList, ConstrainedGLMUtils.LinearConstraints[] constraints)
public static java.util.List<java.lang.String> foundRedundantConstraints(ComputationState state, double[][] initConstraintMatrix)
public static java.util.List<java.lang.String> genRedundantConstraint(ComputationState state, java.util.List<java.lang.Integer> duplicatedEleIndics)
public static java.lang.String grabRedundantConstraintMessage(ComputationState state, java.lang.Integer constraintIndex)
public static ConstrainedGLMUtils.LinearConstraints getConstraintFromIndex(ComputationState state, java.lang.Integer constraintIndex)
public static void evalOneConstraint(ConstrainedGLMUtils.LinearConstraints constraint, double[] beta, java.util.List<java.lang.String> coefNames)
public static void genInitialLambda(java.util.Random randObj, ConstrainedGLMUtils.LinearConstraints[] constraints, double[] lambda)
public static void adjustLambda(ConstrainedGLMUtils.LinearConstraints[] constraints, double[] lambda)
public static double[][] sumGramConstribution(ConstrainedGLMUtils.ConstraintsGram[] gramConstraints, int numCoefs)
public static void addConstraintGradient(double[] lambda, ConstrainedGLMUtils.ConstraintsDerivatives[] constraintD, GLM.GLMGradientInfo gradientInfo)
public static void addPenaltyGradient(ConstrainedGLMUtils.ConstraintsDerivatives[] constraintDeriv, ConstrainedGLMUtils.LinearConstraints[] constraintD, GLM.GLMGradientInfo gradientInfo, double ck)
public static void updateConstraintParameters(ComputationState state, double[] lambdaEqual, double[] lambdaLessThan, ConstrainedGLMUtils.LinearConstraints[] equalConst, ConstrainedGLMUtils.LinearConstraints[] lessThanConst, GLMModel.GLMParameters parms)
public static void calculateConstraintSquare(ComputationState state, ConstrainedGLMUtils.LinearConstraints[] equalConst, ConstrainedGLMUtils.LinearConstraints[] lessThanConst)
public static void updateLambda(double[] lambda, double ckCS, ConstrainedGLMUtils.LinearConstraints[] constraints)
public static boolean constraintsStop(GLM.GLMGradientInfo gradientInfo, ComputationState state)
public static boolean activeConstraints(ConstrainedGLMUtils.LinearConstraints[] equalityC, ConstrainedGLMUtils.LinearConstraints[] lessThanEqualToC)
public static GLM.GLMGradientInfo calGradient(double[] betaCnd, ComputationState state, GLM.GLMGradientSolver ginfo, double[] lambdaE, double[] lambdaL, ConstrainedGLMUtils.LinearConstraints[] constraintE, ConstrainedGLMUtils.LinearConstraints[] constraintL)
public static void updateConstraintValues(double[] betaCnd, java.util.List<java.lang.String> coefNames, ConstrainedGLMUtils.LinearConstraints[] equalityConstraints, ConstrainedGLMUtils.LinearConstraints[] lessThanEqualToConstraints)
public static java.lang.String[] collinearInConstraints(java.lang.String[] collinear_cols, java.lang.String[] constraintNames)
public static int countNumConst(ComputationState state)