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.