

My Education in Machine Learning via Cousera, A Review So Far - Rickasaurus
http://richardminerich.com/2012/12/my-education-in-machine-learning-via-cousera/

======
dizzystar
This is a nice overview. I'm up and down on the Coursera courses as they seem
to be hit or miss, at times incomplete, at times easy A material and at times
intractable. There really is no good progression from A to B and that is fine
if you are a true autodidact as I am, but for those who are considering this,
or any collection of OCW as a replacement from standard education, I would
strongly suggest not doing this.

The problem with Coursera, IMO, is that despite the promise of free education
for all, the very large amount of courses with a broad spectrum of usefulness
and difficulty makes it too difficult to navigate and can cost a student hours
of wasted time watching videos that may be far beneath or above the student's
abilities. I would suggest Coursera creates a pre-exam section for all the
courses so the student can have a slightly better understanding of what they
are signing up for. Hell, they are promoting themselves as a Machine Learning
repository, can't they do a basic suggest-a-course section based on pre-exams?

With that said, I love the idea of Coursera, Udacity, EdX, etc. and what they
promote. I am one of those people who, despite being American, had zero chance
of ever getting into college due to the quality of my inner-city high school
and financial circumstances. Of course, the issue is that if you do grow up in
this circumstance, you probably won't be able to take advantage of the free
education because you may not have a computer. Regardless, anyone who wishes
to partake can join with little more investment than a $200 computer from
Walmart, so the financial excuse isn't quite the barrier that it once was.

How much opportunity do any of these courses open up? How much do employers
give a hoot about a silly certificate from a pseudo-school that rides on the
backs of watered-down Ivy League classes? Employers still take a degree from
DeVry more seriously than the scattered layout of MOOC, and until this is
changed, there will never be tangible proof or progress in the sphere.

I could tell employers all day that I read, and worked through, SICP and
Cormen, but why should they care? They shouldn't because there was no one
around to tell me my code is wrong. I can show employers websites I built
using exotic languages such as Clojure, but why should they care when I can't
pass a basic whiteboard test? I could tell them that I can proficiently write
in x y z language, but they don't care and they shouldn't. To all of those
people who suggest that employers don't care about your background education
and only care about the projects you worked on, I challenge you to point out
how many of your coworkers don't have at least something that resembles a
Formal Education (TM). Coursera is not a Formal Education (TM). The proof will
come if, and only if, one day a student self-learned from Coursera with a
large portfolio with self-projects nails a job over a kid from MIT with no
portfolio. No one, at this point, can seriously say this is happening and a
convincing scale.

~~~
queensnake
You know that a coursera-taught team won a (non-academic) machine-learning
competition, right? Knock-on articles about it made the rounds here a few
weeks back.

~~~
dizzystar
This article popped up on Google. Is this what you're talking about?
[http://gigaom.com/data/why-becoming-a-data-scientist-
might-b...](http://gigaom.com/data/why-becoming-a-data-scientist-might-be-
easier-than-you-think/)

The winners were a mechanical engineering student, an actuary, and an
insurance risk analyst. This is all neat, but I was refering specifically to
students w/ no education using these courses as a replacement for college.

Yes, as an add-on, I give it a huge Plus 1, but as a replacement, not yet. I'm
not saying there is no hope, I'm saying it's not quite there yet.

------
Homunculiheaded
One thing I've found somewhat odd is how seriously people take the timeline on
coursera courses. To me one of the biggest weaknesses of these courses is the
hard time constraints.

For all of the courses I've taken (ML, PGM, NLP, SNA) I've followed roughly
the same pattern: follow the course for 50-70% of the material doing all
homeworks etc. Take what I've learned and go off do some fun projects. Once I
hit a road block return to the course and finish up (usually months after the
course is 'officially' done) typically forgoing the homework being I've
already created 'homework' for myself.

Compared to my classroom experiences, I've found that this method greatly
enhances the benefit of the materials I learn later in the course, as well as
allowing me to more strongly reinforce material learned earlier. This is also
something that physical classes simply cannot emulate. I do find it a little
funny that I've never officially completed a coursera course, despite having
covered much of the material very thoroughly. Hopefully as these courses
continue we'll start to see them adopt patterns that extend beyond replicating
the limitations of a physical classroom online.

~~~
v3rt
How are the different online-education websites in terms of being able to take
courses at your own pace? I'm interested in trying an online course out to
pick up some statistics and machine learning, but I probably wouldn't be able
to follow it week-by-week (and not having to wait for a given start date would
be great).

