I think it is good to learn how models work on recommender systems!


For three weeks I have researched recommender systems by using many websites.  I am very surprised to see that a lot of documents, sites and videos are available to know how recommender systems work and what current topics are in order to improve them.  I especially focus on video lectures by Xavier Amatriain, working for Netflix as a Research/Engineering Director. He covered from basic methodologies of recommender system to the latest methods to achieve business objectives.  It is strongly recommended to see them if you are interested in recommender systems. When technical terms in the video lectures are difficult to understand,  I suggest you to look at  MOOCs by Dr.Andrew Ng at Stanford university in advance.  It enables you to understand the technicalities of  machine learning with ease because it provides broad knowledge of machine learning as I said before.

In my thought,  there are two major methods to calculate ratings for recommendations. One is matrix factorization and the other is neural network, even though a lot of other methods can be used in recommender engines.  The object of this project is to develop the model of recommender engine so that beginners for data analysis can develop the recommender engine by themselves.  Therefore neural network is out of my scope as it is too complex for beginners.  Matrix factorization must be good for learning to develop the models in recommender systems.  So I decided to focus on the method of matrix factorization in this project.


In my view, key points of modeling based on matrix factorization as follows

1. How are customers’ preferences represented in the models?

Someone like sweet things and someone do not.  Someone like love stories and someone do not.  Someone like rock ‘n’ roll and someone do not.  So  customers’ preferences look like vectors of the level of each preference. It is reasonable and easy to understand even for beginners.  Why don’t you make  a vector of your preferences for your favorite items?


2. How are items’ features represented in the models?

It may take time to prepare the features for each item.  The features of each item should be in line with customers’ preference as we discussed above.   So whether it is sweet or not?  Whether it is a love story or not?  Whether it is rock ‘n’ roll or not?  Items’ features also look like vectors as customers’ preferences do.  It is easy to understand, too.


3. How can we match between customers’ preferences and items’ features?

It is reasonable to make metrics by using products between customers’ preferences and items’ features.  If the customers’ preference has higher score and the items’ feature which is corresponding to the preference, also has a higher score,  products between the preference and the feature is also higher as each of them is higher. It means that this higher score of the product enables us to recommend this item to this customer because this item has features which the customer likes.  It makes sense! 


If you need more details of matrix factorization, this paper is recommended to read. It explains how the model work in recommender systems. Going forward, I would like to develop a prototype model of recommender engine with R language so that beginners understand how the models work on recommender systems.

For your information, Coursera will provide the course of “Mining Massive Datasetsby Jure Leskovec, Anand Rajaraman and Jeff Ullman at Stanford University. It will start at 29th Sep 2014 and cover recommender systems. Do not miss it!

How can we classify recommender systems now?


I have researched recommender systems for more than two weeks and I am very surprised to see there are a lot of recommender systems.  Therefore, I think I should have a proper way to classify these systems to explain the characteristic of each system.  Most of research papers and documents focus on the system called “collaborative filtering”.  But I think it is a little difficult to explain the difference between systems by using the word “collaborative filtering”. So I would like to focus data which are used in developing models.  Especially I am interested in content features, such as actors and actresses,  time of  production,  directors,  countries where it was produced, and so on in case items are movies. I hope beginners for recommender systems can understand them easily.


1. Recommender systems with content features

When we have content features in our data set,  this type of models is used. They are useful when there are less data about customers’ rating and interactions because recommendation to the customer can be produced without other customers’ data.  It means that we can avoid “cold start issues”. On the other hand,  we need data about content features for each item. It may take time and cost to prepare it, although it is worth doing so.   I think in most cases this type of recommender systems are used in businesses now.


2. Recommender systems without content features

When we have no content features in our data set,  this type of models should be considered. Without content features,  similarity between customers are used to produce recommendations.  Similarity between items are also used without contents features.  This type models may be referred as”collaborative filtering” in documents and research papers. It has advantages as there is no need to obtain content features.  On the other hand, we need customers ratings and interactions in advance to develop models.  It is not good for startups as they have less data about customers in general.


In practice,  it is good for beginners to classify recommender systems based on whether content features are used or not. Because there is no need to know the mechanisms of recommender systems.  There are a lot of methods to develop recommender engine. For example, regression, classification, clustering, collaborative filtering, etc.  So I think it is very difficult to classify recommender systems based on the way of “how to calculate recommendations”. When beginners are getting familiar with the methods above,  they can understand  how each method works in recommender systems.


