This is a generalization of the doAxisProjectionMutation.
A subset \(Q \subseteq P\) (each point selected with independent
probability pm) is selected. Next, a random intercept \(\beta_0 \in [0, 1]\)
is sampled. In a subsequent step a slope \(\beta_1\) is sampled uniformly at random from
\([0, 3]\) (if \(\beta_0 < 0.5\)) and \([-3, 0]\) (if \(\beta_0 \geq 0.5\)). This heuristic
distinction of cases ensures that with high probability the resulting linear function
\(\beta_0 + \beta_1x\) runs inside the bounding-box \([0, 1]^2\) at least partially. Finally, all
points \(p \in Q\) are modified by setting \(p_2 = \beta_0 + \beta_1p_1\).
Additionally, with probability p.jitter, Gaussian noise with mean zero
and standard deviation jitter.sd is added to the second coordinate.
doLinearProjectionMutation(coords, pm = 0.1, p.jitter = 0, jitter.sd = 0, ...)
| coords | [ |
|---|---|
| pm | [ |
| p.jitter | [ |
| jitter.sd | [ |
| ... | [any] |
[matrix] Mutated coordinates.