~~~
Mutinix
All Coursera courses are deadline based. Some of the courses remove their
material at the end of the course. Others, such as the database one, are later
opened up as self-study but do not offer a certificate of completion.

In the case of edX, MIT's 6.00x course is strictly deadline based. CS50x
allows you to take the course at your own pace as long as you finish
everything before the 13th of April, 2013.

But those aren't the ones you're looking for. Udacity meets all your
requirements. They have open enrollment, meaning you can join in at any time.
Furthermore, they have no deadlines. As long as you complete all the problem
sets and give the final exam, you get a certificate.

Here are some Udacity courses that might interest you:

Statistics 101 - <http://www.udacity.com/overview/Course/st101> \- Taught by
Sebastian Thrun

CS271 Introduction to Artificial Intelligence -
<http://www.udacity.com/overview/Course/cs271> \- Taught by Sebastian Thrun
and Peter Norvig

CS373 Artificial Intelligence for Robotics -
<http://www.udacity.com/overview/Course/cs373> \- Taught by Sebastian Thrun

Hope that helps.

Edit: There's CS188.1x by Berkeley on edX -
[https://www.edx.org/courses/BerkeleyX/CS188.1x/2012_Fall/abo...](https://www.edx.org/courses/BerkeleyX/CS188.1x/2012_Fall/about)

It's deadline based, but I don't know whether they will remove their material
at the end of the course or not.

------
dschiptsov
There are courses definitely worth trying:

    
    
      ML is the general introductory course.
      PGM is more about applied knowledge.
      NN is a specialized and very good one.
    

Scala is just a buzzword. Lisp is a language for AI _for many reasons_ \- it
has almost no clutter, so you can read it.

There is also Berkeley CS188.1 on edX, which covers search.

Of course, just courses are not enough. You need textbooks, AIMA, PAIP and PGM
are highly recommended.

But most importantly you need practice. One cannot learn how to swim, ride a
bicycle or wrestling just by reading books and watching movies.

Very few regions of your brain learn something just by watching and listening.
Those which are active when you actually do something must be trained by
doing. It is how you will form your own intuitions, timing, etc. Non-verbal
parts of the brain are doing the most of the job. Neural networks need to be
trained on real data to learn its behavior.)

This simple idea is a cornerstone of MIT approach in teaching CS. They do lots
of projects and labs, working in groups. This is real training. Recent version
of 6.01 is a good example.

So, start your own project or join some Open Source. Then you will get real
practice, training and feedback from other people. It is not meeting that
matters, it is practice.

~~~
michaelochurch
I agree with most of what you're saying, but not this:

 _Scala is just a buzzword._

Disagree. There's a strong case for static typing. I am not saying that it is
"right" or "wrong", but this static/dynamic trade-off is not simple and has no
all-purpose answer.

Also, you will never convince most engineering managers to let you write a
_production_ system in Common Lisp. They may be wrong in their prejudice, but
they're focused on risk-reduction and would prefer all production software to
be written in Java. Scala has a fighting chance of getting into the "for
production" language space. In 15 years, most of the good Java engineers are
going to have moved to Scala and prefer it.

Out of curiosity, have you tried Clojure? It's pretty neat. I actually like it
better than I like Common Lisp.

~~~
dschiptsov
_they're focused on risk-reduction and would prefer all production software to
be written in Java._ \- this is cancer, so to speak.)

I know only one way to reduce a risk of running a software - choice an
appropriate hardware, and run as _less_ software as possible.

You _must_ know your hardware and your software. That means it must be
compact, readable and easily modifiable, so that you can quickly adapt and fix
it, on the go.

So, I would choose a well-defined, _mostly-functional, small_ , simple
language, with decent compiler directly to native machine code and very thin
FFI, to use specialized OS services.

It could be a solution from <http://scheme.com> or Gambit-C, not anything that
begins with J.

So, in my opinion, a native compiler for, say, Arc to x86_64 (written in Lisp)
with UNIX integration (NO Windows support) would be a better solution.
Unfortunately, it doesn't exist yet.)

It seems like Go is taking the same approach - they have very thin layer of
abstraction on top of an OS (post of Plan9 core libs) they have native
compilers, and comprehensible runtime. So, this is real, available better
solution.

There is Erlang - almost the same underlying principles, but complicated with
a VM.

In order to reduce risks you must have deep understanding of what you are
running.

~~~
dysoco
I'm loving Go, it doesn't have a lot of libraries designed for Machine
Learning, but it's easy to write wrappers and we have one for Bayesian
operations: <https://github.com/jbrukh/bayesian>

I'm investing my time in learning this language: I'm sure it will be more
widely used in the following years.

