ppforest2 v0.1.0
Projection Pursuit Decision Trees and Random Forests
Loading...
Searching...
No Matches
DRStrategy.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "models/Strategy.hpp"
6#include "stats/Stats.hpp"
7#include "utils/Invariant.hpp"
8#include "utils/Types.hpp"
9
10#include <algorithm>
11#include <vector>
12
24namespace ppforest2::dr {
31 struct DRResult {
33 std::vector<int> const selected_cols;
35 size_t const original_size;
36
37 DRResult(std::vector<int> const& selected_cols, size_t const original_size)
40
50 pp::Projector expand(pp::Projector const& reduced_vector) const {
51 invariant(reduced_vector.size() == selected_cols.size(),
52 "Reduced vector size must match number of selected variables");
53
54 pp::Projector full_vector = pp::Projector::Zero(original_size);
55
56 for (size_t i = 0; i < selected_cols.size(); ++i) {
57 full_vector(selected_cols[i]) = reduced_vector(i);
58 }
59
60 return full_vector;
61 }
62 };
63
73 struct DRStrategy : public Strategy<DRStrategy> {
82 virtual DRResult
83 select(types::FeatureMatrix const& x, stats::GroupPartition const& group_spec, stats::RNG& rng) const = 0;
84
88 DRResult operator()(types::FeatureMatrix const& x, stats::GroupPartition const& group_spec, stats::RNG& rng) const {
89 return select(x, group_spec, rng);
90 }
91 };
92}
void invariant(bool condition, char const *message)
Runtime assertion that throws on failure.
Contiguous-block representation of grouped observations.
Definition GroupPartition.hpp:42
Dimensionality reduction strategies for variable selection.
Definition DRNoopStrategy.hpp:7
types::FeatureVector Projector
Column vector of projection coefficients (one per variable).
Definition Projector.hpp:6
pcg32 RNG
Definition Stats.hpp:19
Eigen::Matrix< Feature, Eigen::Dynamic, Eigen::Dynamic > FeatureMatrix
Dynamic-size matrix of feature values.
Definition Types.hpp:24
CRTP base class providing self-registration for strategy types.
Definition Strategy.hpp:23
Result of a dimensionality reduction step.
Definition DRStrategy.hpp:31
pp::Projector expand(pp::Projector const &reduced_vector) const
Expand a reduced-dimension projector to the original space.
Definition DRStrategy.hpp:50
size_t const original_size
Number of columns in the original (unreduced) matrix.
Definition DRStrategy.hpp:35
std::vector< int > const selected_cols
Indices of the selected columns in the original matrix.
Definition DRStrategy.hpp:33
DRResult(std::vector< int > const &selected_cols, size_t const original_size)
Definition DRStrategy.hpp:37
Abstract strategy for dimensionality reduction.
Definition DRStrategy.hpp:73
virtual DRResult select(types::FeatureMatrix const &x, stats::GroupPartition const &group_spec, stats::RNG &rng) const =0
Select a subset of variables.
DRResult operator()(types::FeatureMatrix const &x, stats::GroupPartition const &group_spec, stats::RNG &rng) const
Convenience operator: equivalent to select().
Definition DRStrategy.hpp:88