[mlpack-svn] r10656 - mlpack/trunk/src/mlpack/methods/radical

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Dec 8 01:07:02 EST 2011


Author: niche
Date: 2011-12-08 01:07:01 -0500 (Thu, 08 Dec 2011)
New Revision: 10656

Modified:
   mlpack/trunk/src/mlpack/methods/radical/radical.cpp
   mlpack/trunk/src/mlpack/methods/radical/radical.hpp
Log:
I think I fixed two bugs. need to check tomorrow

Modified: mlpack/trunk/src/mlpack/methods/radical/radical.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/radical/radical.cpp	2011-12-08 05:31:20 UTC (rev 10655)
+++ mlpack/trunk/src/mlpack/methods/radical/radical.cpp	2011-12-08 06:07:01 UTC (rev 10656)
@@ -10,18 +10,8 @@
 //using namespace arma;
 using namespace std;
 
-/*
+
 Radical::Radical(double noiseStdDev, size_t nReplicates, size_t nAngles, size_t nSweeps,
-		 const arma::mat& matX) {
-  this->noiseStdDev = noiseStdDev;
-  this->nReplicates = nReplicates;
-  this->nAngles = nAngles;
-  this->nSweeps = nSweeps;
-  this->matX = arma::mat(matX); // is this the same as this.X = X ?
-  m = floor(sqrt(matX.n_rows));
-}
-*/
-Radical::Radical(double noiseStdDev, size_t nReplicates, size_t nAngles, size_t nSweeps,
 		 const arma::mat& matX) :
   noiseStdDev(noiseStdDev),
   nReplicates(nReplicates),
@@ -33,19 +23,12 @@
 }
 
 
-void Radical::WhitenX(arma::mat& matWhitening) {
-  arma::mat matU, matV;
-  arma::vec s;
-  arma::svd(matU, s, matV, cov(matX));
-  matWhitening = matU * arma::diagmat(pow(s, -0.5)) * arma::trans(matV);
-  matX = matX * matWhitening;
-}
-
 void Radical::CopyAndPerturb(arma::mat& matXNew, const arma::mat& matX) {
   matXNew = arma::repmat(matX, nReplicates, 1);
   matXNew = matXNew + noiseStdDev * arma::randn(matXNew.n_rows, matXNew.n_cols);
 }
 
+
 double Radical::Vasicek(const arma::vec& z) {
   arma::vec v = sort(z);
   size_t nPoints = v.n_elem;
@@ -53,6 +36,7 @@
   return (double) arma::sum(logs);
 }
 
+
 double Radical::DoRadical2D(const arma::mat& matX) {
   arma::mat matXMod;
   CopyAndPerturb(matXMod, matX);
@@ -87,7 +71,7 @@
 void Radical::DoRadical(arma::mat& matY, arma::mat& matW) {
 
   // matX is nPoints by nDims (although less intuitive than columns being points,
-  // and although this is the transpose of the ICA literature,this choice is 
+  // and although this is the transpose of the ICA literature, this choice is 
   // for computational efficiency)
   
   size_t nDims = matX.n_cols;
@@ -95,7 +79,7 @@
   arma::mat matWhitening;
   WhitenX(matWhitening);
   
-  // in the RADICAL code, they do not copy and perturb initial, although the
+  // in the RADICAL code, they do not copy and perturb initially, although the
   // paper does. we follow the code as it should match their reported results
   // and likely does a better job bouncing out of local optima
   //GeneratePerturbedX(X, X);
@@ -118,11 +102,20 @@
 	matJ(j,i) = -sin(thetaOpt);
 	matJ(j,j) = cos(thetaOpt);
 	matW = matW * matJ;
-	matY = matY * matW;
+	matY = matX * matW;
       }
     }
   }
   
   // the final transpose provides W in the typical form from the ICA literature
-  matW = arma::trans(matW * matWhitening);
+  matW = arma::trans(matWhitening * matW);
 }
+
+
+void Radical::WhitenX(arma::mat& matWhitening) {
+  arma::mat matU, matV;
+  arma::vec s;
+  arma::svd(matU, s, matV, cov(matX));
+  matWhitening = matU * arma::diagmat(pow(s, -0.5)) * arma::trans(matV);
+  matX = matX * matWhitening;
+}

Modified: mlpack/trunk/src/mlpack/methods/radical/radical.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/radical/radical.hpp	2011-12-08 05:31:20 UTC (rev 10655)
+++ mlpack/trunk/src/mlpack/methods/radical/radical.hpp	2011-12-08 06:07:01 UTC (rev 10656)
@@ -25,7 +25,6 @@
     return matX;
   }
   
-  void WhitenX(arma::mat& matWhitening);
   void CopyAndPerturb(arma::mat& XNew, const arma::mat& matX);
   double Vasicek(const arma::vec& x);
   double DoRadical2D(const arma::mat& matX);
@@ -40,6 +39,8 @@
   
   arma::mat matX;
   
+  void WhitenX(arma::mat& matWhitening);
+  
 };
 
 #endif




More information about the mlpack-svn mailing list