[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