PROJECT
100 Days of Machine Learning
July 22 2019
Introduction
Spring 2019, I took my first data science class as a computer science minor. The course essentially was an introduction to Machine Learning and ML algorithms. I had a lot of fun learning R and working on the pre-installed data sets. Our class learned about the different methods of learning: supervised, unsupervised and reinforcement. The class was mainly focused on supervised learning and classification problems. By the end of the semester, I had a solid understanding of machine learning foundations. But I felt that I lacked the proper mathematical knowledge to apply these principles to my own projects.
This summer I decided to take a deeper dive into machine learning by starting right from the basics. I will be exploring various mathematical topics including:
- Linear Algebra
- Multi-Variate Calculus
- Priniciple Component Analysis
Additionally, I would take time to create interactive visualizations and notes to drive the concepts home.
Day 1 - 8
Linear Algebra
Found Khan Academy's amazing linear algebra course today. Learned that Vectors are just objects that have a direction and magnitude. They do not necessarily originate from the origin. I Also learned basic vector operations.
Adding Vectors
Vector 1 + Vector 2 = Vector 3
Adding vectors results in a vector that shows the displacement of the combined vectors
Multiplying and Dividing Vectors
Vector 1 × Scaling Factor = Vector 2
Multiplying vectors results in a scaled vector in the same or opposite direction
Subtracting Vectors
Vector 1 + (-1 × Vector 2) = Vector 3
Subtracting two vectors results in a vector which equals the distance between them
Parametric Equation of a Line
Vector 1 + (-1 × Vector 2) = Vector 3
A line in any dimension can be defined by two vectors using the parametric equation of a line
Day 9
Day 9/100: Learned how to create vector fields and move vehicles using steering behaviour. Next Objective: Use a genetic algorithm to make the vehicle steer away from obstacles and reach a goal.#100DaysOfMLCode pic.twitter.com/mOWl0ViTIU
— Aryan Deora (@deora_aryan) July 31, 2019
Day 10
Day 10/100: Created genetic code for the vehicles. The ones that reach closer to the target are more likely to make offsprings. Will work on the fitness and crossover function today to make natural selection more efficient.#100DaysOfMLCode pic.twitter.com/Ck6L1WAps6
— Aryan Deora (@deora_aryan) August 1, 2019
Day 11
Day 11/100: The vehicles have now learned how to navigate through the purple obstacles. A huge thanks to Professor Daniel @shiffman's amazing book Nature Of Code that helped me through this coding challenge.#100DaysOfMLCode pic.twitter.com/JYM8ptgzTZ
— Aryan Deora (@deora_aryan) August 2, 2019
Day 12
Day 12/100: Going back to learning linear algebra today. Trying to visualize Dot Product and Scalar Projections.#100DaysOfMLCode pic.twitter.com/biYH0YJN1E
— Aryan Deora (@deora_aryan) August 3, 2019
Day 13
Day 13/100: Took a break to update my website. A snippet of what I made yesterday. Parametric Equation of a line. A non-zero vector (green) spans a line. Using another vector (blue), the line can be shifted up/down or to the left/right.#100DaysOfMLCode pic.twitter.com/iEBlYcNCvo
— Aryan Deora (@deora_aryan) August 7, 2019
Day 14
Day 13/100: Took a break to update my website. A snippet of what I made yesterday. Parametric Equation of a line. A non-zero vector (green) spans a line. Using another vector (blue), the line can be shifted up/down or to the left/right.#100DaysOfMLCode pic.twitter.com/iEBlYcNCvo
— Aryan Deora (@deora_aryan) August 7, 2019
Day 15
Day 15/100: Gave the flappy bird game a neon theme. Now it looks like an actual game I could play. Next up: Creating a genetic algorithm to make the bird learn how to fly through obstacles.#100DaysOfMLCode #100DaysOfCode pic.twitter.com/NlMY47RDcs
— Aryan Deora (@deora_aryan) August 10, 2019
Day 16
Day 16: Well, Flappy Bird AI didn't work with a genetic algorithm alone. Will have to use a neural network instead. Meanwhile, here is a project I created while learning linear algebra that shows how any 2 linearly independent vectors span the whole 2D space.#100DaysOfCode pic.twitter.com/YVPLq1MDFl
— Aryan Deora (@deora_aryan) August 12, 2019
Day 17
Day 17/100: Read Make Your Own Neural Network by Tariq Rashid today! Was an absolutely fun read. Learned new concepts and I am now ready to use them in tandem with genetic algorithms#100DaysOfCode #100DaysOfMLCode
— Aryan Deora (@deora_aryan) August 13, 2019
Day 18
Day 18/100: FINALLY! After endless failed attempts, here is the Flappy Bird AI. The bird has a brain made up of a neural network which was evolved using a genetic algorithm. Again, Thanks to @shiffman for his amazing videos on Neuro-Evolution.#100DaysOfCode #100DaysOfMLCode pic.twitter.com/Wnf6F4lSLs
— Aryan Deora (@deora_aryan) August 15, 2019
Day 19
Day 19/100: Took a break and documented the Flappy Bird Neuro-Evolution Code. Uploaded it to GitHub. All of the files can be found here: https://t.co/Jo69eIuSxx#100DaysOfCode
— Aryan Deora (@deora_aryan) August 16, 2019
Day 20
Day 20/100: Travelling back to the USA for my senior year! Excited to start a new semester. Won't be coding for the next two days 😞 #100DaysOfCode
— Aryan Deora (@deora_aryan) August 18, 2019
Day 21
Day 21/100: Getting back on track! This week I will be implementing backpropogation to my Neural Network library. I will then test it with the MNIST dataset of handwritten digits. #100DaysOfMLCode #100DaysOfCode
— Aryan Deora (@deora_aryan) August 22, 2019