# Classification problem where one attribute is a vector

Hello I am a layman trying to analyze game data from League of Legends, specifically looking at predicting the win rate for a given champion given an item build.

### Outline

A player can own up to 6 items at the end of a game. They could have purchased these items in different orders or adjusted their inventory position during the course of the game.

In this fashion the dataset may contain the following rows with:

   champion id   |                 items ids               | win(1)/loss(0)
----------------------------------------------------------------------------
45        |   [3089, 3135, 3151, 3157, 3165, 3285]  |       1
45        |   [3151, 3285, 3135, 3089, 3157, 3165]  |       1
45        |   [3165, 3285, 3089, 3135, 3157, 3151]  |       0


While the items are in a different order the build is the same, my initial thought would be to simply multiply the item ids as this would give me an integer value representing that combination of 6 items.

While there are hundreds of items, in reality a champion draws off a small subset (~20) of those to form the core (3 items) of their build. A game may also finish before players have had time to purchase 6 items:

                items ids
------------------------------------------
[3089, XXXX, 3151, 3285, 3165, 0000]
[XXXX, 3285, XXXX, 3165, 3151, 0000]
[3165, 3285, 3089, XXXX, 0000, 0000]

XXXX item from outside core subset
0000 empty inventory slot


As item 3089 compliments champion 45 core builds that have item 3089 have a higher win rate than core builds which are missing item 3089.

The size of the data set available for each champion varies between 10000 and 100000. The mean is probably around 35000.

### Questions

1. Is this a suitable problem for supervised classification?
2. How should I approach finding groups of core items and their win rates?

1) If you want to build a model with:

Input: Items bought
Output: Win/Loss


then you will probably want to learn a non-linear combination of the inputs to represent a build. For example item_X may have very different purpose when paired with item_Y than with item_Z.

For the input format, you may consider creating a binary vector from the item list. For example if there were only ten items, a game in which the champion purchased items 1,4,5,9 (in any order) would look like row 1; a game where he also purchased item 2 and 7 would look like row 2:

item_ID   | 0  1  2  3  4  5  6  7  8  9
________________________________________
champion_1| 0  1  0  0  1  1  0  0  0  1
champion_1| 0  1  1  0  1  1  0  1  0  1


There are a variety of models that might suit this task. You might use decision trees for interpretability. A simple neural net or SVM would likely also do a good job. These should all be found in most basic ML packages.

2) The win rates of various items are directly computable. Simply count the number of times a champion used the items in question and won and divide by the total number of times a champion used that item combination. You can do this for any given group size (1 to 6)

• (Not an expert here) Is it directly computable when the number of combinations for 100 items (n!/n!(n-r)! I believe) is staggeringly high? Thank you for this awesome explanation, @jamesmf Aug 22, 2017 at 4:24