Blog on Machine Learning, Statistics & Software Development

About Vasilis Vryniotis

Hi, my name is Vasilis Vryniotis, I'm a Data Scientist, a Software Engineer and author of Datumbox Machine Learning Framework and a proud geek. Check out my detailed CV or my LinkedIn profile for more information.

I am particularly interested in Machine Learning; both in its mathematical foundations and its applications. I specialize in building complex Machine Learning Frameworks & Pipelines, developing custom Statistical Models & Algorithms and performing Data Modeling. Moreover I have experience in working in the areas of Computer Vision, Natural Language Processing, Recommender Systems, Deep Learning, Learn-to-Rank and Real-Time Bidding.

In my spare time I develop the Datumbox Machine Learning Framework, I contribute to other open-source projects and from time to time I publish in this Blog articles about Machine Learning, Statistics and Computer Science. Feel free to post your comments and connect with me via LinkedIn or follow me on Twitter.

UPDATE: Unfortunately my Pull-Request to Keras that changed the behaviour of the Batch Normalization layer was not accepted. You can read the details here. For those of you who are brave enough to mess with custom implementations, you can find the code in my branch. I might maintain it and merge it with the latest […]

Deep Learning (the favourite buzzword of late 2010s along with blockchain/bitcoin and Data Science/Machine Learning) has enabled us to do some really cool stuff the last few years. Other than the advances in algorithms (which admittedly are based on ideas already known since 1990s aka “Data Mining era”), the main reasons of its success can […]

On October 19 2017, Ubuntu 17.10 will be released and as many of you know it packs lots of significant changes. I spend a week testing the Beta 2 and in this “last minute” review, I document some of the less obvious features/gotchas of Ubuntu 17.10. I also share with you my experience and provide […]

The Datumbox v0.8.1 has been released! Download it now from Github or Maven Central Repository. What is new? The main focus of version 0.8.1 is to resolve various bugs, update the depedencies and improve the code architecture of the framework. Here are the details: Dependencies: Updated the Maven Compiler, Nexus Staging, Surefire, SLF4J and Logback […]

The ALS algorithm introduced by Hu et al., is a very popular technique used in Recommender System problems, especially when we have implicit datasets (for example clicks, likes etc). It can handle large volumes of data reasonably well and we can find many good implementations in various Machine Learning frameworks. Spark includes the algorithm in […]

The dstat is an awesome little tool which allows you to get resource statistics for your Linux box. It has a modular architecture which allows you to develop additional plugins and it’s easy to use. Recently I was profiling a Deep Learning pipeline developed with Keras and Tensorflow and I needed detailed statistics about the […]

Datumbox Framework v0.8.0 is out and packs several powerful features! This version brings new Preprocessing, Feature Selection and Model Selection algorithms, new powerful Storage Engines that give better control on how the Models and the Dataframes are saved/loaded, several pre-trained Machine Learning models and lots of memory & speed improvements. Download it now from Github […]

I am really excited to announce that, after several months of development, the new version of Datumbox is out! The 0.7.0 version brings multi-threading support, fast disk-based training for datasets that don’t fit in memory, several algorithmic enhancements and better architecture. Download it now from Github or Maven Central Repository. What is new? The focus […]

The new version of Datumbox Machine Learning Framework has been released! Download it now from Github or Maven Central Repository. What is new? The main focus of version 0.6.1 is to resolve various bugs, reduce memory consumption and improve speed. Let’s see in detail the changes of this version: Bug Fixes: A minor issue related […]

The new version of Datumbox Machine Learning Framework has been released! Download it now from Github or Maven Central Repository. What is new? The main focus of version 0.6.0 is to extend the Framework to handle Large Data, improve the code architecture and the public APIs, simplify data parsing, enhance the documentation and move to […]

I am happy to announce that the Datumbox Machine Learning Framework is now open sourced under GPL 3.0 and you can download its code from Github! What is this Framework? The Datumbox Machine Learning Framework is an open-source framework written in Java which enables the rapid development of Machine Learning models and Statistical applications. It […]

In the previous articles we discussed in detail the Dirichlet Process Mixture Models and how they can be used in cluster analysis. In this article we will present a Java implementation of two different DPMM models: the Dirichlet Multivariate Normal Mixture Model which can be used to cluster Gaussian data and the Dirichlet-Multinomial Mixture Model […]

This article is the fifth part of the tutorial on Clustering with DPMM. In the previous posts we covered in detail the theoretical background of the method and we described its mathematical representationsmu and ways to construct it. In this post we will try to link the theory with the practice by introducing two models […]

This blog post is the fourth part of the series on Clustering with Dirichlet Process Mixture Models. In previous articles we discussed the Finite Dirichlet Mixture Models and we took the limit of their model for infinite k clusters which led us to the introduction of Dirichlet Processes. As we saw, our target is to […]

This article is the third part of the series on Clustering with Dirichlet Process Mixture Models. The previous time we defined the Finite Mixture Model based on Dirichlet Distribution and we posed questions on how we can make this particular model infinite. We briefly discussed the idea of taking the limit of the model when […]

This blog post is the second part of an article series on Dirichlet Process mixture models. In the previous article we had an overview of several Cluster Analysis techniques and we discussed some of the problems/limitations that rise by using them. Moreover we briefly presented the Dirichlet Process Mixture Models, we talked about why they […]

In the ISO research project for my MSc in Machine Learning at Imperial College London, I focused on the problem of Cluster Analysis by using Dirichlet Process Mixture Models. The DPMMs is a “fully-Bayesian” unsupervised learning technique which unlike other Cluster Analysis methods does not require us to predefine the total number of clusters within […]

By now most of you have heard/played the 2048 game by Gabriele Cirulli. It’s a simple but highly addictive board game which requires you to combine the numbers of the cells in order to reach the number 2048. As expected the difficulty of the game increases as more cells are filled with high values. Personally […]

In the previous article we have discussed about the Data Envelopment Analysis technique and we have seen how it can be used as an effective non-parametric ranking algorithm. In this blog post we will develop an implementation of Data Envelopment Analysis in JAVA and we will use it to evaluate the Social Media Popularity of […]

Data Envelopment Analysis, also known as DEA, is a non-parametric method for performing frontier analysis. It uses linear programming to estimate the efficiency of multiple decision-making units and it is commonly used in production, management and economics. The technique was first proposed by Charnes, Cooper and Rhodes in 1978 and since then it became a […]

In this article we will discuss how you can build easily a simple Facebook Sentiment Analysis tool capable of classifying public posts (both from users and from pages) as positive, negative and neutral. We are going to use Facebook’s Graph API Search and the Datumbox API 1.0v. Similar to the Twitter Sentiment Analysis tool that […]

In previous articles we have discussed the theoretical background of Naive Bayes Text Classifier and the importance of using Feature Selection techniques in Text Classification. In this article, we are going to put everything together and build a simple implementation of the Naive Bayes text classification algorithm in JAVA. The code of the classifier is […]

In text classification, the feature selection is the process of selecting a specific subset of the terms of the training set and using only them in the classification algorithm. The feature selection process takes place before the training of the classifier. Update: The Datumbox Machine Learning Framework is now open-source and free to download. Check […]

It came to our attention that more and more users try to create multiple accounts on Datumbox service in order to generate additional API calls per day, despite the fact that it is strictly forbidden by our Terms of Use. Even though that creating multiple accounts will not give additional calls to the service, this […]

Since the introduction of Datumbox service, several software engineers and researchers used our API in order to develop innovative new applications. In the past we have featured, many developers who chose to open-source their projects and contribute their code to the community. In this article I am happy to feature the newest most interesting projects […]

In the previous two machine learning tutorials, we examined the Naive Bayes and the Max Entropy classifiers. In this tutorial we will discuss the Multinomial Logistic Regression also known as Softmax Regression. Implementing Multinomial Logistic Regression in a conventional programming language such as C++, PHP or JAVA can be fairly straightforward despite the fact that […]

In this tutorial we will discuss about Maximum Entropy text classifier, also known as MaxEnt classifier. The Max Entropy classifier is a discriminative classifier commonly used in Natural Language Processing, Speech and Information Retrieval problems. Implementing Max Entropy in a standard programming language such as JAVA, C++ or PHP is non-trivial primarily due to the […]

In most Supervised Machine Learning problems we need to define a model and estimate its parameters based on a training dataset. A popular and easy-to-use technique to calculate those parameters is to minimize model’s error with Gradient Descent. The Gradient Descent estimates the weights of the model in many iterations by minimizing a cost function […]

Understanding how the human brain works is a topic of active research and several scientists from various fields publish numerous of papers every year. Why is it important? Because knowing how our brain works will enable us to understand how we operate/think and perhaps enable us build truly intelligent machines in the future. The first […]

In this tutorial we will discuss about Naive Bayes text classifier. Naive Bayes is one of the simplest classifiers that one can use because of the simple mathematics that are involved and due to the fact that it is easy to code with every standard programming language including PHP, C#, JAVA etc. Update: The Datumbox […]