Classifying documents using Apache Mahout

I was wondering how to do some text classification with Java and Apache MahoutIsabel Drost-Fromm gave a talk in the LuceneSolrRevolution Conference (Dublin – 2013) where she was speaking about the topic, how Apache Mahout and Lucene could help you.

It is a good an introduction to the topic. I have enjoyed too much what it was presented in the talk.

Lucene, Mahout and Hadoop (only a little bit) sound really great for a talk about how to do texts classifications.

The general idea behind the complete process to classify documents will follow the below steps:

HTML >> Apache Tika

Fulltext >> Lucene Analyzer

Tokenstream >> FeatureVectorEnconder

Vector >> Online Learner

Of course Isabel was giving the advice of reuse the libraries that you have in your hands, take an internal look to the algorithms used there and improve them, if you need it. As a first approach it is really good for me to see how things work.

Mahout is a really good library for machine learning, it was using map reduce to perfectly integrate with Hadoop (v1.0), although from April of 2014 they have decided to move forward:

The Mahout community decided to move its codebase onto modern data processing systems that offer a richer programming model and more efficient execution than Hadoop MapReduce. (You can read that in there web site).

At the end of the video there is a recommendation to everyone to participate in the project: bug fixing, documentation, reporting bugs… There are a lot of things to do in open source projects always. If you are using the libraries there, I recommend you to subscribe to the mailing lists if you are interested in the project.

I really recommend you to see the video if you are interested in the field, I think she was giving a good talk about a good topic. You can take a look to the slides too.

Two interesting books to start with Machine Learning

There are a lot of books in the field of Machine Learning, just a fast search in Amazon gives you more than 25.ooo books. I wanted to filter all those books an choose the most useful. I was looking in google, quora and reading some post that I found around internet. There a lot of people giving a list of 10 – 20 books about machine learning, statistical learning, reinforcement learning… I just wanted to find the two interesting books to go into the field.

With these books, it is possible to learn general aspects about the topic and later go more in deep in the part that sounds more interesting.

 


 

Machine Learning

The “book” that everyone recommend as a good point to start, written by Tom M. Mitchell (professor in the Carnegie Mellon University).

This is an introduction book for the field. You don’t need to have previous knowledge in Machine Learning.

Some topics that you will find in the book: decision tree learning, artificial neural networks, bayesian learning, computational learning, genetic algorithms, reinforcement learning and more.

 


 

Pattern Recognition and Machine Learning (Information Science and Statistics)

The author is Christopher M. Bishop, a Distinguished Scientist at Microsoft Research Cambridge, where he leads the Machine Learning and Perception group

This book will give you a really good approach to the commonly used algorithms in Machine Learning.

 


 

Both books are theoretical and will give you a good introduction. Of course there so many books in the area, some of then more practical, some about statistical learning… But I think it is good to have a simple point to start.

I have started with Tom M. Mitchell’s book. I will give you my impression when I have finished it.