Fix edge case for similarly-correlated dimensions.
This commit is contained in:
@@ -366,13 +366,16 @@ double LARS::Train(const arma::mat& matX,
|
||||
if (isActive[ind] || isIgnored[ind])
|
||||
continue;
|
||||
|
||||
double dirCorr = dot(dataRef.col(ind), yHatDirection);
|
||||
double val1 = (maxCorr - corr(ind)) / (normalization - dirCorr);
|
||||
double val2 = (maxCorr + corr(ind)) / (normalization + dirCorr);
|
||||
if ((val1 > 0) && (val1 < gamma))
|
||||
gamma = val1;
|
||||
if ((val2 > 0) && (val2 < gamma))
|
||||
gamma = val2;
|
||||
const double dirCorr = dot(dataRef.col(ind), yHatDirection);
|
||||
const double val1 = (maxCorr - corr(ind)) / (normalization - dirCorr);
|
||||
const double val2 = (maxCorr + corr(ind)) / (normalization + dirCorr);
|
||||
if ((val1 > 0.0) && (val1 < gamma))
|
||||
gamma = val1;
|
||||
if ((val2 > 0.0) && (val2 < gamma))
|
||||
gamma = val2;
|
||||
// Handle edge case where the largest actually is equal to 0.
|
||||
if (std::max(val1, val2) == 0.0)
|
||||
gamma = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user