Hacker News new | ask | show | jobs
by jofer 2729 days ago
This particular problem pops up in quite a few domains. (We often refer to it as "phase unwrapping" in the geosciences.) The approach here is a good one so long as your noise doesn't result in lots of mistaken "wrap-arounds".

However, it will fail badly in the presence of noise in many cases. It's particularly problematic when the slope changes (e.g. a polynomial) or where the slope is high and the noise is high. (Note that polynomials are still linear in the sense mentioned here: linear regression).

At any rate, this is definitely a nice write-up, but a bit more discussion of where the approach breaks down would be useful. It's actually a classic example of an elegant solution that breaks down frequently in practice (i.e. it's commonly used as a teaching example in various courses). A better solution is usually more complex, domain specific, and therefore out-of-scope, but failure modes for this method make for a nice set of examples.

2 comments

Hey, I’m the author of the post.

You’re completely right. I investigated this as a means for solving the phase-unwrapping problem I was working on, and while it worked relatively well, a more domain specific solution was eventually used.

I purposely stayed away from mentioning phase unwrapping as I was trying to make this as accessible as possible without overloading the reader with jargon. My goal was to more show how problem transformation (like the frequency domain) can sometimes make hard problems far simpler (I was also just playing with data visualization). Looking at it now though, I probably should have added in the conclusion some external resources for people who have the background. It definitely wouldn’t have made the piece less readable, and could have added a bit more value.

Also, and this is a major oversight on my part - I was specifically looking at fitting data generated by an affine function, not “linearly fitting data”. How I titled this is definitely confusing.

Part of what interested me in writing about this though is how the discontinuities changed a trivial problem into something a bit trickier. If the data could be generated by more complex functions, then I would have forgone looking for an easy solution (as an aside, the problem I was working on had sharp timing and hardware constraints which kept me from using a more general solution).

Nice work, by the way! I didn't meant to be overly critical or "nit-picky".

The visualization parts of the post are _extremely_ well done, and it's a very clear example of how to apply mathematical tricks to practical problem solving. I feel like things like this should be in most AI practitioner's toolboxes, and they're too often forgotten.

I agree completely on the avoiding jargon point. Jargon is a real hindrance to learning something for the first time, and it's definitely best to minimize it whenever possible. (It is very useful when you're trying to find relevant papers though... I always find it fascinating/frustrating what different fields call the same thing...)

At any rate, nice work!

Thanks for pointing out to "phase unwrapping", I didn't know it had a name! Interesting.