2019 Standard Running Back Rankings

Last year, I used machine learning to rank the running backs. The results were mixed: I was right about Dalvin Cook, David Johnson, and Jordan Howard, but wrong about LeSean McCoy, Royce Freeman, and Melvin Gordon. Overall, I was right on 9 predictions, and wrong on 9 predictions, and ranked below average compared with the experts.

I’ve made some improvements for this season: my model isn’t as needlessly complex, and my predictions on everyone’s carries and stats are more realistic. My model still made some bold calls, but I only see one outlandish predictions.

The Rankings:

Sorry for the formatting.

Player Carries Rush Yards Rush TDs Rec Rec Yards Rec TDs Points ADP
1. Saquon Barkley 255 1149 9 76 616 4 251 1
2. Alvin Kamara 191 890 9 81 695 4 235 2
3. Nick Chubb 254 1194 9 43 326 2 219 7
4. Christian McCaffrey 184 907 6 82 681 4 218 3
5. Ezekiel Elliott 237 1058 7 54 428 2 204 5
6. David Johnson 230 937 7 52 490 3 201 4
7. Joe Mixon 246 1104 8 45 337 1 198 10
8. Todd Gurley 200 909 8 47 413 3 197 9
9. Le’Veon Bell 247 1035 7 49 404 2 195 6
10. James Conner 210 923 8 46 392 2 192 8
11. Melvin Gordon 185 858 7 44 370 2 181 14
12. Dalvin Cook 212 951 6 49 376 2 179 11
13. Leonard Fournette 242 966 7 36 290 1 177 13
14. Derrick Henry 227 1037 9 16 123 0 171 21
15. Marlon Mack 217 960 8 27 209 1 169 16
16. Damien Williams 168 755 7 44 352 3 168 12
17. Kerryon Johnson 194 907 6 43 318 2 165 15
18. Aaron Jones 183 869 7 34 261 1 161 17
19. David Montgomery 200 856 6 32 261 1 157 20
20. Devonta Freeman 184 792 6 34 271 1 151 18
21. Josh Jacobs 193 838 5 35 284 1 151 19
22. Chris Carson 200 894 7 23 183 1 151 22
23. Philip Lindsay 176 824 6 33 239 1 147 25
24. Kenyan Drake 142 655 4 48 391 2 145 29
25. Mark Ingram 209 856 6 28 209 1 144 23
26. Lamar Miller 194 846 4 27 210 1 138 27
27. Sony Michel 193 840 7 15 110 0 137 24
28. Tevin Coleman 153 708 5 30 251 2 136 26
29. Latavius Murray 182 726 7 24 171 1 135 32
30. James White 69 314 2 66 558 4 123 31
31. Miles Sanders 156 634 4 31 251 1 122 28
32. Austin Ekeler 108 522 3 39 351 2 120 34
33. Derrius Guice 154 655 5 24 206 1 120 30
34. Rashaad Penny 152 671 4 25 198 1 119 33
35. Tarik Cohen 74 345 3 54 482 3 115 35
36. Royce Freeman 161 652 5 21 156 1 113 38
37. Darrell Henderson 136 579 4 28 227 1 111 37
38. Kalen Ballage 143 610 7 23 188 1 111 45
39. Jordan Howard 161 662 5 15 112 0 110 36
40. LeSean McCoy 155 620 3 31 236 1 109 41

The Rest:

# Player Points ADP
41 Ronald Jones 105 40
42 Carlos Hyde 101 42
43 Alexander Mattison 98 48
44 Jaylen Samuels 95 46
45 Devin Singletary 92 47
46 Peyton Barber 91 43
47 Justin Jackson 91 52
48 Kareem Hunt 91 39
49 Adrian Peterson 91 44
50 Damien Harris 87 50
51 Duke Johnson 87 51
52 Tony Pollard 86 56
53 Nyheim Hines 84 60
54 Matt Breida 83 49
55 D’Onta Foreman 80 59
56 Darwin Thompson 80 55
57 Justice Hill 79 53
58 Mike Davis 78 58
59 Dion Lewis 76 56
60 Ito Smith 74 59
61 Jerick McKinnon 70 54
62 C.J. Anderson 66 61
63 Malcolm Brown 65 62
64 Jalen Richard 57
65 Jamaal Williams 54
66 Theo Riddick 53
67 Giovani Bernard 51
68 Frank Gore 46
69 Alfred Blue 45
70 Gus Edwards 45
71 Dontrell Hilliard 45
72 Chris Thompson 45
73 Wayne Gallman 44
74 Ty Montgomery 43
75 Chase Edmonds 42
76 Mark Walton 39
77 Ryquell Armstead 39
78 Rod Smith 39
79 Benny Snell 38
80 Cameron Artis-Payne 37
81 Bilal Powell 36
82 Qadree Ollison 35
83 Dexter Williams 34
84 Jordan Scarlett 32
85 Alfred Morris 32
86 Andre Ellington 30
87 Zach Zenner 28
88 Doug Martin 27
89 Trayveon Williams 26
90 Ameer Abdullah 24
91 J.D. McKissic 23
92 Zach Line 22
93 T.J. Logan 17
94 David Fluellen 17
95\ Josh Ferguson 5
96 Darren Sproles -4

