Closed johnbradley closed 10 months ago
Since weights are dynamic with respect to the value of all other variables, we could label each with 0
on the left and max
on the right to avoid the misrepresentation of 0
and 1
?
The original code has the initial weight value hard coded to 0.00001
, but there is commented out code
with that assigned the weight as 1.0 / <number of columns>
.
The original code also has the sliders go from 0.00001
to 0.9999
.
Never quite reaching 0 or 1.
The dimension_reduction()
function always normalizes weights:
### Normalize the weights to sum to 1
wts = wts/wts.sum()
Ideally, we'd like the initial position of the sliders to in some way reflect the fact that the weights are initialized a 1.0/<number of columns>
. That could be the initial position of the slider for all of them (we would just need the sliders long enough for it to be meaningful when there are a reasonably large number of columns). This also opens the potential to intentionally decrease the weight of particular features.
I actually don't think that the positions of the sliders, regardless of which point in time, need to somehow indicate the absolute value of the underlying element in the weights vector.
In part this is because most people, not being natural mathematicians, will have trouble mapping absolute differences between slider positions to relative weight changes. For example, for a weight of 0.2, reducing it by 0.1 will halve the weight, but to double it it will need to be moved by 0.2. (Though one could scale the range by 1/x)
If the absolute value of each weight is worth knowing (it may well be), then it could be shown to the right of the slider, possibly in a field where the value can be edited (instead of using the slider to do so).
After a user uploads a CSV the sliders need to have a default value. Also we should consider if the sliders should have labels.