![]() |
Ultra 0.9.4
|
#include <oracle.h>
Public Member Functions | |
| basic_gaussian_oracle (const I &, const dataframe &, std::vector< std::string >={}) | |
| basic_gaussian_oracle (std::istream &, const symbol_set &) | |
| classification_result | tag (const std::vector< value_t > &) const final |
| bool | is_valid () const final |
| bool | save (std::ostream &) const final |
| Public Member Functions inherited from ultra::src::basic_class_oracle | |
| value_t | operator() (const std::vector< value_t > &) const final |
| Returns the predicted class label. | |
| std::string | name (const value_t &) const final |
| Returns the class name, falling back to a numeric name for unknown IDs. | |
Static Public Attributes | |
| static const std::string | SERIALIZE_ID |
Additional Inherited Members | |
| Protected Member Functions inherited from ultra::src::basic_class_oracle | |
| basic_class_oracle (std::vector< std::string >={}) | |
| bool | load_names (std::istream &) |
| Loads the class names, accepting a zero count for omitted names. | |
| bool | save_names (std::ostream &) const |
| Saves a count followed by one class name per line. | |
| Static Protected Member Functions inherited from ultra::src::basic_class_oracle | |
| static std::vector< std::string > | class_names (const dataframe &) |
| Collects the class names from the training set. | |
Oracle for the Gaussian Distribution Classification.
| I | individual |
| S | stores the individual inside vs keep a reference only |
| basic_gaussian_oracle::basic_gaussian_oracle | ( | const I & | ind, |
| const dataframe & | d, | ||
| std::vector< std::string > | names = {} ) |
| [in] | ind | program "to be transformed" into an oracle |
| [in] | d | the training set |
| [in] | names | optional class names |
| basic_gaussian_oracle::basic_gaussian_oracle | ( | std::istream & | in, |
| const symbol_set & | ss ) |
Constructs the object reading data from an input stream.
| [in] | in | input stream |
| [in] | ss | active symbol set |
|
nodiscardfinalvirtual |
Implements ultra::src::basic_oracle.
|
finalvirtual |
Saves the oracle on persistent storage.
| [out] | out | output stream |
Implements ultra::src::basic_oracle.
|
nodiscardfinalvirtual |
Classifies an example using Gaussian class models and returns a confidence-weighted prediction.
| [in] | ex | input example to classify |
This method assigns a class label to an input example by evaluating the program oracle and comparing the result against a set of per-class Gaussian distributions previously constructed by fill_vector().
The behaviour depends on the availability of a valid oracle output:
Normal inference (oracle output available) The inferred value is compared to each class distribution using a Gaussian-like likelihood score:
$$ p_i = \exp\left(-\frac{(x - \mu_i)^2}{\sigma_i^2}\right) $$
where $\mu_i$ and $\sigma_i^2$ are the mean and variance of the distribution associated with class $i$. Degenerate or nearly-degenerate distributions (very small variance) are treated as point masses centred at the mean.
Missing inference (oracle output unavailable) If the oracle cannot produce a value for the input, the classifier falls back to class priors, selecting the most frequent class based on the effective sample counts stored in the Gaussian models.
These counts include both real observations and synthetic samples added during variance inflation in fill_vector() and therefore represent effective class support rather than raw dataset frequencies.
The returned confidence is a normalised measure in the range $[0, 1]$:
in normal inference, it is defined as:
$$ \text{confidence} = \frac{p_{\text{best}}}{\sum_i p_i} $$
and represents how dominant the selected class likelihood is relative to the others;
in missing inference, it is defined as:
$$ \text{confidence} = \frac{n_{\text{best}}}{\sum_i n_i} $$
where $n_i$ is the effective sample count of class $i$.
A confidence close to 1 indicates a clear decision, while lower values signal ambiguity or weak evidence.
Classifies an example using Gaussian class models and returns a confidence-weighted prediction.
| [in] | ex | input example to classify |
This method assigns a class label to an input example by evaluating the program oracle and comparing the result against a set of per-class Gaussian distributions previously constructed by fill_vector().
The behaviour depends on the availability of a valid oracle output:
Normal inference (oracle output available) The inferred value is compared to each class distribution using a Gaussian-like likelihood score:
$$ p_i = \exp\left(-\frac{(x - \mu_i)^2}{\sigma_i^2}\right) $$
where $\mu_i$ and $\sigma_i^2$ are the mean and variance of the distribution associated with class $i$. Degenerate or nearly-degenerate distributions (very small variance) are treated as point masses centred at the mean.
Missing inference (oracle output unavailable) If the oracle cannot produce a value for the input, the classifier falls back to class priors, selecting the most frequent class based on the effective sample counts stored in the Gaussian models.
These counts include both real observations and synthetic samples added during variance inflation in fill_vector() and therefore represent effective class support rather than raw dataset frequencies.
The returned confidence is a normalised measure in the range $[0, 1]$:
in normal inference, it is defined as:
$$ \text{confidence} = \frac{p_{\text{best}}}{\sum_i p_i} $$
and represents how dominant the selected class likelihood is relative to the others;
in missing inference, it is defined as:
$$ \text{confidence} = \frac{n_{\text{best}}}{\sum_i n_i} $$
where $n_i$ is the effective sample count of class $i$.
A confidence close to 1 indicates a clear decision, while lower values signal ambiguity or weak evidence.
Implements ultra::src::basic_oracle.