Bold Picks:

Sleepers and Undervalued:

Nick Chubb: Rank: 3, ADP: 7
Derrick Henry: Rank: 14, ADP: 21
Joe Mixon: Rank: 7, ADP: 10
Melvin Gordon: Rank: 11, ADP: 14
Kenyan Drake: Rank: 24, ADP: 29
Kalen Ballage: Rank: 38, ADP: 45
Nyheim Hines: Rank: 53, ADP: 60

Busts and Overvalued:

Le’Veon Bell: Rank: 9, ADP: 6
David Johnson: Rank: 6, ADP: 4
Damien Williams: Rank: 16, ADP: 12
James Conner: Rank: 10, ADP: 8
Kareem Hunt: Rank: 48, ADP: 39
Jerick MicKinnon: Rank: 61, ADP: 54

Evaluating my 2018 Running Back Rankings

Last year, I trained a machine learning model to rank the running backs based on how it expected them to do during the 2018 season. The resulting rankings were different from the consensus, to put it mildly. When I posted my rankings, the results were mixed. Some were interested and wanted to learn more, some thought that my rankings were unrealistic, and others accurately pointed out flaws with my methodology.

Now that the 2018 season is in the books, it’s time to evaluate how my model did!

First, a look at the boldest predictions:

Dalvin Cook: Model: RB27, ADP: RB10, Actual Rank: 31st
“What’s up with Dalvin Cook? “F” for efficiency? I get the injury concern but…that makes no sense”
“I’m not a huge Dalvin Cook truther or anything, but come on man, you know that his ranking is absurdly low here unless the model is predicting him to be hurt again”

When I posted these predictions, this was the one I got the most criticism on. Cook was an exciting running back who had a very good start to the 2017 season before getting injured. He was supposed to be healthy in 2018 and everyone expected him to bounce back. However, I thought he would finish in 27th and finish one spot below his backup, Latavius Murray. Actually, Cook finished in 31st and finished one spot above Murray.
Result: CORRECT

David Johnson: Model: RB7, ADP: RB3, Actual Rank: 10th
“Did DJs injury influence the results? He seems crazy low at 7.”
Last year, David Johnson was one of four running backs considered to be in the top tier. Me ranking him all the way down at 7th was pretty controversial. However, David Johnson was weighed down by an awful Cardinals offense and he ended up finishing 10th, meaning that my prediction was actually too optimistic.
Result: CORRECT

Latavius Murray: Model: RB26, ADP: RB44, Actual Rank: 32nd
“Latavius Murray over Kerryon Johnson huh”
Murray being ranked so high was a residual effect of my model expecting Dalvin Cook to bust. Dalvin Cook did bust and Murray did get more of an opportunity, but he didn’t really take advantage of it. He did do much better than most people thought, though.
Result: Slightly Correct

LeSean McCoy: Model: RB10. ADP: RB17, Actual Rank: 40th
“If McCoy finishes above Gordon I’ll shit a brick”
Yeah, this pick was pretty bad. McCoy was getting older and stuck on the Bills offense, but he looked like he was going to get a lot of carries. Instead, he only got 161 carries and came in 40th in points.
Result: INCORRECT

Royce Freeman: Model: RB11, ADP: RB18, Actual Rank: 47th
“there is 0 way royce freeman sees 50 more touches than melvin gordon.”
This was by far the worst pick my model made. Royce Freeman looked like an exciting rookie running back. People were already optimistic on him, but my model took that to the extreme, expecting him to close to being a top 10 RB in his first season. A Broncos rookie running back did almost make the top 10, but it was Philip Lindsay, not Royce Freeman. To be fair, nobody saw Lindsay coming, and I didn’t even make a prediction for him. Maybe if I did, Royce would have been ranked lower. But still, Royce didn’t even look impressive in the playing time that he did get, and ranking him 11th is bad.
Result: INCORRECT

