Back to Mathematics for Machine Learning: PCA

4.0

stars

2,170 ratings

•

536 reviews

This intermediate-level course introduces the mathematical foundations to derive Principal Component Analysis (PCA), a fundamental dimensionality reduction technique. We'll cover some basic statistics of data sets, such as mean values and variances, we'll compute distances and angles between vectors using inner products and derive orthogonal projections of data onto lower-dimensional subspaces. Using all these tools, we'll then derive PCA as a method that minimizes the average squared reconstruction error between data points and their reconstruction.
At the end of this course, you'll be familiar with important mathematical concepts and you can implement PCA all by yourself. If you’re struggling, you'll find a set of jupyter notebooks that will allow you to explore properties of the techniques and walk you through what you need to do to get on track. If you are already an expert, this course may refresh some of your knowledge.
The lectures, examples and exercises require:
1. Some ability of abstract thinking
2. Good background in linear algebra (e.g., matrix and vector algebra, linear independence, basis)
3. Basic background in multivariate calculus (e.g., partial derivatives, basic optimization)
4. Basic knowledge in python programming and numpy
Disclaimer: This course is substantially more abstract and requires more programming than the other two courses of the specialization. However, this type of abstract thinking, algebraic manipulation and programming is necessary if you want to understand and develop machine learning algorithms....

JS

Jul 17, 2018

This is one hell of an inspiring course that demystified the difficult concepts and math behind PCA. Excellent instructors in imparting the these knowledge with easy-to-understand illustrations.

NS

Jun 19, 2020

Relatively tougher than previous two courses in the specialization. I'd suggest giving more time and being patient in pursuit of completing this course and understanding the concepts involved.

Filter by:

By Shilin G

•Jun 27, 2019

Not as good as previous two courses. I understand it is an intermediate course, but still, the video does not help you do the quiz, e.g. the video uses 2x2 matrices for example while quiz is mainly about 3x3 - then why not include a 3x3 example? Programming assignment is not clear either, some places you have to change the shape of matrix but it is not explained why this is necessary (and actually it is not). A lot of room for improvement here.

By Djambar

•May 17, 2020

Very challenging course in terms of computing ; one have to always go to the forum which is very active and function like StackOverFlow. You must have somme skills in PYthon, an intermediate level in matrix algebra and deserve a high amount of time and effort to do the assignments but at the end you get a good comprehension of PCA algorithm.

By Ustinov A

•May 28, 2019

Unfortunately, mistakes in grader and a bad python environment spoilt the impression. I lose hours because of it during 1, 2 and 4 week. It's not enough exercises last week. You should add more examples for every step of PCA for better understanding.

By Yougui Q

•Jun 03, 2020

The course is relatively harder than the other two courses in this specialization. The lecturer didn't provide understandable examples while demonstrating the concepts. The grader for Python assignments didn't function well either.

By Yiqing W

•Mar 28, 2019

The teaching is good but some programming assignment is not so good

By Narongdej S

•Jun 29, 2019

Confusing for beginners; the explanations are too abrupt

By Roy A

•Sep 23, 2020

First 2 courses in this specialization was really good, so I'm very dissappointed here. My main issues are the following:

The lectures are not clear enough, for about 75% of the assignments, I had to look up alternative lectures on youtube to get the point, if I have to find the majority of the information outside of Coursera, then what is the point of the course?

Sometimes there are no examples in the lectures, other times, the examples are too basic. So once I got a more advanced question , I was clueless how to solve it. Sometimes the first question on a quiz is much more complex than the example in the lecture.

The lectures requires you to be very comfortable with math notation, which I'm not. As mentioned earlier, some more examples would have solved this for me, but as the examples are lacking, I was simply unable to understand what was being written on the lecture, and had to look elsewhere. Note that the math itself wasn't hard(once I found someone else to explain it), just understanding what the lecturer meant.

Some steps in lectures are missing, I guess they are obvious if you have the correct prerequisites, but to me it was just a black box. "We have x,y,x. So then we get x+z,y!", why? no idea, I still don't know why we get x+z.

