Chevron Left
Back to Mathematics for Machine Learning: PCA

Learner Reviews & Feedback for Mathematics for Machine Learning: PCA by Imperial College London

2,821 ratings
702 reviews

About the Course

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....

Top reviews


Jul 6, 2021

Now i feel confident about pursuing machine learning courses in the future as I have learned most of the mathematics which will be helpful in building the base for machine learning, data science.


Jul 16, 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.

Filter by:

26 - 50 of 700 Reviews for Mathematics for Machine Learning: PCA

By Tony J

Oct 2, 2020

This course is remarkable for the rigour it takes you through to understand the PCA. If you make it through and understand everything it is well worth it.

Unfortunately, you will almost certainly need to supplement the course with materials, videos, and theory from elsewhere, because a great bulk of the lectures are not intuitive, you might as well be learning from a rather obtuse textbook.

The assignments as many have mentioned, continue to have bugs and errors, despite the recent attentiveness of the course staff on the forums.. hopefully they will be fixed soon. At least they've finally included a Numpy tutorial.

Overall though. I have to say, this course, if you stick with it, will force you to get a robust grasp of the linear algebra that you've been taught so far, and it is a good exercise. Although, it's certainly not a smooth ride.

By Sanjay k

Aug 14, 2018

I was frustrated at several points during the course - I had to scour the internet for material to improve my understanding which defeated the purpose of taking the course (math and intuition behind PCA for instance). I felt as if the instructor was reproducing material from textbook on the board. I would guess that the abandonment rate for this course is relatively high (in-spite of the introductory nature) because of monotonous delivery and lack of intuitive explanation of concepts (vs. Khan Academy/Andrew Ng for instance).

By Luis M V F

Mar 20, 2019

I am very disappointed with this course. It was very hard to follow, and not because this is challenging, but partly because the instructor is not so good. I had to read a lot on my own to be able to complete some assignments. I hope you can improve the content of this course. The best course of this specialization is the second one, and this is the worst.

By Sergii T

Dec 22, 2018

Course is targeted more on pure math derivations, rather then real world applications. For my opinion, it doesn't fit well with other courses in this specialisation. it goes too Deep in math derivations. It should fit for students interested in mathematics and not engineers, who want to get more insights in ML related math.

By Jian L

Oct 23, 2020

The topic of this course is an important and extremely useful concept and approach for Machine Learning and other applications. However, the way it was taught was ineffective for learning (to me personally and I suspect to many others as well) regardless of our different backgrounds or lack of strong math skills.

Although the concept of PCA is rather simple, its computations and the interpretations & meanings of each transformation are challenging without examples and visualizations. We did have some examples in the course, but not detailed and complete enough to fully understand PCA intuitively and thoroughly.

One ended up spending huge amount of time reading additional relevant articles on internet, fishing out useful information from Discussion Forums, yet still struggling a great deal to write codes for completing assignments. Even though the codes run through without returning mistakes and one gets "pass", there is not much satisfaction and joy one feels in learning because sometimes, the initial learning from listening to the lectures was so insufficient and inadequate for doing the assignment that one simply completes the task doing all one can without further understanding and solidification of the knowledge.

This feeling is in such a huge contrast to those when learning the two other related courses in the Specialization (Linear Algebra and Multivariate Calculus) during which one enjoyed immensely the learning process as well as the content. Here I do not think that one can attribute the difference to the seemingly higher level of difficulty of PCA. The instructors for those two courses did an excellent job to explain things intuitively and thoroughly.

Marc is an extremely knowledgeable and competent professional. By changing the teaching style more in tune with the learners, I am sure more people will learn a great deal from this course and enjoy the learning process in the meantime. Thank you for the hard work put into teaching this course all the same.

p.s. If the teaching staff involved can fix all technical issues or mistakes related to the Assignments, it will greatly benefit the learners. Thank you.

By Mikhail D

May 27, 2020

I really loved the first two courses in the specialisation, but this one honestly is a disaster. This is bad teaching at its finest: "I'll throw a bunch of formulas at you and it is your job to figure out what they mean", "Here is an important concept that is critical to understanding the material, but I don't have time to cover it so please check it out Wikipedia instead".

The lecturer shows no passion to the subject whatsoever and spends all the time writing out monstrous formal definitions instead of trying to build student's intuition of what things really mean. This is exactly what Sam and David were so good at in the first two courses, and it is a real shame they had to replace them for this final course.

As others pointed out programming assignments are indeed poorly constructed, with lots of pitfalls and generally speaking very frustrating.

By Kathleen D

Dec 10, 2020

This course covers critical material, but unfortunately does not present them well. I found myself having to constantly find outside resources for clearer explanations. For many topics, the course itself makes no attempt to explain them, but just presents links to dense reading material and, in a couple of cases, Wikipedia articles. In my opinion, if you're linking to Wikipedia for core components of the course, you're no longer justified charging for that course. The lectures are spent deriving formulas, but providing little or no intuition about what they mean or how they are used. The course does not prepare one well for the final lab in particular, which felt like a disconnect from the lectures, had unclear explanations of what to do, and contained errors in the provided code. I did power through it, and I did learn something about PCA, but feel like I needed there to be something more to cement what I learned in practical understanding.

By Akiva K S

Jun 13, 2020

I passed the course with good grades, I like an idea of such course. But my opinion is: the course needs substantial improvement. Period. I personally enjoyed listening to Marc Peter - he's an excellent lecturer and super-smart guy. His book on math for Machine Learning is challenging, but almost perfect. But the course itself is a disappointment. 1) Precious lecturer's time is _wasted_ on explaining very basic concepts such as mean and variance... to make the course accessible for poor gals/guys with no math in head at all and, consequently, to enable Coursera to earn more $$. But it doesn't help - what they'll do in Week 4 once eigenvectors with show up from nowhere?? Unfortunately the course is not for them

2) Lecturer wastes his _super precious_ time by multiplying matrices by hand. Screw it. I'm also lecturer at university and from my experience such demo should be done once/twice. And after that, guys, matrix operations in numpy have to be demonstrated in the class, otherwise practical exercises could be done only by those with solid prior experience in Python + NumPy

3) Quality of practical assignments is below any critics. Some cannot work at Coursera platform, they should be run locally and to run Jupiter Notebook locally one has to be seasoned Python programmer and good DevOps. Guidelines to practical assignments do not guide at all. SW practices in assignments are dubious.

Bottom line: kindly advice to develop two courses - overview for those without linear algebra knowledge at all, and normal one - focused on Week 4 material. Coursera format with 5 minute lectures cannot accommodate such course? Leave this platform, Marc Peter is great lecturer and specialist, his name should not be associated with such failure.



By Amar D N

May 30, 2020

I have already completed this course but i felt like i needed to share my frustration regarding this 3rd course of the specialization. First of all, the previous two courses were excellent! I am not judging based on difficulty, those two courses opened my eyes on linear algebra and calculus. But this 'PCA' one is utterly disappointing. It revisited some theories of the previous courses in such a bad way.

If most of the things need to be learnt through the reading materials then is it justified to do this course? I mean I can find even better reading materials on the web. The only reason i kept on going is to go through the PCA portion of week 4. All topics of previous weeks were already covered by me that's why i didn't have to struggle much. But the explanations were quite inadequate and proofs of the theorems felt like rushed. I somehow managed to reach the final assignment and then my real frustration began. The grader was giving inappropriate results, submitting my code gave me 2/3 out of 10. after resubmitting with the same code multiple times, I finally passed the assignment. Won't recommend this course to anyone.

By Paul

Aug 5, 2020

The lecturer doesn't provide us with adequate information to connect all materials together. Much knowledge in lectures are not enough or unrelated to completing programming homework or tests. In one of the programming assignment, the guidance is misleading and I believe most of us reached out for help in forum to finish the assignment.

In week one, everything looks pretty simple but the question and lectures are kind of unclear. Everything then goes worse in week two. the programming assignment is a nightmare. If you are familiar with python, you may only spend hours to complete this. Otherwiese you may have to struggle between unclear guidance, bugs and python syntax. Week three is not so bad but a lot of resource are from wikipedia with little illustration. Week four is jammed with auxiliary materials and massive critical PCA knowledge with limited explanation. I simply feel I was fooled to enroll in this course.

By Rachel S

Jul 9, 2019

After the first two courses in the specialisation, this one was truly disappointing. You are warned at the beginning that this course is challenging. This is true, but there is absolutely no reason why it should be THIS challenging. There are several factors that make this course more difficult than it needs to be. The poor pacing leads to a bizarre mix of repetitive trivial questions and vague assignments with poor explanation and over-reliance on reading external sources. Nobody wants constant hand-holding but the lack of direction will lead to you wasting far too much time chasing down minor technical errors and figuring out what on earth is being asked of you. Finishing this course was a slog and I just wanted to wash my hands of it. The first two courses in this specialisation are great and I highly recommend them, but I would not be happy if I had paid £38 for this course.

By James P

Jun 10, 2018

