# Who's the best midfielder? It depends on the weights. Matrix multiplication and player ratings

Source: https://www.footballdatascience.co.uk/learn/weighted-player-ratings
Published: 2026-09-28

> A weighted rating turns a player's scores into one number, but the weights decide what matters. Matrix multiplication rates a whole squad for several roles at once, and shows why "best" always means "best at what".

## The football question

A scouting report scores a midfielder out of 100 on four things: **passing 82, tackling 74, chance creation 79, pressing 88**. The director of football wants one number. **How do you combine four scores into one rating, and who decides how?**

## The concept

Give each score a **weight**: how much it matters to you. Multiply each score by its weight and add them up. That's the [dot product](/learn/cosine-similarity) of the player's scores and the weights.

For a box-to-box midfielder, say passing matters most and chance creation least:

| | Score | Weight |
|---|---|---|
| Passing | 82 | 0.30 |
| Tackling | 74 | 0.25 |
| Chance creation | 79 | 0.20 |
| Pressing | 88 | 0.25 |

$$\begin{aligned} \text{rating} &= (82 \times 0.30) + (74 \times 0.25) \\ &\quad + (79 \times 0.20) + (88 \times 0.25) \\ &= 24.6 + 18.5 + 15.8 + 22.0 \\ &= 80.9 \end{aligned}$$

<div class="plain" markdown="1">
In plain football

- **Each score is multiplied by how much it matters.** Passing counts for 30% of the rating, creation for 20%.
- **The weights add up to 1,** so the rating stays on the same 0 to 100 scale as the scores. It's a weighted average.
- **80.9** is a very good box-to-box midfielder, dragged up by his pressing and down a little by his tackling.
</div>

**The maths doesn't decide what matters. We do.** The weights are an opinion, written down. Change them and the same player gets a different rating.

## One player is a dot product. A squad is a matrix

Now rate four midfielders for three different roles. The scores (all made up except the first row, which is our midfielder from above) go in a matrix, one row per player:

| Player | Pass | Tackle | Create | Press |
|---|---|---|---|---|
| M | 82 | 74 | 79 | 88 |
| W | 75 | 88 | 62 | 84 |
| P | 88 | 60 | 86 | 70 |
| A | 78 | 80 | 76 | 78 |

M is our midfielder, W a ball-winner, P a playmaker and A an all-rounder.

The weights go in a second matrix, one **column** per role. Each column adds up to 1:

| | Box-to-box | Holding | Creator |
|---|---|---|---|
| Pass | 0.30 | 0.30 | 0.35 |
| Tackle | 0.25 | 0.40 | 0.05 |
| Create | 0.20 | 0.05 | 0.45 |
| Press | 0.25 | 0.25 | 0.15 |

Multiply the two matrices:

$$R = S\,W$$

<div class="plain" markdown="1">
In plain football

- **S** is the squad's scores: 4 players by 4 attributes.
- **W** is the weights: 4 attributes by 3 roles.
- **R** is the ratings: 4 players by 3 roles. Each entry is one player's row of scores times one role's column of weights: the same dot product as before, done twelve times at once.
</div>

The result:

| Player | Box-to-box | Holding | Creator |
|---|---|---|---|
| M | **80.9** | 80.2 | 81.2 |
| W | 77.9 | **81.8** | 71.2 |
| P | 76.1 | 72.2 | **83.0** |
| A | 78.1 | 78.7 | 77.2 |

<figure class="rank-chart">
<div role="img" aria-label="Each player's rank under three sets of weights. Box-to-box: M, A, W, P. Holding: W, M, A, P. Creator: P, M, A, W.">

</div>
<figcaption>Each player's rank under each role's weights, from the table above. The lines cross: every role has a different winner, and W goes from first for holding to last for creating.</figcaption>
</figure>

<div class="plain" markdown="1">
In plain football

- **Read down a column** to find the best player for a role. Every role has a different winner: M for box-to-box, W for holding, P for creator.
- **Read along a row** to find a player's best role. M rates slightly higher as a creator (81.2) than as a box-to-box midfielder (80.9): the scout's report might be selling him in the wrong position.
- **A** is never the best and never the worst. That's what an all-rounder looks like in a ratings matrix: useful everywhere, first choice nowhere.
</div>

So "who's the best midfielder?" has no single answer. It has one answer per column, and the columns are the club's choices.

<details markdown="1">
<summary><span>Show the maths<small>The rule for multiplying matrices, and why the sizes must match. Optional.</small></span></summary>

If \(S\) is \(n \times k\) (players by attributes) and \(W\) is \(k \times m\) (attributes by roles), the product \(R = SW\) is \(n \times m\), with

$$R_{ij} = \sum_{a=1}^{k} S_{ia} W_{aj}$$

the dot product of row \(i\) of \(S\) with column \(j\) of \(W\). The inner sizes must match (\(k\) attributes in each), which is why the scores and the weights have to list the attributes in the same order.

For example, W's holding rating is

$$\begin{aligned} R_{\text{W,Hold}} &= 75(0.30) + 88(0.40) \\ &\quad + 62(0.05) + 84(0.25) \\ &= 81.8 \end{aligned}$$

If every column of \(W\) sums to 1 and all weights are non-negative, each rating is a weighted average of that player's scores, so it lies between his lowest and highest score.

</details>

## Why the scale matters

This works neatly because every score is already on the same 0 to 100 scale. [Part 2 of this series](/learn/team-as-a-matrix) weighted raw match stats instead, and had to give passes a weight of just 0.02, because a midfielder makes 60-odd passes and only a handful of tackles. With raw stats the weights have two jobs at once: fixing the units and saying what matters. That's why analysts usually [standardise](/learn/player-similarity-distance) first, or use scores like these, so that the weights only have to express an opinion.

## Why it matters

The same multiplication rates 10 players or 10,000, for one role or twenty, in one step. That's how:

- **Recruitment databases** rank every player in a league for the role a club needs.
- **Squad planning** sees who could cover which position, by reading along the rows.
- **Machine learning** works: a neural network's layers are, at heart, matrix multiplications, except that the weights are learned from data rather than chosen by a scout.

## Limitations

- **The weights are opinions.** Two clubs with different weights get different "best" players from the same data. Write the weights down and agree them before looking at the rankings, or it's easy to pick weights that crown the player you already liked.
- **The scores are opinions too.** A scout's 82 for passing isn't a measurement. Ratings built on ratings inherit every bias in them.
- **Averages hide weaknesses.** A 90 and a 50 average the same as two 70s. A player with one glaring flaw can still rate well.
- **Attributes overlap.** Pressing and tackling tend to go together, so weighting both can count the same quality twice. Spotting and removing that overlap is what the next part of this series, on PCA, is about.

## Try it yourself

Invent a fourth role, a pressing midfielder, with weights (0.20, 0.15, 0.25, 0.40). Rate all four players. Who comes out on top? Then move 0.10 of weight from pressing to creation and rate them again. Does the winner change?

## Further reading

- [Matrix multiplication as composition](https://www.3blue1brown.com/lessons/matrix-multiplication), 3Blue1Brown. What multiplying two matrices means, beyond the arithmetic.
- [Multiplying matrices](https://www.khanacademy.org/math/precalculus/x9e81a4f98389efdf:matrices/x9e81a4f98389efdf:multiplying-matrices-by-matrices/v/matrix-multiplication-intro), Khan Academy. Step-by-step examples of the row-times-column rule.
- [Weighted arithmetic mean](https://en.wikipedia.org/wiki/Weighted_arithmetic_mean), Wikipedia. Weighted averages, and what happens when the weights sum to 1.