When I research the documents and papers about recommender systems,  I found that Netflix prize,  a kind of programming competition where the winner was granted one million USD in 2009.  It is very interesting to go into deeper because these models discussed during the competition were superior to existing models to provide recommendations accurately and easy to learn even for beginners. I would like to discuss these methods in the next blog.  See you next time!

How can we produce recommendations based on customers information?


Most of you know what recommendations by retailers, e-commerce are.  Few people, however, know how they are produced behind the web-screens or e-mails. So I would like to explain the mechanism about production of recommendations in a series of my blog as the project is going on in the company. First, I would like to consider three points below one by one.  I focus on personalized recommendations, which can be customized to customers individually,  based on the information about them. Unpersonalized recommendations, such as recommendations based on just sales ranking are out of our interest and scope because this is expected to be provided for every customer equally.


1. Customers

Of course,  customers are the most important for our businesses.  The problem is that how customer information is obtained and how customer preference can be known based on customer information.  It is clear that the best way to know customer preference is just asking them.  But it is almost impossible to ask everything about their preference.  Fortunately websites and smart phone are widely used among customers so they make us easier to obtain customer information through “What they view longer”, “What they put into favorite items ” and “What they bought in the past”.  We can know customer preference based on this information.


2. Items

Items mean not only products, but news, information, services and anything which can be chosen by customers.  Each item can be expressed by some features, which are characteristics of the products.  When two items share the same features,  one can be recommended to customers who bought the other because both products has similarities each other.  It may be difficult to choose good features to do it.  So I would like to continue to research how to choose features effectively.


3. Relationship between customers and items

Once information of customers and items are obtained,  the relationship between customers and items should be considered.  I imagine it is very important to obtain the relationship accurately, so that recommendations can be accurate and effective. Statistical models are needed to calculate metrics in order to express the strength of the relationship between customers and items.


These three points above are critically important to construct a recommender engine because recommendations are a kind of matching between customers and items.  I would like to expand this argument to develop algorithms so that recommendations can be calculated correctly. I found that a dozen of programs of recommender engines, which are open source, are available to us. I would like to review some of them going forward.  I hope you can enjoy them, too!



Why is “Recommendation” critically important for small and medium enterprises ?


When I teach data analysis,  I always consider what the best application of statical models to the real businesses is.  I researched it several weeks and I found a recommender engine is one of the best applications to explain how statistical models or machine learning work in the real world.  Now that most people get the recommendations about products, services, news through emails and websites.  One of the famous examples is the recommendation by Amazon.com.  So it is easy to understand what recommendations are and how useful they are.

I provided recommendations to my customers manually when I used to be an account executive at the branch of the security company more than 20 years ago.  I had more than 200 customers there and sold the financial products to them. It was an interesting  job as financial markets have been moving every day, every second. But there were problems about the way of marketing at that time.


1.  I could not take care of every customer effectively

I could contact 20 or 30 customers by phone on a daily basis (there were no e-mails at that time). It was impossible, however, to contact more than 200 customers so I might miss or overlook the needs of customers because I could not understand who the customers were and what they wanted within limited time. It led to opportunity cost for me.


2 . I could not understand all products effectively

When I used to be an account executive,  financial innovation was going on in Japan.  It means that not only traditional products, such as stocks and bonds, but also derivatives and options were available to retail investors.  There was not enough time for me to understand every product in detail.  So I might fail to satisfy customers’ needs due to lack of knowledge of products which were available at that time.


If I could have a recommender at that time, these problems above could be solved as recommender engine could make the most of the information about both customers and products at once, in a timely manner. In order to provide good recommendations, it is clear that information about both customers and products are needed. It might be time-consuming and require human resources  if we manage this information manually. But recommender engine can process it quick enough to provide recommendations in a timely manner. When companies, such as SME have small sales force, recommender engines are critically important because it enables such companies to provide recommendations to customers effectively.  This is one of the best ways to communicate to customers with reasonable cost as well.


So I want to develop a recommender engine to provide good recommendations based on information from customers and products.  My company is starting an open project to develop a recommender engine with R.  This will be open source and get public so that everyone can learn how it works if he/she is interested in it.  I will report the progress of the project on this blog going forward. I hope you can enjoy it!