I found this blog time ago in Google, searching with terms "mathematics for programmers" I arrived to the article : Why there is no Hitchhiker’s Guide to Mathematics for Programmers http://jeremykun.com/2013/02/08/why-there-is-no-hitchhikers-....
Which I'd recommend to read as entry point to this website if you feel intimidated by maths.
Nice to find it again :)
I know it's a HN cliche to complain about form over the message, but I find this impossible to read without first removing the entire left-hand panels (and ::before p-elements) which re-grab my eye every line-break.
> A consequence is that, if you’re trying to cluster data points by looking at points within a fixed distance r of one point, you’ll have to make r exponentially large in the dimension.
His point is the volume of the unit sphere is tiny. The "volume" of the unit 20-cube is 1. The volume of a 20-sphere is just 0.0258. 100-cube, volume is 1. 100-sphere, 2.36e-40
If your algorithm works well for "nearby" meaning 1, i can just keep adding dimensions till you find nothing. If "nearby" on the other hand is related to the number of dimensions, you're going to have to grow the "nearby" value exponentially.
You've made the same error as the OP. The volume of a unit n-dimensional sphere decreases exponentially in n. But that doesn't mean you need to increase r exponentially to compensate - in the volume formula, the r also has an exponent of n. The distance between opposite corners of a unit cube in n-dimensional space is root(n). That's hardly exponential.
Not exactly "proportional", because you have that pesky e in the denominator. But that's the right idea. Basically, to get n! you're multiplying together n things that are sort of n-ish, so you'd expect n! ~ n^n. (When the numbers get really big, like in statistical mechanics, I've seen the approximation log n! ~ n log n.) The next step is to figure that you're multiplying together n things that are on average n/2, so n! ~ (n/2)^n. But then it really turns out that you should have been using a geometric average (since you're multiplying), not an arithmetic one, so n! must be smaller yet. (I don't know a way to get (n/e)^n without doing an integral, though.)
Right, proportional in the sense that for both n! and n^n, the fastest-growing component is ~n^n. (I was curious in the context of which grew faster for larger values of n in the big O notation).
I'd like to find a way to reorganize Math ∩ Programming eventually. As alfonsodev points out, it's a bit hard to find stuff for newer and less mathy readers, though there is a handful of articles aimed at them. [1,2,3,4] As other users point out, they don't like the layout. Suggestions?
Same here! I've had the Math ∩ Programming blog open in a tab on my computer for probably 3 weeks now, trying to get around to reading it. Having it delivered once or twice a week in a logical order would be amazing, and worth paying for.
* I'd agree that first and foremost, I'd change the line width. I've always found the blog a bit difficult to read on the site because of the number of words per line. The site seems to be responsive - maybe just change the width of the articles?
* It might be worth having the landing page have something other than "featured articles" right at the top. Since the content of your site is so diverse, it might help to have some pointers as to how to navigate the site up front.
* On the navigation sidebar, maybe have a "New Here?" or a "Getting Started" link.
Just some ideas. I've been reading your blog for many years, btw. It even inspired me to start my own!
i love this guy's blog posts - not only is he clearly a very smart talented mathematician - he explains concepts in a way that is very easy to understand. I wish i would have found this website when i was getting my master in math. some of the signal processing stuff would have helped a lot.
No, the meaning dimension there is different. In the Reynolds number it's a ratio of measures where the units cancel.
Here we're talking about mapping data into a high dimensional space, then trying to project that down to the minimum dimension space that can preserve the relevant information.
In the example we don't have any reason to even think all our dimensions are orthogonal, we're assigning a new dimension for each word, but we know there is a lot of overlap in word meaning.
> Here we're talking about mapping data into a high dimensional space, then trying to project that down to the minimum dimension space that can preserve the relevant information.
I'm looking forward to the persistent homology posts. It's a really interesting subject with a lot of potential, but I don't feel that the existing textbooks do a good job explaining the computations.
Also, sadly, my rate of progress toward this goal has averaged at around one blog post per year. But hopefully in the coming months (after defending my thesis) I'll have more time to dedicate to blogging.
This website is doubtlessly one of the best introductions to higher math available online. I've gained a lot by both finding and reading the website posts. A weekly email with some sort of order would be great and I would sign up immediately. Keep it up!!!!
This is really, really awesome. I have a long train ride coming up, so I just put together a quick wget script to get all the pages for when I have zero internet. :)
@j2kun: Just curious, any chance you'd do an explainer on the Curry-Howard equivalence[1] sometime? Forgive me if you already have, but a search didn't turn anything up. Seems pretty relevant to math ∩ programming and also of interest to a lot of generalists.
I think I have a mildly different opinion about the correspondence than most other people on the internet. That's mostly why I have decided to write about other things. But then again maybe that's a good reason to write about it.
39 comments
[ 4.1 ms ] story [ 95.9 ms ] threadhttps://support.mozilla.org/en-US/kb/firefox-reader-view-clu...
That does not follow ...
If your algorithm works well for "nearby" meaning 1, i can just keep adding dimensions till you find nothing. If "nearby" on the other hand is related to the number of dimensions, you're going to have to grow the "nearby" value exponentially.
edit
Actually, for even dimensions it's pretty clear. n = dimension/2
factorial wins. The problem is worse than exponentiation.Turns out, it is:
n! ~= (2 * pi * n)^1/2 * (n/e)^n
(https://en.wikipedia.org/wiki/Stirling%27s_approximation)
[1]: http://jeremykun.com/2011/06/26/teaching-mathematics-graph-t...
[2]: http://jeremykun.com/2014/05/26/learning-to-love-complex-num...
[3]: http://jeremykun.com/2013/05/11/bezier-curves-and-picasso/
[4]: http://jeremykun.com/program-gallery/
edit: updated font size & article width. I'm considering changing the theme completely.
Then, maybe you should have less words per line. http://digerateur.xyz/2015/11/18/tri-bulle-ation/ is a good example.
Also, I'd love to see Jupyter notebooks made out of the coding material you cover. But maybe that's only me.
Something like "Every day, a chunk of Math ∩ Programming in your inbox", I would personally be interested at least!
* I'd agree that first and foremost, I'd change the line width. I've always found the blog a bit difficult to read on the site because of the number of words per line. The site seems to be responsive - maybe just change the width of the articles?
* It might be worth having the landing page have something other than "featured articles" right at the top. Since the content of your site is so diverse, it might help to have some pointers as to how to navigate the site up front.
* On the navigation sidebar, maybe have a "New Here?" or a "Getting Started" link.
Just some ideas. I've been reading your blog for many years, btw. It even inspired me to start my own!
Like in a non-dimensional number?. For example the Reynolds number in fluid flow.
Here we're talking about mapping data into a high dimensional space, then trying to project that down to the minimum dimension space that can preserve the relevant information.
In the example we don't have any reason to even think all our dimensions are orthogonal, we're assigning a new dimension for each word, but we know there is a lot of overlap in word meaning.
Isn't this what M/PCA is all about? https://en.wikipedia.org/wiki/Principal_component_analysis and https://en.wikipedia.org/wiki/Multilinear_principal_componen...
Also, sadly, my rate of progress toward this goal has averaged at around one blog post per year. But hopefully in the coming months (after defending my thesis) I'll have more time to dedicate to blogging.
Just sayin'. :P
[1] https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspon...