#20 overallClassic
CS229 Machine Learning
Stanford University
20 recommenders · 24 threads · recommended in 10 years, 2007–2023 · score 32.0
Stanford's graduate-level machine learning course taught by Andrew Ng, covering the theory and math behind common learning algorithms, with lecture videos and course notes available online. It assumes a strong background in probability and linear algebra.
Commenters call it one of the best ML courses out there, praised for deriving algorithms from the math and for its clear, rigorous treatment compared with the lighter Coursera version.
Machine Learning & AIadvancedfreevideo lectures#andrew ng#machine learning#statistics#linear algebra#supervised learning
Recommendations by year
20062026
"There are two algorithms."
In the case of machine learning techniques that employ a learning algorithm (e.g. SGD) and a separate classification algorithm (e.g. forward prop), the situation is no different. Gradient descent in itself doesn't take "unbiased" data and pollute it with "bias" -- neither does, forward propagation.
These algorithms are merely functions that are _parametrized_ by a potentially biased learned model (which really entirely amounts to having biased data).
I recommend taking a look at Stanford's Intro to Machine Learning CS 229 course notes for a brief overview of these concepts. I can't speak anymore highly of the material in this course; it's by far the best out there, and it's how I learned ML.
"The generated model is then incorporated into an algorithm for making decisions or categorizing objects. If the original data contains biases, the final model will be biased."
Right, the "final model" (which comes directly from the data) will be biased, but not the ALGORITHM (the "math," as you call it).
For example, I can't make an unbiased data set "biased" by using linear regression instead of logistic regression. It would be quite a tremendous discovery if you somehow figured out a way SGD in itself was biased, but the burden of proof on such an extraordinary claim would be on you.
So like I said in my parent post, I can see how the data can be biased, but I'm struggling to find any biases in the algorithms themselves (assuming they are properly implemented and not an Underhanded C Contest [1] entry).
Granted, if we're not actually using ML, and we're using something like a hardcoded decision tree or FSM instead (it was pretty strongly implied that we weren't though because we were talking about data-driven algorithms), then sure, that could very easily be a biased algorithm, but I've maintained that all along.
[1] http://www.underhanded-c.org/
I took this class as CS 229 at Stanford, and will attest that it's pretty damn awesome (easily one of the best classes I've been able to take). The course really provides a thorough exploration of a lot of the main techniques in machine learning, and Prof. Ng also presents it in a very engaging and understandable way. This was one of the few classes where I enjoyed my 3-hour long midterm!
You can see the materials from this course's previous incarnation at http://www.stanford.edu/class/cs229/
Depends on your background and what you're most interested in learning.
- if you want to really understand the mathematical foundations, you should take Andrew Ng's course (the full Stanford course not the Coursera one)
- If you want a quick sampler of ML and to know the big ideas without investing too much time, take Andrew Ng's coursera course. I'm not sure what his deeplearning.ai course is like but it seems like that one is in python.
- if you want to learn by getting your hands dirty, either fast.ai's ML course or Dive into Deep Learning is good. Fast.ai's course will get you into the nitty gritty parts of training neural networks.
For the purpose of this question, you might search for pre-trained models that predict what you want to predict, and use them.
https://modelzoo.co/
https://github.com/tensorflow/models
https://cv.gluon.ai/model_zoo/index.html
If there are no pre-trained models, you could take a look at fast.ai courses:
https://course18.fast.ai/ml.html (for Machine Learning (ML))
https://www.fast.ai (for others "DL" (Deep Learning))
This courses is targeted towards programmers, and they dive right into the code to use ML (train models and use them) with Jupyter notebooks. They also have a book whose notebooks are here: https://github.com/fastai/fastbook
If you have some maths background (high-school, or first year university), check out Stanford's CS229 with Andrew Ng:
https://www.youtube.com/playlist?list=PLoROMvodv4rMiGQp3WXSh...
I think it's better than the Coursera version because he uses the board (whiteboard in 2018, blackboard in 2008-ish version)
This is the same argument people gave for Machine Learning but Andrew Ng showed us otherwise.
This is exactly the beauty of Ng's ML course. The fact that Andrew Ng made you curious makes CS229A (Applications of Machine Learning) a very successful course. Now, if you want to satiate that curiosity I will recommend you CS229 [0]. It contains all the theory and math and YET that course is as beautiful as CS229A. This further proves the point that you do not need theory to be boring to achieve your objectives. If you want to teach something, you will find a way. Au contraire, Jeff Hinton's course makes me not want to even touch or understand Neural Networks again. FYI, I have a Ph.D in Computer Science and I work as a Data Scientist. If this is my view, imagine what it would be like beyond the us elites?
[0] https://www.youtube.com/view_play_list?p=A89DCFA6ADACE599
The main reason we see all these relatively information-less blog posts / tutorials is because most people on HN are afraid of the math. If you're not afraid of the math (or have a relatively strong math background), then honestly you can jump into the CS 229 Stanford lecture notes and homework assignments. If that's a little too heavy for you, you can also start with the MOOC version of that course (which is a very watered down version of CS 229).
Contrary to the other advice around here, I would strongly advise NOT taking a course. I think it is a good idea at some point, but it is not the first thing you should be doing.
The very first thing you should do is play! Identify a dataset you are interested in and get the entire machine learning pipeline up and running for it. Here's how I would go about it.
1) Get Jupyter up and running. You don't really need to do much to set it up. Just grab a Docker image.
2) Choose a dataset.
I wouldn't collect my own data first thing. I would just choose something that's already out there. You don't want to be bogged down by having to wrangle data into the format you need while learning NumPy and Pandas at the same time. You can find some interesting datasets here:
http://scikit-learn.org/stable/datasets/
And don't go with a neural net first thing, even though it is currently in vogue. It requires a lot of tuning before it actually works. Go with a gradient-boosted tree. It works well enough out of the box.
3) Write a classifier for it. Set up the entire supervised machine learning pipeline. Become familiar with feature extraction, feature importance, feature selection, dimensionality reduction, model selection, hyperparameter tuning using grid search, cross-validation, ....
For this step, let scikit-learn be your guide. It has terrific tutorials, and the documentation is a better educational resource than beginning coursework.
http://scikit-learn.org/stable/tutorial/
4) Now you've built out the supervised machine learning pipeline all the way through! At this point, you should just play:
4a) Experiment with different models: Bayes' nets, random forests, ensembling, hidden Markov models, and even unsupervised learning models such as Guassian mixture models and clustering. The scikit-learn documentation is your guide.
4b) Let your emerging skills loose on several datasets. Experiment with audio and image data so you can learn about a variety of different features, such as spectrograms and MFCCs. Collect your own data!
4c) Along the way, become familiar with the SciPy stack, in particular, NumPy, Pandas, SciPy itself, and Matplotlib.
5) Once you've gained a bit of confidence, look into convolutional and recurrent neural nets. Don't reach for TensorFlow. Use Keras instead. It is an abstraction layer that makes things a bit easier, and you can actually swap out Tensorflow for Theano.
6) Once you feel that you're ready to learn more of the theory, then go ahead and take coursework, such Andrew Ng's course on Coursera. Once you've gone through that course, you can go through the course as it actually has been offered at Stanford here (it's more rigorous and more difficult):
https://see.stanford.edu/Course/CS229
I will also throw in an endorsement for Cal's introductory AI course, which I think is of exceptionally high quality. A great deal of care was put into preparing it.
http://ai.berkeley.edu/home.html
There are other good resources that are more applied, such as:
http://machinelearningmastery.com/
I hope this helps. What I am trying to impart is that you will understand and retain coursework material better if you've already got experience, or better yet, projects in progress that are related to your coursework. You don't need to undergo the extensive preparation that is being proposed elsewhere before you can start PLAYING.
It really depends on how you learn.
Traditionally the best answer is to do Andrew Ng's Machine Learning course[1]. It's a great course, and you won't regret doing it, but it is kind of annoying that it is in a language (Matlab/Octave) you'll (hopefully) never use again.
A lot of people now recommend working through CS229[2]. I haven't looked at it depth, but I've been impressed with a lot of the class projects.
If you like books, then Statistical Learning in R[3] is generally well regarded.
If you like doing stuff, then Kaggle and SciKit-Learn will throw you in the deep-end. Just be aware you can't just program, though - you really do need to understand some theory. It's good to run into a problem, and then really, really understand the reasons behind what you are seeing.
[1] https://www.coursera.org/learn/machine-learning
[2] http://cs229.stanford.edu/
[3] http://www-bcf.usc.edu/~gareth/ISL/
I would recommend a first-principles approach, if you're really interested in the field, building a career around it, and not just jumping on something because it's "hot".
To that end, start with Convex Optimization [1]. You'll develop an incredibly versatile - but not esoteric - mathematical background. You'll link the mathematics to solving real engineering problems fairly quickly. You'll tackle the basics of machine learning as well.
After this, you'll have a pretty strong background to get into more traditional machine learning and deep learning. Regarding the former, Andrew Ng's notes are pretty solid [2], and for DL, Karpathy's Stanford course is great [3].
Self-studying all this material could take up to a year (part time, assuming you do it while having a job), but I don't know of a better way to gain the skills and get into the field. This approach balances your learning of fundamentals, engineering applications, real software, numerical computing, and the more fun "new" stuff.
Hope it works out well for someone else.
[1] - http://stanford.edu/class/ee364a/ Great video lectures available too.
[2] - http://cs229.stanford.edu/materials.html Also has great video lectures on Youtube.
[3] - http://cs231n.stanford.edu/index.html Ditto on the lecture vids.
(Disclaimer: I have only seen part of the material, for both courses) This seems true in terms of difficulty, mostly because CS229 assumes a much stronger math background and provides more of the theory for a lot of the ML techniques being used. However, if you want to know the "technique space" of usual ML algorithms and when/how to apply them, the Coursera course seems to be 70-90% of the way there in terms of breadth of the material (with a bias towards the most commonly used methods, so perhaps 70% of the techniques, applicable to more than 90% of the use cases).
So, if you want to do ML in industry, applied to common problems, the Coursera course will get you there. If you want to become an ML researcher, the Coursera course will fall way short of that, while CS229 might be at least a first step (followed by CS229T/STATS231 [1]).
[1] Lecture notes online, too: https://web.stanford.edu/class/cs229t/
I'd suggest going back to the original youtube[1] and course materials[2]. Coursera version is nothing but a hand-wavy watered down "feel good" version of the original class. I also really like the Caltech's take "Learning from data"[3]
[1] https://www.youtube.com/watch?v=UzxYlbK2c7E
[2] http://cs229.stanford.edu/
[3] http://work.caltech.edu/telecourse.html
Don't look at the prerequisites and dig right in. I don't think you'll have any problems. Linear Algebra is something that kinda stand on its own.
You should not think like that when learning. If you want to be efficient just take shortcuts.
Learn machine learning (btw there are great courses on coursera or Stanford about that), and if you're stuck on something just check on wikipedia or another resource.
Here's a comment which I had written earlier on another article. The context was about learning ML with Python - of course the objective of Hal is more generic but some parts of it apply here too.
https://news.ycombinator.com/item?id=5802968
The book details building ML systems with Python and does not necessarily teach ML per se. It is a good time to write a ML book in Python particularly keeping in mind efforts to make Python scale to Big Data [0].
What material you want to refer to is entirely dependent on What you want to do?. Here are some of my recommendations-
Q : Do you want to have an "Introduction to ML", some applications with Octave/Matlab as your toolbox?
A :Take up Andrew Ng's course on ML in Coursera [1].
Q : Do you want to have a complete understanding of ML with the mathematics, proofs and build your own algorithms in Octave/Matlab?
A : Take up Andrew Ng's course on ML as taught in Stanford; video lectures are available for free download [2]. Note - This is NOT the same as the Coursera course. For textbook lovers, I have found the handouts distributed in this course far better than textbooks with obscure and esoteric terms. It is entirely self contained. If you want an alternate opinion, try out Yaser Abu-Mostafa's ML course at Caltech [3].
Q : Do you want to apply ML along with NLP using Python ?
A : Try out Natural Language Tool Kit [4]. The HTML version of the NLTK book is freely available (Jump to Chapter 6 for the ML part) [5]. There is an NLTK cookbook available as well which has simple code examples to get you started [6].
Q: Do you want to apply standard ML algorithms using Python?
A : Try out scikit-learn [7]. The OP's book also seems to be a good fit in this category (Disclaimer - I haven't read the OP's book and this is not an endorsement).
[0] http://www.drdobbs.com/tools/us-defense-agency-feeds-python/....
[1] https://www.coursera.org/course/ml
[2] http://academicearth.org/courses/machine-learning/
[3] http://work.caltech.edu/telecourse.html
[4] http://nltk.org
[5] http://nltk.org/book/
[6] http://www.amazon.com/Python-Text-Processing-NLTK-Cookbook/d....
[7] http://scikit-learn.org
For a beginner to machine learning I'd recommend Andrew Ng's course notes and lectures over any textbook I've seen. But I prefer his Stanford CS 229 notes to Coursera for exactly the reasons you state: they are watered down. After you really can understand Andrew Ng's course notes I'd recommend a textbook because they go in more detail and cover more topics. My two favorites for general statistical machine learning are:
* Pattern Recognition and Machine Learning by Christopher M. Bishop
* The Elements of Statistical Learning by Trevor Hastie, Robert Tibshirani and Jerome Friedman
Both are very intensive, perhaps to a fault. But they are good references and are good to at least skim through after you have baseline machine learning knowledge. At this stage you should be able to read almost any machine learning paper and actually understand it.
The book details building ML systems with Python and does not necessarily teach ML per se. It is a good time to write a ML book in Python particularly keeping in mind efforts to make Python scale to Big Data [0].
What material you want to refer to is entirely dependent on What you want to do?. Here are some of my recommendations-
Q : Do you want to have an "Introduction to ML", some applications with Octave/Matlab as your toolbox?
A :Take up Andrew Ng's course on ML in Coursera [1].
Q : Do you want to have a complete understanding of ML with the mathematics, proofs and build your own algorithms in Octave/Matlab?
A : Take up Andrew Ng's course on ML as taught in Stanford; video lectures are available for free download [2]. Note - This is NOT the same as the Coursera course. For textbook lovers, I have found the handouts distributed in this course far better than textbooks with obscure and esoteric terms. It is entirely self contained. If you want an alternate opinion, try out Yaser Abu-Mostafa's ML course at Caltech [3].
Q : Do you want to apply ML along with NLP using Python ?
A : Try out Natural Language Tool Kit [4]. The HTML version of the NLTK book is freely available (Jump to Chapter 6 for the ML part) [5]. There is an NLTK cookbook available as well which has simple code examples to get you started [6].
Q: Do you want to apply standard ML algorithms using Python?
A : Try out scikit-learn [7]. The OP's book also seems to be a good fit in this category (Disclaimer - I haven't read the OP's book and this is not an endorsement).
[0] http://www.drdobbs.com/tools/us-defense-agency-feeds-python/...
[1] https://www.coursera.org/course/ml
[2] http://academicearth.org/courses/machine-learning/
[3] http://work.caltech.edu/telecourse.html
[4] http://nltk.org
[5] http://nltk.org/book/
[6] http://www.amazon.com/Python-Text-Processing-NLTK-Cookbook/d...
[7] http://scikit-learn.org
Thanks for sharing. I can also recommend the CS229 Machine Learning course from Stanford, available on Coursera: https://class.coursera.org/ml/lecture/preview
I don't think it measures up as much. It's basically a dumbed down version of his actual Stanford course. If you have any experience in Math and Linear Algebra, you should take a more serious course like his lectures in Youtube or Caltech's course on Youtube. The ideal audience of the Coursera course is non-math people who want to get an idea of what machine learning is.
Not a book, but Andrew Ng's coursera course (or Stanford class video lectures) are great and have lots of practical tips.
If you were looking for recorded lectures, why would you take the CS229A online course? You should take the recorded CS229 course : http://www.academicearth.org/courses/machine-learning
not sure if you saw it in the other thread, but you can check out http://www.stanford.edu/class/cs229/materials.html for some old course materials.
this is easily one of the best classes i've been able to take - as i said in the other thread, i was surprised to enjoy a 3-hour midterm! i think it's awesome they're making this available to more people.
I wish they had the new 107 on there. It's a very different course now (all C and assembly). Unfortunately the Stanford Center for Professional Development does most of the video taping now and is very resistive to putting videos online because they make something like $1k from people who pay just to watch the videos and $5k from people who are officially enrolled and get exams and assignments and such.
Luckily, there are some newer recordings at http://openclassroom.stanford.edu/MainFolder/HomePage.php
I hear 161 (Algorithms) is a great class. 229 (Machine Learning) is supposed to be pretty good too.
You can't take enough maths and statistics classes. Machine Learning - these days at least - is very maths and statistics oriented. Linear Algebra is big, so make sure you have that covered.
If you want to get your toes in the water a bit with ML, there are some great ML libraries that encapsulate some of the popular algorithms. Mahout[1], Weka[2] and Mallet[3] are popular in the Java world,
A lot of folks use Python for ML as well, and there are some good libraries there.
The R language is also popular in ML circles; as is C++. If you learn some combination of Java, Python, C++ and/or R, you'll be in good shape from a programming language standpoint.
Check out http://mloss.org/software/ also.
Some good books to get started with include:
Algorithms of the Intelligent Web[4]
Programming Collective Intelligence[5]
Collective Intelligence In Action[6]
Stanford make a great series of lectures[7] available online that you might find useful.
[1]: http://mahout.apache.org/
[2]: http://www.cs.waikato.ac.nz/ml/weka/
[3]: http://mallet.cs.umass.edu/
[4]: http://www.manning.com/marmanis/
[5]: http://www.amazon.com/gp/product/0596529325
[6]: http://www.amazon.com/Collective-Intelligence-Action-Satnam-...
[7]: http://see.stanford.edu/see/lecturelist.aspx?coll=348ca38a-3...
I'm a student at the University of Sydney focused primarily on Natural Language Processing and Machine Learning. My largest regret is not doing more math and that's something I plan on fixing after Honours (either in PhD or in my spare time wherever I end up). If you can, take as much math as possible.
I'd also mention that although the traditionally important math for computer science is discrete mathematics and graph theory you really can't underestimate how important linear algebra, differential calculus and probability theory are if you want to actually understand the theory behind a lot of machine learning algorithms.
If you're looking for a fun project to do that involves mathematics I'd highly suggest writing a raytracer. The amount of linear algebra that you end up learning accidentally just trying to render a sphere with lighting is amazing and it really inspires you to learn more.
I would also highly recommend going through Andrew Ng's AI course from Stanford[1] where he derives many common machine learning algorithms in a simple to follow manner. It shows just how many wonderful bits and pieces of math fall into the area. He only assumes a basic knowledge of probability theory and linear algebra and takes great strides in ensuring there's no "magic steps" in the derivations.
If you get lost, pause the video and read the (wonderfully written) lecture notes or Google for the particular topic you're stuck on. Review notes are also provided for Linear Algebra, Probability Theory, Convex Optimization, Hidden Markov Models and Gaussian Processes if any of those really catch your fancy, but they're not required reading to necessarily understand the majority of the course.
[1] http://see.stanford.edu/see/courseinfo.aspx?coll=348ca38a-3a...
For a quick introduction to SVMs (and a wide range of machine learning algorithms) then I highly suggest Andrew Moore's tutorials. They're extremely concise and well described, taking the format of a university lecture. Only the PDF slides are available however. http://www.autonlab.org/tutorials/svm.html
If you want a good introduction which actually derives the math and logic behind SVMs then I'd suggest looking at Stanford's AI/ML video lectures available for free here - http://see.stanford.edu/see/lecturelist.aspx?coll=348ca38a-3... It begins with the first few lectures which covers introductory knowledge and some other machine learning algorithms but lectures 6-8 cover the theory and principles behind SVM.
The great thing about this is that relatively little knowledge is assumed on the student's part and he provides a great deal of notes and handouts on any areas the students may be fuzzy.
Unless you're going to be merely using a prebuilt machine learning library I feel that understanding the math and logic behind the algorithms is vital.
Check out the lecture notes for CS229, Stanford's class on Machine Learning. The class has no textbook, so the notes are fairly comprehensive. (Though the math notation can get a bit intense...)
http://www.stanford.edu/class/cs229/materials.html
Stanford grad courses are excellent. Just following the exercises will get you very far:
* AI Foundations: https://stanford-cs221.github.io/autumn2022/
* Meta Learning: https://cs330.stanford.edu/
* Theoretical ML: https://cs229.stanford.edu/
* NLP: https://web.stanford.edu/class/cs224n/
* Computer vision: http://cs231n.stanford.edu/
* Reinforcement Learning: https://web.stanford.edu/class/cs234/
Read Blogs:
* DeepMind: https://www.deepmind.com/blog
* Google Research: https://ai.googleblog.com/
Replicate papers that you are interested in with a twist specific to your use cases
* RL Spinning UP:https://spinningup.openai.com/en/latest/
I urge beginners not to learn these things from blog posts, even if it seems more digestible. Take a reputable textbook and you will be better off. Or take a MOOC, like Andrew Ng's or courses from MIT and Stanford on Youtube. It may look harder, but it has all been carefully didactically structured. It's harder on the long run to learn from a non-expert.
There's so much confusion out there, blog posts confusing cross-entropy with "softmax loss", gradient descent with backpropagation etc. etc.
I really have to take exception to this (characterizing MOOCs as some sort of useful-only-for-signalling high-tech "vocational training" for the privileged).
I've been working through Andrew Ng's Machine learning class (https://www.coursera.org/learn/machine-learning/home/welcome) on Coursera, and I think it's wonderful. It begins a bit slow-paced, and I definitely supplement the lectures with readings and the class notes for CS 229 (http://cs229.stanford.edu/materials.html) that broadly match the content of the online course, but I absolutely love the course.
The lectures are well-paced and have 'in-line' quizzes to test your understanding as you go. The problem sets are easy to do at any time, with optional components and instructions that let you understand the material better if you want to deep dive. The course itself is available to start whenever you choose, which means barrier for entry is very low.
MOOCs may not be everything that they first promised, but they definitely win in terms of the sheer accessibility of content and the flexibility of the format. I would not be learning machine learning right now if the only available format was dead-tree or (worse) putting together information piecemeal from blog posts.
I've taken both, and the code is in fact not that much simpler than it was in the original class. There are, however, two huge differences: the algorithm is spoon-fed to you, and there is no math.
Firstly, think about how much more difficult the assignments would be if, for example, the steps weren't broken out and we didn't get any advice on how to vectorize. Of course, it would still be short work for anyone who (a) knows Matlab/Octave and/or (b) understands the material well, but it would also be an order of magnitude harder.
Secondly - and this is by far the larger point - the original CS 229 was really about math; the programming assignments were more of an afterthought. The lectures and homework mainly focused on the theoretical derivations and corollaries of the math that led to the algorithms. Once you'd done your bit on the math and cried to your classmates and the TA about it, you could go and implement the beautiful and extremely succinct result in Matlab.
As for my perspective on the difference, I believe it is a deliberate choice made with full knowledge of the difficulty drop. For starters, there are (with regards to homework help) no TAs in this course, so the absolute difficulty would have to decline to create an equivalent experience. More significantly, the enrollment has increased by a factor of about 700. If Stanford students had trouble with the original, you can bet that the median student in the course doesn't find it as easy as either of us does. If the goal is to generate the greatest benefit for the most people, and delivering the algorithms with a good intuition on their proper use will do so, then this course has succeeded marvelously. Of course, the smartest and most dedicated students will want more, which remains available through textbooks as well as the original course handouts (http://cs229.stanford.edu/materials.html). However, I would argue that the goal of most MOOCs (massive open online courses) should be to kindle interest and foster basic understanding, both of which the Coursera version achieves.
It's been over twenty years since I finished college. Last year I did a "certificate in quantitative finance" at UW which -- like the Stanford classes -- were both online and seemingly aimed at working professionals. It's interesting to compare these on three fronts:
1) The amount of rigor and work required for the Stanford classes was significantly less than the UW classes. I spent as much as 10 hours per week on the UW homework in addition to the 3-4 hours of video lectures. That's against about an hour for the Stanford homework and another 60-90 minutes for the lectures. I agree with the OP's description of the ML homework as starting out at a decent level of difficulty and quickly becoming trivially easy.
2) I found the format of the Stanford lectures considerably easier to follow. By making a canned recording, there's a huge amount of dead time which can simply be edited out of the lecture. That plus the ability to watch at 1.5x speed meant that I was rarely tempted to do something else at the same time as watching the lecture -- something which frequently caused me trouble with the UW classes.
3) The UW classes were something like $3500/course. If my employer hadn't been willing to reimburse me, I wouldn't have taken them.
All-in-all, I think the Stanford classes are great experiments in which I'm happy to participate. I'm planning to take five of them in Jan-Mar.
Also note that this book is not for the faint of heart.
For introductory material you may want to take a look at some of these courses:
Shalizi, 35-350: http://www.stat.cmu.edu/~cshalizi/350/
Shalizi, 36-402: http://www.stat.cmu.edu/~cshalizi/402/
Ng, CS229: http://www.stanford.edu/class/cs229/materials.html
Ng, CS294: http://www.stanford.edu/class/cs294a/
Roth, CS446: http://l2r.cs.uiuc.edu/~danr/Teaching/CS446-10/lectures.html
Jebara, COMS4771: http://www.cs.columbia.edu/~jebara/4771/handouts.html
Jebara, COMS6772: http://www.cs.columbia.edu/~jebara/6772/solutions.html
Jordan, CS294: http://www.cs.berkeley.edu/~jordan/courses/294-fall09/
Kumar, EECS6898: http://www.sanjivk.com/EECS6898/lectures.html
Collins, COMS6998: http://www.cs.columbia.edu/~mcollins/courses/e6998-3/index.h...
Jaakkola & Collins, 6.867: http://courses.csail.mit.edu/6.867/lectures.html
Hamilton, CS831: http://www2.cs.uregina.ca/~hamilton/courses/831/
Girolami, MLM: http://www.dcs.gla.ac.uk/~girolami/Machine_Learning_Module_2...
Bengio, IC-49: http://bengio.abracadoudou.com/lectures/
Lin, CMSC838: http://www.umiacs.umd.edu/~jimmylin/cloud-2010-Spring/syllab...
For a broad(er) perspective on AI, checkout UC Berkeley's CS188 http://inst.eecs.berkeley.edu/~cs188. I think it's a good entry course into AI. One advantage is that the math requirement is not as high as Stanford's CS229 or EE263 (both of which are fantastic courses to be clear, but are easier to appreciate with the correct background).