Simon has been working on a very complicated topic for the past couple of days: Linear Regression. In essence, it is the math behind machine learning.
Simon was watching Daniel Shiffman’s tutorials on Linear Regression that form session 3 of his Spring 2017 ITP “Intelligence and Learning” course (ITP stands for Interactive Telecommunications Program and is a graduate programme at NYU’s Tisch School of the Arts).
Daniel Shiffman’s current weekly live streams are also largely devoted to neural networks, so in a way, Simon has been preoccupied with related stuff for weeks now. This time around, however, he decided to make his own versions of Daniel Shiffman’s lectures (a whole Linear Regression playlist), has been busy with in-camera editing, and has written a resume of one of the Linear Regression tutorials (he actually sat there transcribing what Daniel said) in the form of an interactive webpage! This Linear Regression webpage is online at: https://simon-tiger.github.io/linear-regression/ and the Gragient Descent addendum Simon made later is at: https://simon-tiger.github.io/linear-regression/gradient_descent/interactive/ and https://simon-tiger.github.io/linear-regression/gradient_descent/random/
And here come the videos from Simon’s Liner Regression playlist, the first one being an older video you may have already seen:
Here Simon shows his interactive Linear Regression webpage:
A lecture of Anscombe’s Quartet (something from statistics):
Then comes a lecture on Scatter Plot and Residual Plot, as well as combining Residual Plot with Anscombe’s Quartet, based upon video 3.3 of Intelligence and Learning. Simon made a mistake graphing he residual plot but corrected himself in an addendum (end of the video):
And finally, Linear Regression with Gradient Descent algorithm and how the learning works. Based upon Daniel Shiffman’s tutorial 3.4 on Intelligence and Learning:
Yesterday Simon got a parcel from the US: Simon’s hero, NYU professor Daniel Shiffman sent him a beautiful gift – a Coding Train shirt! Coding Train is Daniel Shiffman’s channel on YouTube where he records tutorials, coding challenges and live streams. Basically, Coding Train has been Simon’s main learning source in Programming, Math and Physics (and English!) for months.
Simon made a mistake in the formula using the sigma operator. He corrected it later. It should be i=1 (not i=0).
Simon’s creative “remix” of example 2.7 from Daniel Shiffman’s The Nature of Code, Chapter 2 (Forces).
Here Simon explains how to calculate the magnitude of a 3D vector. This is something he partially figured out on his own and partially learned from Daniel Shiffman’s tutorial on Trigonometry and Polar Coordinates.
The project is available on Simon’s page in Codepen:
In the two videos below Simon explains what the bug was (he had forgotten a “break” statement). He insisted I include both videos, but actually only the second one is informative:
Simon still needs to add explosions to this game (make the enemies explode), so there will probably be a follow-up on this one.
Visited the reopened museum of contemporary art in Antwerpen MuHKA this afternoon. Simon enjoyed a few graphical pieces, especially when allowed to take photos of them with my mobile.
Three pictures taken by Simon:
Definitions of “the Truth”:
In the children’s “Salon”, we loved the survival-on-the-Moon game: you had to answer the questions about which items would help you survive on the Moon.
In the end, he got tired of writing all the coordinates for the terrain vertices, but he did get quite far.
Applying Box2D to translate from pixels into mm:
Almost every evening, before going to bed, we are reading books and Simon mostly prefers math adventures. Russian author Vladimir Levshin (1904-1984) published several books about geometry, algebra and math history, with numbers and letters as the leading characters. Most chapters contain complicated riddles that we solve along the way. Sometimes, Simon gets up to fetch some paper and pencils to write down what he thinks the formula or the geometrical pattern should be for a particular story. And because Levshin’s books often mention famous mathematicians of the past, I see Simon learn about history through math. What he knows about Ancient Greece or the 1970’s mainly comes from his interest in early math and geometry or the dawn of computer science.
Here Simon was drawing his impressions of Cantor’s set theory, inspired by a passage about him in Levshin’s book:
Levshin’s book that we’re reading now:
Passage on Boole and Cantor:
Another book by Levshin we have recently read, about Algebra:
A chapter from that book talking about finding a sum of all the members of an arithmetic progression:
Simon stormed out the bedroom and came back with a sheet of paper where he wrote down the formula, before we read about it in the book (he often tries to come up with his own formulas):
The same formula in the book:
A beautiful project in Processing (Java), Simon’s own code, resembling an El Lissitzky painting that you can control and change with the mouse (without Simon knowing El Lissitzky). Resulted from thinking about and playing with infinite line and line segments. Simon used the following formula: slope times x plus yIntercept.