Month: December 2013

Python Imaging Library for Python 3 (Pillow)

Just to save anyone some time who’s searching for a Python 3+ compatible Python Imaging Library (PIL), there’s Pillow. Enjoy.


Glicko-2 for Tennis: Part 1 – the Math

The Glicko-2 rating system is the second generation of rating systems developed by Mark Glickman to estimate a player’s skill in chess. Glicko itself is, in my opinion, a more sophisticated version of Elo. I truly love the rating system both for its simplicity and the information it provides. Unlike Elo, Glicko provides both the rating deviation and the volatility a player has. That being said, let’s get right into the math and then explain how to implement it for tennis.


JavaFX Scene Builder “Failed to create JVM” fix

So had an annoying thing happen while trying to get Oracle’s Scene Builder to work on Windows 8. It wouldn’t. Basically the program did not have enough memory to run… well it didn’t when ran from the .exe that it is intended to be ran from. Running it from the .jar work perfectly fine. By the way, the computer I ran it on has 8.0GB or RAM.

After a couple of posts telling me to completely remove and reinstall JRE and JDK (both of which I’ve done way too many times in the past couple of weeks to fix problems that I’ve had with Java since installing it on a brand new computer) I found one solution that finally worked. Hopefully this will help, but do note that involves some registry mangling:

  1. Search for regedit.exe and run it.
  2. Go to HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\oracle\javafx\scenebuilder\/J/V/M/User/Options
  3. Edit the value from 999m to 512m
  4. Problem solved.

Hope this helps anyone else with an equally frustrating problem. Source.

Elo Rating for Tennis

The Elo rating system originated in the mid-1900s and has since been predominantly used in chess rankings. On occasion Elo has been used for other sports, or for video games (e.g. League of Legends used the system until just recently). The system itself is very basic; it’s entirely based on wins and losses against other players. Simply put, your new skill will be measured based on the skill of your opponent, your expected performance given your opponent’s skill and your skill, and your actual skill (win, loss, draw, or anywhere in between) on the actual game.


Predictive Modeling in Tennis

Before we begin it’s important to remember that I’m only going to talk about a few different ways to approach this problem; there are alternative routes you can take to do predictive modeling. Be warned, long post ahead! That being said let’s break this down into two parts. First, determining an individual player’s skill at point in time. Second, given a player one’s skill and a player two’s skill at point in time, determining the probability that a player will win the match. Basically, we’re trying to determine the skill of a player, and, given different players’ skills, calculate their probability of winning a match. (more…)

Hello and Welcome to Delta Data!

My name is Nikola Peric, thank you for joining me. I am fascinated by big data, statistics, and machine learning. Over the course of 2013 I created a fairly accurate predictive modeling system for tennis (well several to be honest, a neural net, an Elo system, and a Glicko2 system). That being said, I am still very much learning all the time, trying to improve my intuition in data analysis.

The purpose of Delta Data is to provide a record of my learning experience that may be useful to other individuals. There will be some heavy math and statistics here and there, but, ideally, even if there are equations splurged everywhere I would like to explain the summary in easy to comprehend form, for those who may be interested. Sections with advanced math or coding will be labeled as such so you can feel free to skip them if you so wish. (more…)