SG++-Doxygen-Documentation
|
#include <DBMatOnlineDEOrthoAdapt.hpp>
Public Member Functions | |
void | add_new_refine_point (sgpp::base::DataVector &x) |
Adds new DataVector to list of refined points For testing purposes only. More... | |
DBMatOnlineDEOrthoAdapt (DBMatOffline &offline, Grid &grid, double lambda, double beta=0.) | |
Constructor. More... | |
sgpp::base::DataMatrix & | getB () |
Returns the additive component of the sherman-morrison-formula, which yields all the information about the refined points. More... | |
std::vector< sgpp::base::DataVector > * | getRefinedPointsPointer () |
Gets pointer to the container of refined points, only for testing purposes. More... | |
void | sherman_morrison_adapt (size_t newPoints, bool refine, std::vector< size_t > coarsen_indices={}) |
Rank-one updates/downdates the system matrix, based on the Sherman-Morrison-formula In the current version of the function, the refinePts already are adapted to the regularization parameter lambda. More... | |
std::vector< size_t > | updateSystemMatrixDecomposition (DensityEstimationConfiguration &densityEstimationConfig, Grid &grid, size_t numAddedGridPoints, std::list< size_t > deletedGridPointIndices, double lambda) override |
Public Member Functions inherited from sgpp::datadriven::DBMatOnlineDE | |
void | computeDensityFunction (DataVector &alpha, Grid &grid, DensityEstimationConfiguration &densityEstimationConfig, bool do_cv=false) |
Computes the density function again based on the saved b's (only applicable for streaming) More... | |
void | computeDensityFunction (DataVector &alpha, DataMatrix &m, Grid &grid, DensityEstimationConfiguration &densityEstimationConfig, bool save_b=false, bool do_cv=false, std::list< size_t > *deletedPoints=nullptr, size_t newPoints=0) |
Computes the density function for a certain data matrix. More... | |
DBMatOnlineDE (DBMatOffline &offline, Grid &grid, double lambda, double beta=0.) | |
Constructor. More... | |
double | eval (DataVector &alpha, const DataVector &p, Grid &grid, bool force=false) |
Evaluates the density function at a certain point. More... | |
void | eval (DataVector &alpha, DataMatrix &values, DataVector &results, Grid &grid, bool force=false) |
Evaluates the density function on multiple points. More... | |
double | getBeta () |
Returns the current weighting factor. More... | |
bool | isComputed () |
Returns if the surplus has already been computed. More... | |
double | normalize (DataVector &alpha, Grid &grid, size_t samples=1000) |
Normalize the Density. More... | |
double | normalizeQuadrature (DataVector &alpha, Grid &grid) |
Normalize the Density using Quadrature. More... | |
void | setBeta (double beta) |
Sets the weighting factor. More... | |
void | updateRhs (size_t gridSize, std::list< size_t > *deletedPoints) |
Restructures the rhs (b vector) of the system matrix. More... | |
Public Member Functions inherited from sgpp::datadriven::DBMatOnline | |
DBMatOnline (DBMatOffline &o) | |
Constructor. More... | |
DBMatOnline (const DBMatOnline &rhs)=delete | |
DBMatOnline (DBMatOnline &&rhs)=default | |
DBMatOffline & | getOfflineObject () |
Returns a reference to the offline object. More... | |
const DBMatOffline & | getOfflineObject () const |
DBMatOnline & | operator= (const DBMatOnline &rhs)=delete |
DBMatOnline & | operator= (DBMatOnline &&rhs)=default |
void | setLambda (double lambda) |
Changes the weighting factor for the regularization term, if possible (might depend on the kind of decomposition for classification) More... | |
virtual | ~DBMatOnline ()=default |
Destructor. More... | |
Protected Member Functions | |
void | solveSLE (DataVector &alpha, DataVector &b, Grid &grid, DensityEstimationConfiguration &densityEstimationConfig, bool do_cv) override |
Solves the system (R + lambda*I) * alpha = b, and obtains alpha The solving is done after offline and online phase and works as follows: (R + lambda*I)^{-1} * b = ((Q*T^{-1}*Q^{t} + B) * b = alpha, where B holds the refine/coarsen information. More... | |
Protected Member Functions inherited from sgpp::datadriven::DBMatOnlineDE | |
double | computeL2Error (DataVector &alpha, Grid &grid) |
double | resDensity (DataVector &alpha, Grid &grid) |
Protected Attributes | |
sgpp::base::DataMatrix | b_adapt_matrix_ |
bool | b_is_refined |
size_t | current_refine_index |
std::vector< sgpp::base::DataVector > | refined_points_ |
Protected Attributes inherited from sgpp::datadriven::DBMatOnlineDE | |
double | beta |
DataVector | bSave |
DataVector | bTotalPoints |
bool | functionComputed |
double | lambda |
double | normFactor |
size_t | oDim |
DataMatrix * | testMat |
DataMatrix * | testMatRes |
size_t | totalPoints |
Protected Attributes inherited from sgpp::datadriven::DBMatOnline | |
DBMatOffline & | offlineObject |
|
explicit |
Constructor.
offline | The offline object we base our evaluations on. |
lambda | The regularization strength (TODO(fuchsgruber) remove this) |
grid | The underlying grid (TODO(fuchsgruber) do we need this?) |
beta | The initial weighting factor |
References b_adapt_matrix_, b_is_refined, current_refine_index, sgpp::datadriven::DBMatOffline::getDecompositionType(), sgpp::datadriven::OrthoAdapt, and refined_points_.
|
inline |
Adds new DataVector to list of refined points For testing purposes only.
x | The DataVector to add |
References refined_points_.
|
inline |
Returns the additive component of the sherman-morrison-formula, which yields all the information about the refined points.
References b_adapt_matrix_.
Referenced by sgpp::datadriven::DBMatOnlineDE::computeDensityFunction(), and solveSLE().
|
inline |
Gets pointer to the container of refined points, only for testing purposes.
References python.uq.operations.discretizeProduct::refine(), refined_points_, sherman_morrison_adapt(), and updateSystemMatrixDecomposition().
void sgpp::datadriven::DBMatOnlineDEOrthoAdapt::sherman_morrison_adapt | ( | size_t | newPoints, |
bool | refine, | ||
std::vector< size_t > | coarsen_indices = {} |
||
) |
Rank-one updates/downdates the system matrix, based on the Sherman-Morrison-formula In the current version of the function, the refinePts already are adapted to the regularization parameter lambda.
newPoints | number of refined points |
refine | decides: true for refine, false for coarsen |
coarsen_indices | the indices of points to coarsen |
References b_adapt_matrix_, b_is_refined, current_refine_index, sgpp::base::DataVector::get(), sgpp::base::DataMatrix::get(), sgpp::base::DataMatrix::getColumn(), sgpp::base::HashGridStorage::getDimension(), sgpp::datadriven::DBMatOffline::getGridSize(), sgpp::base::HashGridStorage::getLevelIndexArraysForEval(), sgpp::base::DataMatrix::getNcols(), sgpp::base::DataMatrix::getNrows(), sgpp::base::DataMatrix::getPointer(), sgpp::datadriven::DBMatOfflineOrthoAdapt::getQ(), sgpp::base::DataMatrix::getRow(), sgpp::base::HashGridStorage::getSize(), sgpp::base::Grid::getStorage(), sgpp::datadriven::DBMatOfflineOrthoAdapt::getTinv(), grid(), python.statsfileInfo::i, python.utils.statsfile2gnuplot::j, level, sgpp::datadriven::DBMatOnline::offlineObject, refined_points_, sgpp::base::DataMatrix::resizeQuadratic(), sgpp::base::DataMatrix::set(), sgpp::base::DataMatrix::setColumn(), and sgpp::base::DataMatrix::setRow().
Referenced by getRefinedPointsPointer(), and updateSystemMatrixDecomposition().
|
overrideprotectedvirtual |
Solves the system (R + lambda*I) * alpha = b, and obtains alpha The solving is done after offline and online phase and works as follows: (R + lambda*I)^{-1} * b = ((Q*T^{-1}*Q^{t} + B) * b = alpha, where B holds the refine/coarsen information.
alpha | the datavetor where surplusses will be stored |
b | The right hand side of the system |
grid | the underlying grid |
densityEstimationConfig | configuration for the density estimation |
do_cv | Specifies, if cross-validation should be done (todo: currently not implemented) |
Implements sgpp::datadriven::DBMatOnlineDE.
References alpha, chess::b, getB(), sgpp::datadriven::DBMatOfflineOrthoAdapt::getQ(), sgpp::base::DataVector::getSize(), sgpp::datadriven::DBMatOfflineOrthoAdapt::getTinv(), sgpp::datadriven::DBMatOnline::offlineObject, sgpp::base::DataVector::resizeZero(), and sgpp::datadriven::DBMatDMSOrthoAdapt::solve().
|
overridevirtual |
densityEstimationConfig | configuration for the density estimation |
grid | the underlying grid |
numAddedGridPoints | Number of grid points inserted at the end of the grid storage |
deletedGridPointIndices | Indices of grid points that were deleted |
lambda | The last best lambda value |
Reimplemented from sgpp::datadriven::DBMatOnline.
References sgpp::datadriven::DBMatOffline::getGridSize(), sgpp::datadriven::DBMatOnline::offlineObject, and sherman_morrison_adapt().
Referenced by getRefinedPointsPointer().
|
protected |
Referenced by DBMatOnlineDEOrthoAdapt(), getB(), and sherman_morrison_adapt().
|
protected |
Referenced by DBMatOnlineDEOrthoAdapt(), and sherman_morrison_adapt().
|
protected |
Referenced by DBMatOnlineDEOrthoAdapt(), and sherman_morrison_adapt().
|
protected |
Referenced by add_new_refine_point(), DBMatOnlineDEOrthoAdapt(), getRefinedPointsPointer(), and sherman_morrison_adapt().