Jay Ajayi: Model: RB14, ADP: RB22, Actual Rank: 78th
“In what universe is Jay AJayi getting more carries than Melvin Gordon?”
After a solid 2016, Ajayi had a down year in 2017. My model expected him to bounce back, but that didn’t happen. He had a very good first game, but was then put on injured reserve after only three more games.
Result: INCORRECT

Melvin Gordon: Model: RB12, ADP: RB8, Actual Rank: 6th
“If McCoy finishes above Gordon I’ll shit a brick”
“Melvin Gordon at 12 is all I need to know”
When I posted my rankings on reddit, most of the comment section was criticizing me for ranking Melvin Gordon too low. I argued that I thought Austin Ekeler would be more involved this year. While that turned out to be true, my prediction about Gordon was way off, as he finished in 6th.
RESULT: INCORRECT

Jordan Howard: Model: RB17, ADP: RB12, Actual Rank: 20th
“The disrespect for Jordan Howard is tragic…especially since this is a standard league. Ranked below McCoy, Mixon, Royce Freeman, Ajayi and Henry? Come on now…”
I got plenty of criticism for putting Howard so low, especially with these rankings being for standard scoring. But after two years of being a top 10 running back, Howard finished in 20th, performing even worse than my model expected. In the offseason, he was traded for only a fifth round pick.
Result: CORRECT

Ezekiel Elliott: Model: RB2, ADP: RB4, Actual Rank: 5th
My model was very optimistic on Zeke, predicting that he would be the second best running back. While he didn’t quite live up to that, he still had a great season. An owner who selected Zeke would probably be pretty happy, given that the other running backs in that tier were Le’Veon Bell and David Johnson.
Result: Slightly Correct

Kareem Hunt: Model: RB5, ADP: RB9, Actual Rank: 8th
After the first eleven weeks of the season, Hunt had scored the third most points among running backs, and this prediction looked very good. Then after a video was released of him kicking a woman, he was released. Overall, he finished as the RB8, one spot above his ADP.
Result: Slightly Correct

Duke Johnson: Model: RB32, ADP: RB50, Actual Rank: 48th
My model expected that Duke and Carlos Hyde would be the surprising Browns running backs, and that Nick Chubb would be a disappointment. That turned out to be backwards, and Duke struggled to make an impact in a crowded Browns backfield.
Result: INCORRECT

Alvin Kamara: Model: RB4, ADP: RB6, Actual Rank: 4th
Although some people did have Kamara at the top of the second tier of RBs, most people predicted regression. And while that did happen, that was more than offset by an increased number of carries and 18 total touchdowns. Overall, he was the fourth highest scoring running back, which was exactly what my model predicted.
Result: CORRECT

Rex Burkhead: Model: Unranked, ADP: RB28, Actual Rank: 80th
Burkhead got injured during the season. But when he came back, he was stuck in a crowded backfield and never broke 40 rushing yards.
Result: CORRECT

Isaiah Crowell: Model: RB24, ADP: RB34, Actual Rank: 29th
Crowell had a better year than most people expected, but didn’t do as good as my model thought. He finished at 29th, exactly in the middle between my prediction and his ADP.
Result: Slightly Correct

Christian McCaffrey: Model: RB8, ADP: RB11, Actual Rank: 3rd
My model was pretty optimistic. In fact, I didn’t see any rankings that had CMC higher than 8th. But McCaffrey surpassed even that prediction, totaling almost 2000 yards from scrimmage and finishing as the 3rd highest scoring running back.
Result: CORRECT

Jamaal Williams: Model: RB37, ADP: RB27, Actual Rank: 46th
With Aaron Jones suspended for two games, Williams was the highest ranked Packers RB. But with the state of the Packers backfield unclear, as well as Williams’s struggles in 2017, my model was low on him. That turned out to be correct, as Williams got only 121 carries even with Ty Montgomery being traded midseason.
Result: CORRECT

Ronald Jones: Model: RB29, ADP: RB39, Actual Rank: 100th
Ronald Jones had a pretty awful year, and made this pick look very bad. He was a healthy scratch for the first three weeks and then had only 1.9 yards per carry when he actually got on the field.
Result: INCORRECT

