proteneer / timemachine

Differentiate all the things!
Other
140 stars 17 forks source link

Optimize Lambda Schedule Targeting Overlap Between Windows #1426

Open badisa opened 1 week ago

badisa commented 1 week ago

This PR adds support for re-balancing the lambda schedule generated by adaptive bisection aiming to space the windows such that neighboring windows have the same target overlap. As noted by @maxentile in https://github.com/proteneer/timemachine/pull/1426#issuecomment-2484094405, this does not provide a uniform set of overlaps as the overlap between the N-1 and Nth window may be higher.

maxentile commented 1 week ago

PR naming note: This doesn't quite target "uniform overlap" between all adjacent pairs of windows [(lambdas[i], lambdas[i+1]) for i in range(K-1)]. It targets a fixed value of overlap for the first K-2 pairs [(lambdas[i], lambdas[i+1]) for i in range(K-2)]. The very last pair (lambdas[-2], lambdas[-1]) might have a much larger overlap.

(In these cases, uniform overlap might have been achieved if we had known to target a slightly higher overlap(i, i+1) for all i. One possible brute-force approach (https://github.com/proteneer/timemachine/pull/1385) would be to call the current method several times with different trial values of target_overlap, trying to make target_overlap as large as possible without increasing len(lambdas).)

image (x-axis: lambda idx, y-axis: overlap(lambdas[idx], lambdas[idx+1]), dashed grey line: target overlap, blue curve: current approach, orange curve: brute-force (but maybe more uniform) approach)