The parameters I trained the model for were things like "greed", "preferred game duration for winning", "effect on game duration", and several 3-way tables of win rates for things like ally-ally-oppose and ally-oppose-oppose.
An interesting effect I noticed was that the pub games have all sorts of weird second-order effects.
E.g.: Some characters are unpopular because pub players play them ineffectively, and/or they're hard to play well because they're so niche, so few people get enough practice with them in the right kind of scenario.
Dota's Jakiro is a great example. It's a lumbering support hero with very slow spells and a glacial turn rate. It's like trying to do acrobatics with a jumbo jet. He's frustrating to play and when most people pick him, the effect on the overall win rate is about -15%, which is insanely bad for 1 out of 10 players in a game! My win rate with him was something like 25%, which is absolutely atrocious. That's "throwing the game" bad.
My picker app often recommended Jakiro when the enemy team had over-represented heroes that typically commit to a fight, such as Legion Commander or Axe. Those heroes are nailed to the ground in a fight and can't escape Jakiro's devastating-but-slow attacks.
I ended up playing Jakiro a lot, and eventually I got about a 55% overall win rate with him, which is an amazing swing if you think about it. It took practice though, figuring out how to best utilise him. If I had played him in random games, I never would have gotten anywhere. The picker app however made this possible, by providing these hints of when and how to use the hero.