After taking/passing the two previous courses, this course is very disappointing. The programming assignments are more about numpy/python peculiarities (which dimension is D or N) and deciphering cryptographic specifications (X is documented as an input but not a parameter to the function). The misleading templates appear to be intentional - it is not clear what educational purpose this serves. The difficulty in this course is not conceptual understanding - it is difficult because the assignments are intentionally confusing. Another point regarding programming in general. This course prefers implementing numerous functions (no testing), generating large amounts of random data as input, and assuming all goes well. Perhaps each function should be tested for correctness individually with known input/output - this is not a novel idea.

By Gabriel W

May 23, 2020

I did the 3 specialization lessons "Mathematics for Machine Learning" (Linear Algebra, Multivariate Calculus, PCA). I really had a lot of fun and learnings in the first one (5 stars for Linear Algebra): David Dye is an increadible teacher. The second one is okay (3 stars for me). In the third one (PCA) the expected knowledge difference between the lessons (easy to follow) and the programming tasks of weeks 2 and 4 was to high and to much challenging for me. I had no fun to pass the corresponding tests and I have finished the lessons with the only one target to be done. It doesn't correspond to what I'm looking for when I'm learning during my week-end.

By Nathan R

Jan 22, 2020

This was a terrible course in every way possible. DO NOT waste your time and money on it. The lecturer skips over things way too fast and delivers poor explanations, and then gives ridiculously hard programming assignments when this course is supposed to be mainly about maths. Moreover, he asks quiz questions about topics he doesn't even cover in the lectures, and the answers provided are terrible. Very poor quality course, which is a shame, because the other two courses in this specialization are actually worth doing.

By Naveen K

Aug 9, 2018

I've finished all the two previous courses in this specialization.I was shocked at seeing the content and programming assignments given to us.It was totally different.They expect a lot from us.Content is not up to the mark.First two courses was awesome.But this course is an exact opposite to the first two.Totally disappointed!! I was hoping to finish this specialization.But it seems I cannot. I didn't expect this.

By Matt C

Jul 1, 2018

I was expecting to learn a lot in this course. I did not. The lectures don't really explain much at all and then you're thrown a quizzes and assignments that do not match what was in the actual lectures. The rest of the specialization was great but this course falls of the other two.The explanations in the videos are very poor. Really disappointed.

By Ong J R

Aug 11, 2018

Concepts weren't taught well and programming exercises are full of errors. Very difficult to debug and find out if I am on track during the programming exercises. Lecturer lacks passion and ability to convey core concepts well to audience. Hard to follow up on the mathematical derivation with the simple stuff that we were taught in module 1 and 2.

By Mojtaba B

Apr 1, 2021

This is the worst course on in this specialization. The instructor is like a robot reading a text book. The material is not well constructed. It's just a bunch of formula after formula, with no intuition. It has a lot of readings, which is annoying in an online course. The programming assignments are challenging, but I found them useful.

By Steve

Sep 5, 2020

Very sketchy presentation of complex material. Each lecture averaged around 5-6 minutes when they should have been 15-20 minutes. As a result the instructor glossed over the material without adequate explanations and derivations. And no one at Imperial College seems to be responding to recent posts in the discussion forums.

By Kannan S

Apr 11, 2018

There are no numerical examples as the course progresses. The instructor does everything algebraically. As a result I was not able appreciate the practical use of PCA. Later on I saw there are very nice videos in Youtube that illustrate the concept more lucidly using numerical examples. I am disappointed.

By Valeria B

Jun 26, 2019

Too few examples given during the lessons. More examples could greatly improve understanding and the solution of quizzes and programming assignment.

I had to integrate this course with multiple sources I looked up for by myself, so I'm really wondering if I wisely spent my money on this course.

By Yaroshchuk A

May 22, 2020

Instructor writes down equations and formal definitions while reading out loud what he is writing. None further explanations are given.

Basically whole course is a voiced list of equations together with some links to Wikipedia which even further empathize pathetic quality of content.

By John Z

Oct 13, 2019

Marc Peter Deisenroth jumps too much at the important computation steps. Some steps might be simple to him, but it could be very misleading to students.

Often times, he will just throw out some equations without letting the student know what exactly we are trying to achieve.

By Rob E

Aug 11, 2020

Intentionally obtuse. No effort whatsoever is given to helping people learn. The instructors don't answer questions and they admittedly make their lectures hard to understand.

I only took this because there were no other courses on available at the time.

By Alisa G

Jul 23, 2020

The lectures are only partly related to the quizzes and assignments, some parts are just unnecessarily over complicated and confusing. The final and most important assignment is so computationally heavy so it's hardly running locally