Visualizing data with Chernoff Faces

Posted on 27th Sep, 2014

Recently I came across an interesting way to visualize vector (or multiple scalar) variables. Common ways to visualize data is via bar/line charts, scatter plots, streamlines. This method uses the fact that the human brain is evolved to recognize facial features quickly and effordlessly.

I'm talking about Chernoff Faces, introdued in "The Use of Faces to Represent Points in k-Dimentional Space Graphically" by Herman Chernoff.

En example of Chernoff Faces from the paper.

Simply put, this technique uses the fact that there are a large number of variables in making a cartoon face. For example: The size of the eyes, pupils, nose, chin. Angle and length of the mouth, of the eyebrows. With a symmetrical cartoon face this can encode up to 14 variables, according to the paper. While is is not possible to see the exact values of the variables, out brain is very good at detecting small differences between faces, of the same face through time. This makes it a cool way to not only take a glance at a data set, but also to monitor a real-time system.

As the autor of the paper notes: This approach is an amusing reversal of a common [problem] in Artificial Intelligence. Instead of using machines to discriminate between human faces by reducing them to numbers, we discriminate between numbers by using the machine to [...] draw faces and leave the intelligence to humans.