## Matrix Factorization for Missing Value Imputation

I stumbled across an interested reddit post about using matrix factorization (MF) for imputing missing values.

The original poster was trying to solve a complex time series that had missing values. The solution was to use matrix factorization to impute those missing values.

Since I never heard of that application before, I got curious and searched the web for information. I came across this post using matrix factorization and Python to impute missing values.

In a nutshell:

Recommendations can be generated by a wide range of algorithms. While user-based or item-based collaborative filtering methods are simple and intuitive, matrix factorization techniques are usually more effective because they allow us to discover the latent features underlying the interactions between users and items. Of course, matrix factorization is simply a mathematical tool for playing around with matrices, and is therefore applicable in many scenarios where one would like to find out something hidden under the data.

The author uses a movie rating example, where you have users and different ratings for movies. Of course, a table like this will have many missing ratings. When you look at the table, it looks just like a matrix that’s waiting to be solved!

In a recommendation system such as Netflix or MovieLens, there is a group of users and a set of items (movies for the above two systems). Given that each users have rated some items in the system, we would like to predict how the users would rate the items that they have not yet rated, such that we can make recommendations to the users. In this case, all the information we have about the existing ratings can be represented in a matrix. Assume now we have 5 users and 10 items, and ratings are integers ranging from 1 to 5, the matrix may look something like this (a hyphen means that the user has not yet rated the movie):

After applying MF, you get these imputed results:

Of course I skipped over the discussion of Regularization and the Python Code, but you can read about that here.

Going back to the original Reddit post, I was intriqued how this imputation method is available in H2O.ai’s open source offering. It’s called ‘Generalized Low Ranked Models‘ and not only helps with dimensionality reduction BUT it also imputes missing values. I must check out more because I know there’s a better way than just replacing the average value.

## RapidMiner’s New Time Series Extension

I’m really liking the overhaul of the old Value Series extension. RapidMiner has been building a new Time Series extension that started with the great ARIMA operator.

Now they’re adding new Windowing and Sliding Window operators. My notes below the video.

Notes:

• New time series datasets added to updated Time Series extension (gas station prices)
• Plus three more sample data templates
• New Windowing operator, easier to use parameters.
• New Indices parameter / New Horizon Width and Horizon Offset
• New Process Windows operator. It’s like a Loop for Time Series data – NICE!
• New Forecast Validation. Appears to be a redo the old Sliding Window Validation operator
• In the Testing side of the Forecast Validation operator, you don’t need to use Apply Model
• Difference between Forecast Validation (FV) and Cross Validation (CV) operator is that the model delivered by FV is always the LAST model that was trained, not like CV that trains over the entire data in the final iteration

## Learn RapidMiner Livestream 3

Title: Learn RapidMiner Livestream Volume 3
Date: 2018-05-18
Slug: learn-rapidminer-livestream-vol-3
Tags: Wordnet, Word2Vec, R Statistics, Time Series, Tutorials

My latest livestream. In this episode I continue with the Word2Vec process and build a synonym stemming dictionary. Then I talk about how to do time series in RapidMiner. I explain the Windowing operator, the Sliding Window Validation operator and show how to insert a bit of R code to deseason a time series.

I’m going to change the time for the next Live Stream. Stay tuned for next livestream on 5/25/18 at 12PM EDT.