Programming assignments are hard for the wrong reasons, the math is not that hard, the python and numpy is basic, but the explanations of what the function is supposed to do is not clear. When I got stuck, it was usually because I didn't understand what the output of a function was supposed to be. As this is a math course, I would expect the challenge to be the math, not something else.

To sum up the above points, I think the course lacks a good understanding of the base skills needed to complete the course. Since I had no problems with part 1 and 2, and then ran into a wall at part 3(PCA), I think these parts should be better synced, if they are to be part of the same specialization.

By Kenny C

•Jul 22, 2020

This course was very frustrating. I would say that I'm quite competent in math, but I still struggled, not necessarily because the content is challenging, but because the instructions are unclear. I like that the lectures go through derivations in detail, but the instructor often skips steps. Sometimes he would reference a property of matrices that were not talked about, and I would have to spend half an hour researching what that property was to follow what was happening. The quizzes were minimally helpful, as they were merely the same computation question repeated throughout the quiz, which does not help to build intuitive understanding. The programming assignments are unclear on instructions and had many bugs, even in the pre-written parts. A lot of time was spent on reading the NumPy documentation, as the assignments gave little indication of what functions should be used and how they should be used. Overall, despite having a mathematical derivation of PCA, the course is very confusing and frustrating, perhaps even to those competent in this area of study.

By Astankov D A

•May 26, 2020

Although the lecturer admits that the course is quite challenging at times, it is a poor justification for the terrible assignments with close to zero explanations, errors in functions and lots of misfunctioning code in general where the notebook keeps spinning in an infinite loop. I was very hesitant while rating this course - sometimes I wanted to give it 4 stars and sometimes just a single one. I ended up with just two due to the really bad final programming assignment.

By Karl

•May 30, 2020

Pretty bad in comparison to the previous 2 courses. Not sure if the topic was just harder or it was presented less clearly. Assignments were confusing and I spent a lot of time trying to work out what I was supposed to be doing. More relevant practice questions might have been better. Also course felt slightly detached and maybe collaboration between the tutors which seemed to be there in the previous course should have happened here.

By Yana K

•Apr 18, 2019

Not really well structured. Too much in-depth details, too little intuition given. Didn't help to understand PCA. Had to constantly look for other resources online. Pity, because first 2 courses in the specialisation were really good.

By Ali K

•Jun 03, 2020

the instructor is knowledgeable but he has no teaching skills what so ever. He makes things very confusing. An example at the end would be very useful. No step-wise algorithm is provided.

By Patrick F

•Feb 01, 2019

The programming tasks are very bad documented and have errors.

By Andrei

•Nov 01, 2018

terrible assignments

By Shubhayu D

•Jun 13, 2020

The first two courses in the specialization were extremely good. However, this course is nowhere close to them. Neither does the instructor provide enough intuition, nor do the assignments help in the learning process.

By Abhishek S

•Jun 07, 2020

The first two courses of this specialisation were awesome PCA being a hard topic is difficult to understand but the course was boring and not good compared to previous two.

By 용석 권

•Jan 30, 2019

Programming assignments' quality is too bad to follow it. Their lecture's explanation and assignments' notation are not matched. Moreover, the code is sometimes ridiculous.

By Benjamin F

•Nov 18, 2019

The didactic value of this course is rather low. The lectures do not explain the very concepts required to sovle the subsequent assigments, or do it in a very poor way.

By Kareem T M

•May 18, 2020

Worst Course I have ever token on Coursera, the instructor hadn't mention any examples or simplify the information.

By HARSHIT J

•Jun 12, 2020

Very tough course, the first 3 weeks are good, but the last week is as poorly explained as one can imagine

By Michael B

•May 16, 2020

If I could give it negative stars I would.

By Mohamed S

•Jun 01, 2020

topics are poorly explained and confusing

By Marco v Z

•Jul 19, 2020

