This repo contains my solution of assignment in 2015 Stanford Machine Learning Class. Please read the "Stanford Honor Code" below.
"We strongly encourage students to form study groups, and discuss the lecture videos (including in-video questions). We also encourage you to get together with friends to watch the videos together as a group. However, the answers that you submit for the review questions should be your own work. For the programming exercises, you are welcome to discuss them with other students, discuss specific algorithms, properties of algorithms, etc.; we ask only that you not look at any source code written by a different student, nor show your solution code to other students."
All Solutions licensed under MIT License. See LICENSE.txt for further details.
Copyright (c) 2015 [wronfim] (https://github.com/wronfim)
We assume that you know how to program in at least one programming language. No particular math background is assumed, and we will go over the math concepts you need in the first couple of weeks. You will also need a computer on which to do the programming assignments.
Each week, we will ask you to watch a number of videos on machine learning (approx 2-3 hours total). These videos may have a number of in-video questions embedded in them, which you should answer (but are not counted towards the final score). In addition, we have designed two types of exercises to help you become great at machine learning: (i) Review questions (multiple-choice or short answer questions that you answer on a website to make sure you understood the main ideas), and (ii) Programming exercises, in which you gain practice implementing and getting learning algorithms to work. In detail:
-
Review questions. After watching a week's video lectures, we will ask you to answer a set of review questions (approx 10 questions) on the content that you just learned. If you don't get a perfect score, you can re-take the review questions over and over, up to the deadline. Only your highest score will be used for the final grade. It should be possible for every student to get full marks on the review questions.
-
Programming exercises. Starting from the second week (and in every week thereafter), we ask you to complete a programming exercise, where you will gain practice implementing and getting a learning algorithm to work. The software and instructions we provide will allow you to determine with high confidence that you have the right answer before you submit your solution, so we hope you'll keep working on it until you get the right answer. When you submit your solution, our server will also check your answer and give you immediate feedback. If you don't get it right, you can re-submit solutions as many times as you like, up to to the deadline. It should also be possible for every student to get full marks on the programming exercises.
The following is a tentative syllabus for the class:
- Introduction to Machine Learning. Univariate linear regression. (Optional: Linear algebra review.)
- Multivariate linear regression. Practical aspects of implementation. Octave tutorial.
- Logistic regression, One-vs-all classification, Regularization.
- Neural Networks.
- Practical advice for applying learning algorithms: How to develop, debugging, feature/model design, setting up experiment structure.
- Support Vector Machines (SVMs) and the intuition behind them.
- Unsupervised learning: clustering and dimensionality reduction.
- Anomaly detection.
- Recommender systems.
- Large-scale machine learning. An example of an application of machine learning.
Your final score in the class will be based on the scores you receive on (i) review questions and (ii) programming exercises.
You can submit answers to the review questions and programming exercises as many times as you like, and only the highest score will be taken for each assignment. We strongly encourage you to keep repeating each exercise until you get a perfect score. However, to prevent random guessing, you can submit only once every 5 minutes. Submissions after the deadline are subject to a 20% penalty.
At the end of the course, your two lowest review question scores will be dropped, along with your one lowest programming exercise score. Your total score on the programming exercises and review questions will be separately summed up and scaled to 100. The review questions make up 1/3 of your final score, and the programming exercises make up 2/3 of your final score.
To receive a statement of accomplishment, your final score must be at least 80% of the maximum possible score.