[mlpack-git] master: Rename Regress() to Train(), and allow retraining. (fd41611)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Thu Dec 3 10:50:08 EST 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/5858f46c3113651f598596bade89c1b838410652...c829fc1a2415f3dddb672431bb51ff05cbc40a76

>---------------------------------------------------------------

commit fd416114472470506567bd3f3e70609da0673310
Author: ryan <ryan at ratml.org>
Date:   Thu Dec 3 10:48:47 2015 -0500

    Rename Regress() to Train(), and allow retraining.


>---------------------------------------------------------------

fd416114472470506567bd3f3e70609da0673310
 src/mlpack/methods/lars/lars.cpp                    | 21 +++++++++++++++------
 src/mlpack/methods/lars/lars.hpp                    |  8 ++++----
 .../methods/local_coordinate_coding/lcc_impl.hpp    |  2 +-
 .../methods/sparse_coding/sparse_coding_impl.hpp    |  2 +-
 4 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/src/mlpack/methods/lars/lars.cpp b/src/mlpack/methods/lars/lars.cpp
index fa23f91..f3b9df0 100644
--- a/src/mlpack/methods/lars/lars.cpp
+++ b/src/mlpack/methods/lars/lars.cpp
@@ -36,13 +36,22 @@ LARS::LARS(const bool useCholesky,
     tolerance(tolerance)
 { /* Nothing left to do */ }
 
-void LARS::Regress(const arma::mat& matX,
-                   const arma::vec& y,
-                   arma::vec& beta,
-                   const bool transposeData)
+void LARS::Train(const arma::mat& matX,
+                 const arma::vec& y,
+                 arma::vec& beta,
+                 const bool transposeData)
 {
   Timer::Start("lars_regression");
 
+  // Clear any previous solution information.
+  betaPath.clear();
+  lambdaPath.clear();
+  activeSet.clear();
+  isActive.clear();
+  ignoreSet.clear();
+  isIgnored.clear();
+  matUtriCholFactor.reset();
+
   // This matrix may end up holding the transpose -- if necessary.
   arma::mat dataTrans;
   // dataRef is row-major.
@@ -63,7 +72,7 @@ void LARS::Regress(const arma::mat& matX,
   // Initialize yHat and beta.
   beta = arma::zeros(dataRef.n_cols);
   arma::vec yHat = arma::zeros(dataRef.n_rows);
-  arma::vec yHatDirection = arma::vec(dataRef.n_rows);
+  arma::vec yHatDirection(dataRef.n_rows);
 
   bool lassocond = false;
 
@@ -93,7 +102,7 @@ void LARS::Regress(const arma::mat& matX,
 
   // Compute the Gram matrix.  If this is the elastic net problem, we will add
   // lambda2 * I_n to the matrix.
-  if (matGram.n_elem == 0)
+  if (matGram.n_elem != dataRef.n_cols * dataRef.n_cols)
   {
     // In this case, matGram should reference matGramInternal.
     matGramInternal = trans(dataRef) * dataRef;
diff --git a/src/mlpack/methods/lars/lars.hpp b/src/mlpack/methods/lars/lars.hpp
index 2682311..dca181d 100644
--- a/src/mlpack/methods/lars/lars.hpp
+++ b/src/mlpack/methods/lars/lars.hpp
@@ -131,10 +131,10 @@ class LARS
    * @param beta Vector to store the solution (the coefficients) in.
    * @param transposeData Set to false if the data is row-major.
    */
-  void Regress(const arma::mat& data,
-               const arma::vec& responses,
-               arma::vec& beta,
-               const bool transposeData = true);
+  void Train(const arma::mat& data,
+             const arma::vec& responses,
+             arma::vec& beta,
+             const bool transposeData = true);
 
   /**
    * Predict y_i for each data point in the given data matrix, using the
diff --git a/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp b/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp
index f90f65c..02f475d 100644
--- a/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp
+++ b/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp
@@ -123,7 +123,7 @@ void LocalCoordinateCoding<DictionaryInitializer>::OptimizeCode()
     // Run LARS for this point, by making an alias of the point and passing
     // that.
     arma::vec beta = codes.unsafe_col(i);
-    lars.Regress(dictPrime, data.unsafe_col(i), beta, false);
+    lars.Train(dictPrime, data.unsafe_col(i), beta, false);
     beta %= invW; // Remember, beta is an alias of codes.col(i).
   }
 }
diff --git a/src/mlpack/methods/sparse_coding/sparse_coding_impl.hpp b/src/mlpack/methods/sparse_coding/sparse_coding_impl.hpp
index 9e04f52..35b0806 100644
--- a/src/mlpack/methods/sparse_coding/sparse_coding_impl.hpp
+++ b/src/mlpack/methods/sparse_coding/sparse_coding_impl.hpp
@@ -111,7 +111,7 @@ void SparseCoding<DictionaryInitializer>::OptimizeCode()
     // place the result directly into that; then we will not need to have an
     // extra copy.
     arma::vec code = codes.unsafe_col(i);
-    lars.Regress(dictionary, data.unsafe_col(i), code, false);
+    lars.Train(dictionary, data.unsafe_col(i), code, false);
   }
 }
 



More information about the mlpack-git mailing list