Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Given the increasing amount of data generated through different web services ( social network, etc), there are must be more and more programmers who are familiar with machine learning and/or statistics needed to write programs to deal with those data. I wonder if any one working in related jobs could briefly describe what are the possible daily activities. Is it more like a traditional software engineering or is it more like working as a statistician?

I am personally interested in machine learning and programming. If I want to work in jobs like this, should I spend more time learning statistics or more time in the traditional software engineering side?

share|improve this question

1 Answer 1

I think there is a big difference between working as a programmer and working in Machine Learning. It is easy for a programmer to approach machine learning as a programming problem, but it is quite different.

Programmers tend to develop code to do very specific things. An example is creating a web site with certain functionality. If the programmer is lucky, they will be given very clear requirements and produce a system that can be tested and will fulfill all the requirements. The requirements and the accuracy of the solution are often black and white. Either it works or it doesn't.

Machine Learning problems are quite different. There are few requirements. There is a goal. It might be to increase sales using a recommendation system (like Amazon). It turns out that this there is no single clearly defined solution or way of knowing that a very good solution has been found. There are only approaches to creating recommendation systems. The measurement of success might be the increase in sales, but it is difficult to know if you have found a near-optimal solution.

So, from a high level, both the problem and solution are very different for these two roles. More concretely, the tools are very different as well. A programmer can use low level tools, like C++ or even Assembly Language. I don't think people working on Machine Learning problems use low level languages. They use high level tools, like Matlab or R. They use libraries that have been developed to facilitate many different approaches to solving a Machine Language problem.

Statistics is the other side of the Machine Learning coin. Although very useful, I don't think it is really necessary to learn a lot of statistics to work in the field of Machine Learning.

So, to (finally) answer your question, it would be more useful to learn some programming and work on actual Machine Learning problems. I found that http://www.kaggle.com/ is an good source of problems to work on.

Here is a thread on Statistics Stack Exchange about accessible books for Machine Learning: http://stats.stackexchange.com/questions/18973/can-you-recommend-a-book-to-read-before-elements-of-statistical-learning

By the way, to get more information about Machine Learning problems check out Machine Learning Stack Exchange at http://machinelearning.stackexchange.com/ .

Also, if you want to learn more about Machine Learning I highly recommend the Stanford online class which is starting soon: http://jan2012.ml-class.org/ .

share|improve this answer
    
I disagree with the first 3 paragraphs. For example: When you create a computer game, it should be fun and sell well. When you write an ERP system, it should reduce work and make the company more profitable. When you write an image compression algorithm, it should compress "typical images" (whatever that is) as small as possible, with as little "visible differences" as possible. These goals are just as fuzzy and ill-defined as goals in ML. –  nikie Feb 18 '12 at 13:13
    
Whether a computer game is fun and sells well has little to do with the way it is programmed. Those are the goals of the game designer (who is not a programmer) and the Marketing and Sales department. Similarly, I don't think a programmer would design an ERP system. The programmer doesn't really know or understand how an ERP system could reduce work or make the company more profitable. In this case, perhaps the head of each department could get together to give the programmer requirements. –  B Seven Feb 18 '12 at 16:11
    
For your third example, I think you are combining two issues: 1) implementing the image compression algorithm in a specific language, and 2) "compress typical images with as little visible differences as possible". The first issue is what the programmer does. The second is like a machine learning problem. So, I think the distinction is that there is some domain knowledge that is needed to solve the second problem. What is a typical image? What is little visible differences? Domain knowledge makes these questions less fuzzy. And, there are many different approaches to solving it. –  B Seven Feb 18 '12 at 16:15
    
You seem to think of a programmer as a code monkey, exclusively. But even then, I doubt that a code monkey's work in ML is much different than it is in ERP or games programming: e.g. the optimization goals of an ML algorithm or the kind of feature to be extracted from a document will be specified very clearly and formally (probably much less ambiguous than the requirements of an ERP page). –  nikie Feb 18 '12 at 21:04
    
Thanks for the answer. So you mean that people who deal with these data (those who trying to figure how to make the recommendation system work better, for example) and people who actually turn the idea into working code and integrate the code to the bigger system are different groups of people? –  qkhhly Feb 19 '12 at 16:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.