5
$\begingroup$

The NBA has a system called Sports VU that tracks x-y coordinates of every player and the ball every 1/10th of a second for every game of the 2013-2014 and 2014-2015 seasons. With some fancy web scraping I now have access to this data and -- because I'm such an avid fan of the NBA -- I would like to identify each team's most common plays. Assume I don't have any knowledge about each team's plays beforehand (so I don't think supervised learning would work here). What would be the best unsupervised learning techniques to use?

If I could trace each player's path over the course of the play, I imagine the problem would be similar to what you would see with image recognition/classification. Anyways, should I use PCA, some kind of neural network? I understand this is a very broad question -- I don't need to know how to code it (I'm a proficient coder and machine learning practitioner); I'm just looking for high level unsupervised machine learning details.

$\endgroup$
1
$\begingroup$

This is a really interesting problem! Like most really interesting problems, you're unlikely to find an out-of-box solution for this, but I think the field of graph/subgraph similarity has some promise here. I'll go into more detail, but, at a high level, I think you can view players' paths during a play as a collection of five traversals through x,y space, with a vertex being any x,y point you have available (presumably there's some level of time granularity here), and an edge describing a player's movement from one point in x,y space to the next over time. It should be possible to cluster your data using a similarity metric (e.g., see Koutra et al., 2011 for a nice overview). Then, using your own domain expertise, you should be able to identify whether the clusters you've derived have some real-world meaning in basketball.

| improve this answer | |
$\endgroup$
0
$\begingroup$

I agree that image classification is the right place to look for inspiration. But instead of viewing the 'image' as a grid of court positions, with 'color' being players, I would first see if you get anything useful out of seeing the 'image' as a grid of players, with 'color' being the x and y position (and probably also velocity) of the players.

I think that you need to do some sort of 'clumping' of data: instead of trying to look at a full game, you want to look at segments that are closer to the length of a play. You can do this with a moving window (the equivalent of an image patch) or by joining together sufficiently similar player-seconds (the equivalent of superpixels) to create a graph that describes the game. My guess is that the moving window approach is the best place to start, as it may inform what sort of features are relevant for joining together pixels to make superpixels.

It's likely the case that something like plays will fall out of doing k-means on moving windows of the game, but you'd probably benefit a lot from ensuring that the sort of structure that seems important (say, the distance to the closest enemy player) is already available as a feature to include in hypotheses.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.