我试图用给定的英雄选秀预测公共DotA 2比赛结果。人通常是可能的。对于给定方,只能有2个结果:它是胜利还是亏损。
事实上,我是机器学习的新手。我想做这个迷你项目作为练习,但它已经用了2天的时间。
所以,我制作了大约2000场比赛的数据集,大约相同的技能支架。每场比赛包含13000个功能。每个特征都是0或1,并指定辐射是否具有某个英雄,是否具有某种英雄,是否有辐射有一个并且一次是另一个(反之亦然)。所有组合总计约13000个功能。当然,他们中的大多数都是0。标签也是0或1,表明Radiant团队是否获胜。
我使用不同的套装进行训练和测试。 Logistic回归分类器使我在训练集上的准确率达到100%,测试集的准确率达到58%左右。
另一方面,SVM在训练中得分为55%,在测试中得分为53%。 当我减少1000个例子的数量时,我得到了54.5%的培训和55%的测试。我应该继续增加一些例子吗? 我应该选择不同的功能吗?
如果我添加更多英雄组合,则功能号码会爆炸。或者也许没有办法预测比赛结果仅根据所选择的英雄来判断,我需要获得关于每个球员在线评分和他们选择的英雄的数据等等?
基于培训示例数量的预测准确度图:
查看我添加的2个最新图表。我想我的成绩相当不错。
另外:
我问我的两个朋友预测了10场比赛,他们都预测了6场比赛。正如你所说,这相当于60%。 10场比赛不是很大,但他们不会打扰更大的比赛
我下载了400 000条最新的dota比赛。 MMR> 3000,仅限所有选择模式。假设每年播放10亿dota比赛,则400k来自同一补丁
连接双方的英雄选秀权是原始的想法。此外,dota中有114位英雄,所以我现在有228个功能
4.在大多数比赛中,赔率或多或少相等,但有一小部分选秀权,其中一支球队有优势。从小到严重。
我要求你做的是验证我的结论,因为我得到的结果对于线性模型来说太明亮了。
[概率测试] [2]
答案 0 :(得分:0)
这里的问题在于你断言预测基于英雄选秀权的dota 2比赛是#34;通常可以用于人类"。对于这项特殊任务而言,可能的准确性比任何事情都要低。我看了很多dota,即使你专注于专业场景,基于英雄选秀的脚轮的准确性也很低。我的初步分析表明它们的准确度在60%的吐痰距离内。
其次,有多少dota比赛实际上是由英雄选秀决定的?它并不多。在绝大多数情况下,特别是在技能水平变化很大的酒吧比赛中,球队比英雄选秀更重要。
这是您的问题的第一个问题,但是您构建问题的方式肯定存在其他大问题,这可能会帮助您获得另外几个准确点(尽管我再次怀疑您可以远远超过60%)
我的第一个建议是改变你生成功能的方式。将LR模型中的13k特征添加到具有2k示例的LR模型中是一种灾难。特别是在dota的情况下,个别英雄并不重要,协同作用和反击非常重要。我首先将你的功能数量减少到200,只需连接双方的英雄选择。 111为Radiant,111为Dire,1如果选择英雄,则为0,否则为0。这将有助于过度拟合,但是你遇到LR问题并不是特别适合这个问题,因为个别英雄并不重要。
我的第二个建议是限制你的匹配搜索单个补丁,理想情况下是一个有足够数据的后续补丁。如果你可以获得不同补丁的不同数据那就更好了。 LR方法可以为特定英雄功能过大的补丁提供相当的准确性,尤其是在小数据大小的情况下,如果在英雄实际发生变化时你在补丁之间进行处理,你就会有点h。
我的第三个建议是将模型更改为在功能之间的模型相互依赖性方面更好的模型。随机森林模型是一种非常简单直接的方法,对于像这样的问题,它应该比直LR具有更好的性能,并且在sklearn
中具有内置。
如果你想更进一步,那么使用MLP风格的网络模型可能相对有效。我没有看到明显的问题框架,以利用现代网络模型(CNN和RNN),所以除非你稍微改变问题定义,我认为这将比它更麻烦#39值得。
总是,当有疑问时会获得更多数据,并且不要忘记人们在这个问题上也非常非常糟糕。