I was somewhat put off by critical comments about the third course in this series, but have to disagree with the reviewers. Yes, it is tougher and, yes, the instructor doesn't have the "schwung" of the other two instructors, but that doesn't affect the quality of this course. His walkthrough of the derivation of PCA is thorough and systematic, and builds on material that has been presented in the earlier lectures.

In fact, looking back on the entire specialisation, I would retrospectively grade the first two courses a notch lower (even if they're excellent), simply because they "sailed through" a bit too easily. The exercises in those courses required little thinking apart from recalling what was said in the lectures. In this course, exercises tended to go beyond or ahead of the material presented in the lectures. Solving them required active thinking, reading, and problem solving, which in the end brings a more thorough understanding.

By Fredrick A

•Feb 21, 2020

The coverage of PCA provided by the instructor was wide and provided me with an intuitive basis for executing the PCA algorithm in the wild. Ultimately, the subject and its various steps were easy to understand. That said, I gained many great insights watching Khan Academy videos especially ones on eigenvalues/eigenvectors. By far the hardest part of the class was implementing and executing the python code. There the devil was in, and sometimes, outside of the details. I cursed the name of the Instructor more than once (a lot more). But, in the end, because of the real life, no safety net experience, I was able to jump right into PCA (and other feature engineering projects) adding value to my team at work on day 1.

By Abdu M

•Jan 20, 2019

Best course out of the series so far. A fine balance between theory and derivations, and practice with the programming assignments. It seems that they have solved their programming assignment issues (the first one still has some problems with the grader I believe). This course does require you to have some prior experience, though, so if you are new to programming or linear algebra (not just the concepts but how to apply them) it's bets to take the first two courses with some additional help (maybe Khan academy or even MIT OCW. I will certainly refer to this course in the future, as well as the professor's book on Mathematics for ML.

- Finding Purpose & Meaning in Life
- Understanding Medical Research
- Japanese for Beginners
- Introduction to Cloud Computing
- Foundations of Mindfulness
- Fundamentals of Finance
- Machine Learning
- Machine Learning Using Sas Viya
- The Science of Well Being
- Covid-19 Contact Tracing
- AI for Everyone
- Financial Markets
- Introduction to Psychology
- Getting Started with AWS
- International Marketing
- C++
- Predictive Analytics & Data Mining
- UCSD Learning How to Learn
- Michigan Programming for Everybody
- JHU R Programming
- Google CBRS CPI Training

- Natural Language Processing (NLP)
- AI for Medicine
- Good with Words: Writing & Editing
- Infections Disease Modeling
- The Pronounciation of American English
- Software Testing Automation
- Deep Learning
- Python for Everybody
- Data Science
- Business Foundations
- Excel Skills for Business
- Data Science with Python
- Finance for Everyone
- Communication Skills for Engineers
- Sales Training
- Career Brand Management
- Wharton Business Analytics
- Penn Positive Psychology
- Washington Machine Learning
- CalArts Graphic Design

- Professional Certificates
- MasterTrack Certificates
- Google IT Support
- IBM Data Science
- Google Cloud Data Engineering
- IBM Applied AI
- Google Cloud Architecture
- IBM Cybersecurity Analyst
- Google IT Automation with Python
- IBM z/OS Mainframe Practitioner
- UCI Applied Project Management
- Instructional Design Certificate
- Construction Engineering and Management Certificate
- Big Data Certificate
- Machine Learning for Analytics Certificate
- Innovation Management & Entrepreneurship Certificate
- Sustainabaility and Development Certificate
- Social Work Certificate
- AI and Machine Learning Certificate
- Spatial Data Analysis and Visualization Certificate

- Computer Science Degrees
- Business Degrees
- Public Health Degrees
- Data Science Degrees
- Bachelor's Degrees
- Bachelor of Computer Science
- MS Electrical Engineering
- Bachelor Completion Degree
- MS Management
- MS Computer Science
- MPH
- Accounting Master's Degree
- MCIT
- MBA Online
- Master of Applied Data Science
- Global MBA
- Master's of Innovation & Entrepreneurship
- MCS Data Science
- Master's in Computer Science
- Master's in Public Health