Chris Carson: Model: RB38, ADP: RB29, Actual Rank: 14th
This prediction was a definite miss. My model had Carson four spots behind his projected backup, Rashaad Penny. In reality, Carson seized the starting job and finished fifth in the NFL in rushing yards.
Result: INCORRECT

Peyton Barber: Model: Unranked, ADP: RB31, Actual Rank: 26th
Barber slightly surpassed expectations, but my model didn’t even list him. This was probably a side effect of having Ronald Jones so high.
Result: INCORRECT

Carlos Hyde: Model: RB20, ADP: RB25, Actual Rank: 44th
Hyde actually had a pretty good start to the season. After six weeks, he had the 12th most points, but was then traded to the Jaguars to make room for Nick Chubb. Hyde struggled with his new team, with only 58 carries and 3.3 yards per carry, and finished in 44th.
Result: INCORRECT

Sony Michel: Model: RB28, ADP: RB35, Actual Rank: 25th
I was one of the highest on Michel, and he turned in a good season, getting over 200 carries and rushing for almost 1000 yards.
Result: CORRECT

Dion Lewis: Model: RB35, ADP: RB30, Actual Rank: 36th
After going from the Patriots to the Titans and splitting time with Derrick Henry, Lewis wasn’t expected to repeat his 2017 season. My model thought that he wasn’t downgraded enough, though, and ranked him at 35th. Lewis ended up finishing at 36th.
Result: CORRECT

Tally:
Correct: 9
Incorrect: 9
Slightly Correct: 4

Overall, the results are mixed. My model had some very big wins (Dalvin Cook, David Johnson, Jordan Howard) but also some big misses (Royce Freeman, Melvin Gordon, LeSean McCoy). Interestingly, my model seemed to be more accurate at predicting busts than predicting sleepers.

Now that we’ve looked at the individual bold predictions it made, let’s look at how the model did in general. I scoured the internet and found twenty nine other rankings made for the 2018 season. I went through all of them and calculated both their ECR (lower is better) and their weighted points (calculated by multiplying their #1 RB’s actual points by 25, their #2 RB’s actual points by 24 and so on for their top 20 RBs). Then I did the same thing for my model and compared the results.

Expert ECR Weighted Points
Scout Fantasy Sports – Dr Roto 2942.5 74171.7
Yahoo – Pianowski 3031.9 73959
TheFootballGirl 3036.7 73243.4
Scout Fantasy Sports – Atkins 3076.1 75640.2
Scout Fantasy Sports – Brandon 3082.9 75253.6
FantasySixPack – Bond 3114.5 73139.2
Yahoo – Behrens 3119.3 72471
Razzball 3147.1 73759.5
FantasySixPack – Savill 3149 73847.2
WalterFootball 3194.4 70000.6
Scout Fantasy Sports – Childs 3200.2 67176.1
ESPN 3236.9 74029.6
FantasySixPack – Lott 3250.6 72456.6
Scout Fantasy Sports – Ronis 3252.8 73284.5
Yahoo – Del Don 3253.4 69348.5
FFToday 3336.1 67260.7
Yahoo – Evans 3371.2 69082.8
5th Down Fantasy – Sablich 3401.3 73186.4
5th Down Fantasy 3417.4 70610.8
SportingNews 3425.4 71126.9
FantasyShed 3440.5 70217.4
Yahoo – Loza 3446.1 71419.3
CBS – Dave Richard 3479.6 72015.3
Simple Model 3651.6 70556.8
FantasySixPack – Hamrick 3670.9 70676.4
Fantasy Football Index 3734.8 65426.2
RotoWorld 3746.2 69722.8
RotoProfessor 3747.2 71809.1
Complex Model 3833.3 70478.1
PitcherList 3950.4 66787.5
FakePigskin 4059.7 66612.5

Overall, these results aren’t great. My simple model came in 24th out of 31 for ECR and my complex model came in 29th. The results for weighted points are better: the simple model came in 20th and the complex model came in 21st. These results are slightly misleading: I posted my results right before Jerick McKinnon got injured, and most of the other rankings didn’t include him.

Even if I take out the McKinnon prediction though, the results aren’t great. I was hoping that my model would blow the experts away and that didn’t happen. However, the results aren’t terrible for a first attempt. I’m looking forward to fixing the flaws in my model and giving it a try for 2019.

Verdict: The Machine needs to go back to school.

Standard Running Back Rankings

The most important part of a fantasy football season is the draft. Everyone starts off with high hopes and a blank roster. Everyone has the same information and, with the exception of the first round, the opportunity to get any player they want.

Seasons are won and lost at the draft. Picking up a guy in the 7th round who goes on to finish as an RB1, or nailing a late round sleeper pick could propel you into the playoffs. On the other hand, if you miss on a first or second round pick, you’re starting off at a big disadvantage.

What I’ve said isn’t new. Each year, dozens of cheat sheets, draft kits and rankings come out.

But most of these rankings look the same.

Sure, some rankings might have a guy going a couple picks, or even half a round earlier than another set of rankings. At the end of the draft, the difference might be a couple of rounds. But for the most part, the rankings are very similar.  Everyone agrees that there are four running backs that stand out from the rest. And after that is another tier of about a half dozen guys who will go in the back of the first and the early second. After that are rookies, guys who have struggled, and backs dealing with competition.
For the most part, these rankings are reasonable. Todd Gurley, LeVeon Bell, David Johnson and Ezekiel Elliott are all very talented running backs, and the experts who rank them are very knowledgable about fantasy football.

But they’re human, and all humans have biases. Young running backs with upside to hit 1000 yards get taken ahead of older running backs that already do. Guys with a lot of name value get taken ahead of where they should go. If you drafted a guy last year who busted, chances are you’re going to hesitate before drafting him this year.

But what if these running backs could be predicted by machine learning? The computer doesn’t care what name a player has, and it won’t overreact to how a player performed on their fantasy team last year, because it didn’t have a fantasy team. Instead, it will make impartial predictions based on production, opportunity, age, injury history, combine results, and the team around them.

I gathered data from the 2008 to the 2017 seasons and fed them in. I used six models: Linear Regression, Logistic Regression, K Nearest Neighbors, Random Forest, Decision Trees, and Linear Discriminant Analysis. I then had two different ways of turning the results from those models into rankings: A) averaging the rankings from the models, and B) feeding the results into a second linear regression model. When I tested these methods, both models performed about the same, so the results from the simpler model are my official projections.

