# What tools do Machine Learning experts use in the real world?

I'm currently taking a class covering some topics in machine learning. The class is taught in MATLAB using Liblinear so far. I was curious though what kind of tools people used in the real world to tackle these problems. As I'm learning now, MATLAB is great to get your feet wet, but it is seriously lacking in terms of performance, scalability, and maintainability. Is it mostly commercial software? Do people rewrite their SVMs from scratch every time (doubt it)?

Also, what language to people use? MATLAB seems to be popular in research circles, but Python seems to be growing in support as well. What do people at say Google or Facebook use? Is it all heavily-optimized closed source code?

• To the best of my knowledge Business Analytics in Pharmaceutical/Insurance/Financial sector use SAS software. If you want an independent resource on type of tool, you can refer to Rexler analytics survey. They conduct surveys on software tools used by variety of industry/users which was published the results in kdnuggets see below link. kdnuggets.com/2013/10/… – forecaster Jan 30 '14 at 4:05
• Apache Mahout (based on Hadoop and Map/Reduce) seems to be popular. mahout.apache.org – david25272 Feb 3 '14 at 5:15

MATLAB was primarily developed for optimization and mathematical simulations in engineering problems. But yes it has performance issues when it comes to machine learning, optimization, etc., in terms of customizing ability.

Over time, most statistical analysis / machine learning has shifted to R and Python, because of an active community presence for development of almost any complex algorithm. You don't have to write code for SVM or neural networks from scratch, unless you really want to change to algorithm itself, which is also possible, and which is what Google and Facebook do internally.

So if you want to try machine learning for studying purposes, WEKA, R and Python will do the job. but if your really want to develop some data analytics products based on these algorithms, Python and R are the way to go. R has a steep learning curve, though.

WEKA became popular because earlier in industry, because most of the analytics practitioners came from an IT (Information technology) background and hence were comfortable with JAVA, but over the time mathematicians and computer scientists have moved to R and Python.

• R and Python I agree with, but I doubt that Weka is popular for truly large-scale learning. – Marc Claesen Jan 30 '14 at 7:49
• How R is supposed to be OK for big data? I thought data should fit in memory for R to digest them... I suppose it is a matter of definition of big. – iliasfl Jan 30 '14 at 10:06
• @iliasfl.Exactly it all depends on your definition of Big Data. If by big data you mean Voluminous data,R now has packages for distributed computing like ff for using R on virtual machines, RHadoop and Hadoop streaming for running R on a hadoop cluster. If by big data you mean variety not volume, R can handle almost any kind of structured and unstructured data. The only problem in R is , you can't make an executable file as you can do in python, so whenever you are deploying a tool for external client, you have to show source code and install R on the client machine – NG_21 Jan 30 '14 at 10:46
• @gung, answer has been edited. Thanks for notifying – NG_21 Jan 30 '14 at 10:57
• @iliasfl, according to the survey that is referenced in my comment in the OP overwhelming majority of them use R and more importantly overwhelming majority work with small data in real world and the volume of data/share of big data usage among data mining community has not changed significantly since 2007 and only accounts for ~8% – forecaster Jan 30 '14 at 17:20

If scale is not an issue then any solution you probably already know is fine. It is more a matter of personal and company choice (cost/legacy issues). So it doesn't really matter if it's going be R or MATLAB, Python or Java, Weka or Rapidminer, open source tools or propriety code. However, big players like those you mention have to deal with scale.

If scale is the issue then obviously you can't deploy any fancy algorithm with complexity higher than $O(n)$, like SVMs in the dual or kNN or so many others. Even more, you have to go for algorithms and implementations that are made to work in distributed environments: data are scattered across more than one machine, limited communication is allowed between machines. Obvious choices are algorithms based on Stochastic Gradient Descent, like Vowpal Wabbit (created at Yahoo! labs). You also have libraries that run on top of Hadoop (free version of Map/Reduce framework developed by Google), like Mahout.

Problems and challenges in the big data environment are unlimited. For example, a common assumption is that the model $w$ you try to learn will live in a single machine, which is fine until you start having a few hundred servers reading and updating that same model in a production environment. You can look up papers and video lectures from NIPS and ICML from Yahoo!, Google, Facebook and others where they discuss similar issues they deal with and solutions they deploy (search for scalability).

MATLAB is a great tool. However for Machine Learning simulation there is an increasing interest in R. R is emerging as a great platform for Machine Learning, Data Mining, Statistical Modelling (etc.) tasks. R has got a rich range of packages for statistical modelling.

With the emergence of Big Data R has got a positive edge. If you need to perform your computation on large and distributed sets of data then R is a great tool. R has got integration APIs for Hadoop and also for Spark.

Talking about production system and real life intelligent software products could be created using R. In such products you could use a mix of technologies. Like if you need to create an Enterprise Analytics application then you could program the core logic of the application in JAVA and use R for statistical and modelling aspects. Following articles give a nice explanation as how to integrate R with Java:

R Tutorial: How to integrate R with Java using Rserve

R Tutorial: How to integrate R with Java using rJava

So other environments are also great but R is emerging at par with them.

I hope this will be of some help.