I am a software developer (mostly .NET and Python about 5 years experience). What can I do to help me get a job in the machine learning field or really anything that will get me started in that field? Is post-graduate degree a hard requirement?
Everytime I have talked to someone about learning more machine learning they always point me to the Elements of Statistical Learning by Hastie and Tibshirani. This book has the good fortune of being available online for free (a hard copy does have a certain appeal, but is not required) and it is a really great introduction to the subject. I have not read everything in it yet, but I have read much of it and it has really helped me understand things better.
Another resource that I have been working my way through is the Stanford Machine Learning class, which is also online and free. Andrew Ng does a great job of walking you through things. I find it particularly helpful, because my background in implementing algorithms is weak (I am a self taught programmer) and it shows you how to implement things in Octave (granted R has much of it implemented in packages already). I also found these notes on reddit statistics a few months ago, so I kind of skim through those and then watch the video and reflect on it with my own notes.
My background is in statistics and I got some exposure to machine learning concepts (a good buddy of mine is really into it), but I have always felt like I am lacking on the machine learning front, so I have been trying to learn it all a bit more on my own. Thankfully there are a ton of great resources out there.
As far as getting a job in the industry or graduate school requirements I am not in a great position to advise (turns out I have never hired anyone), but I have noticed that the business world seems to really like people that can do things and are a bit less concerned with pieces of paper that say you can do something.
If I were you, I would spend some of my free time getting confident in my machine learning knowledge and then implement things as you see opportunities. Granted your position may not give you that opportunity, but if you can get something implemented that adds value to your company (while maintaining your other obligations), I can't imagine anyone being upset with you. The nice thing here is if you do find yourself doing a bit of machine learning at this job, when you go out looking for a new job you can talk about the experience you already have, which would help folks look past a lack of a specific degree.
There are a lot of resources and its incredibly interesting, I wish you luck!
Another idea: You could start a blog about your Machine Learning learning process and maybe document a few projects you work on in your free time. I have done this with a programming project and it allows you to talk about a project you are working on in your free time (looks good to the employer) and you can also direct them to the blog (obviously keep it professional) about your work. So far I have sent quite a few people to my dorky little programming blog (I have been a bit lazy on posting lately, but I kept it up to date when I was applying to jobs) and everyone I have talked to has been impressed with it.
In addition to all the other great advices I suggest to get your hands dirty by participating in online competitions, see Sites for predictive modeling competitions
Regarding books etc. you should take a look at:
- Machine learning self-learning book?
- Can you recommend a book to read before Elements of Statistical Learning?
Regarding degrees I agree with @asjohnson that a certificate does matter less, at least I can confirm this for the area I am working in (Data Mining / ML on the web). It might be different for more "academic" areas like bioinformatics though. Being able to demonstrate that one is a) enthusiastic and b) has done actual work ("smart and getting things done") by showing off a small portfolio (e.g. online competitions ... ) should be more effective IMHO.
Read Tom Mitchell's Machine Learning. That is a good book that should get you started in the field of Machine Learning.
One thing to be aware of: please note that the same algorithm may sometimes perform better or worse according to the scenario and parameters supplied and random chance. Do not get drawn into optimising parameters for your training data - this is a poor application of machine learning.
There are plenty of techniques suitable for particular applications (but not all applications) and there is lots of theory that you can read to understand machine learning better. In order to be good at machine learning you need to make sure to know what you are doing as otherwise you cannot be sure whether your results will generalise well.
There are a large number of good books about machine learning, including several in the O'Reilly series that make use of Python. Working through one, or several of these might might be a good starting point.
I'd also suggest getting some knowledge of statistics - through a course or two, or self study, doesn't really matter. The reason is that there are some machine learning books that focus on the algorithms and the mechanics, but ignore the fundamental question of how likely it is that what your algorithm tells you is just due to chance. And, this is essential to know.
Good luck & have fun, it is a great field.
Very nice question. A thing to realize upfront is that machine learning is both an art and science and involves meticulously cleaning out data, visualizing it and eventually build models that suite the business in question, while simultaneously keeping it scalable & tractable. Skills wise, more important than anything else is to focus on probability and to use simple methods first before jumping onto complex ones. I prefer the R & Perl combination, since you known python that should be good enough. When working on a real job, you will invariably have to pull your own data so knowledge of SQL (or whatever other no-sql your company supports) is a must.
Nothing beats experience in the ML area, so engaging in sites like stackexchange, kaggle is also a great way to get exposed to this field. Good luck.
I know its a bit of an old question but given the fact that I saw a lot of programmers still don’t know how to get started.
Thus, I created "A complete daily plan for studying to become a machine learning engineer" repository.
This is my multi-month study plan for going from mobile developer (self-taught, no CS degree) to machine learning engineer.
My main goal was to find an approach to studying Machine Learning that is mainly hands-on and abstracts most of the Math for the beginner. This approach is unconventional because it’s the top-down and results-first approach designed for software engineers.
Please, feel free to make any contributions you feel will make it better.