With the details out of the way, here are my rankings for 2018 running backs in standard leagues! The first column is the rankings from the simpler model. The second column is the rankings from the more complex model. The next two columns are each player’s predicted carries, and a letter grade representing how efficient I expect them to be at turning carries into points. (I also aggregated my rankings with ADPs found at Fantasy Football Calculator, so if the rankings don’t match up, that’s probably why).

# Player Simple Ranking Complex Ranking Carries Efficiency
1 Todd Gurley 1 1 244 A+
2 Ezekiel Elliott 2 3 226 A-
3 Le’Veon Bell 3 4 203 A+
4 Alvin Kamara 4 7 193 A
5 Kareem Hunt 5 5 235 B
6 Saquon Barkley 6 6 197 C+
7 David Johnson 7 2 182 A-
8 Christian McCaffrey 8 8 153 A
9 Leonard Fournette 9 11 206 B-
10 LeSean McCoy 10 15 275 C
11 Royce Freeman 11 18 231 B+
12 Melvin Gordon 12 12 184 B+
13 Joe Mixon 13 19 218 A
14 Jay Ajayi 14 23 201 B
15 Derrick Henry 15 13 182 B+
16 Devonta Freeman 16 9 180 B
17 Jordan Howard 17 10 208 C
18 Alex Collins 18 14 193 A-
19 Lamar Miller 19 22 195 B-
20 Carlos Hyde 20 16 194 C+
21 Jerick McKinnon 21 21 206 B
22 Kenyan Drake 22 25 132 A+
23 Marshawn Lynch 23 26 214 C
24 Isaiah Crowell 24 33 166 A
25 Mark Ingram 25 20 122 A-
26 Latavius Murray 26 31 177 B-
27 Dalvin Cook 27 24 146 F
28 Sony Michel 28 29 225 D-
29 Ronald Jones 29 40 215 C+
30 Kerryon Johnson 30 17 165 D-
31 Tevin Coleman 31 30 141 D+
32 Duke Johnson 32 36 118 A+
33 Tarik Cohen 33 39 131 A
34 Rashaad Penny 34 27 179 D+
35 Dion Lewis 35 28 133 B-
36 Marlon Mack 36 43 157 C-
37 Jamaal Williams 37 34 100 C+
38 Chris Carson 38 32 130 D+
39 LeGarrette Blount 39 35 159 D+
40 C.J. Anderson 40 46 123 C-