pub struct IdealPointUser {
pub center: Vec<f64>,
pub weights: Vec<f64>,
}Expand description
A simulated user with an ideal point: there is a sound they are looking for, and both too little and too much of any quality is worse.
u*(φ) = −Σ w_i (φ_i − c_i)²This exists because every other user in this module is linear in the same φ the model is linear in, which makes the model well specified by construction. Under that setup “can it learn taste” collapses to “how fast does a correctly-specified linear model estimate its coefficients”, and no amount of passing it says anything about a real listener. A gate that cannot fail is not a gate.
The misspecification here is not a matter of degree, it is structural.
u = max_k θ_k · φ is a maximum of affine functions, and a maximum of
affine functions is convex, always. The utility above is strictly
concave (negative-definite quadratic). So no K, however large, brings
the model closer to this user in the way extra experts help elsewhere —
adding lenses can only build a better convex function. The model can still
track the local gradient and rank most pairs, and that is the useful thing
to measure; what it cannot do is be right everywhere at once, and a
harness that never notices the difference is not measuring anything.
Fields§
§center: Vec<f64>The sound being looked for, in standardized feature space.
weights: Vec<f64>How sharply each coordinate is judged.
Implementations§
Source§impl IdealPointUser
impl IdealPointUser
Sourcepub fn utility(&self, phi: &[f64]) -> f64
pub fn utility(&self, phi: &[f64]) -> f64
True utility: how close this candidate is to the ideal, penalized per coordinate.
Sourcepub fn duel<R: Rng>(&self, rng: &mut R, a: &[f64], b: &[f64]) -> bool
pub fn duel<R: Rng>(&self, rng: &mut R, a: &[f64], b: &[f64]) -> bool
Sample a duel outcome (true = chose A), Bradley–Terry noise.
Sourcepub fn observe_duel<R: Rng>(
&self,
rng: &mut R,
a: Vec<f64>,
b: Vec<f64>,
session: usize,
) -> Observation
pub fn observe_duel<R: Rng>( &self, rng: &mut R, a: Vec<f64>, b: Vec<f64>, session: usize, ) -> Observation
Generate a full duel observation on the given pair.
Trait Implementations§
Source§impl Clone for IdealPointUser
impl Clone for IdealPointUser
Source§fn clone(&self) -> IdealPointUser
fn clone(&self) -> IdealPointUser
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more