TensorFlow 坐庄,预测谁是最强神奇宝贝

By 超神经

今年的 7 月 13 号是《Pokemon Go》发布两周年的日子,游戏虽然没有登录中国市场,但是不影响这款经典大 IP 收割全球用户。最近的收入榜单上,《Pokemon Go》是全球收入第四的移动游戏,仅次于《王者荣耀》、《QQ 飞车》和《梦幻西游》,也就是说《Pokemon Go》是全球非中国移动游戏中,收入最高的产品。

也有一帮无聊又中二的工程师小哥哥,成功通过机器学习模型,预测出《Pokemon GO》不同精灵间的对战结果。

TensorFlow 坐庄,预测谁是最强神奇宝贝

《Pokemon GO》2016 年 9 月上线,红极一时。游戏是由任天堂、The Pokemon Company 口袋妖怪公司和 Google 的 Niantic Labs 公司联合制作开发。

其中口袋妖怪负责内容支持、设计游戏和故事内容;Niantic 负责技术支持、为游戏提供 AR 技术,而任天堂在其中负责游戏开发、全球发行。

游戏主要利用 AR 技术,玩家可以通过手机在现实世界里捕捉宠物小精灵,进行战斗。

游戏中有 800 多只宠物小精灵,被分配在不同的阵营里,每只精灵都有不同的属性,包括攻击、防御、命中、速度等。

TensorFlow 坐庄,预测谁是最强神奇宝贝

展示其中一些宠物小精灵的属性值

TensorFlow 坐庄,预测谁是最强神奇宝贝

哥达鸭算是神奇宝贝里最强龙套

这些属性值就是机器学习模型预测结果的数据集,目前,模型主要通过「构建分类器、训练分类器和测试分类器」三步来完成。

构建分类器

分类器主要用于将数据进行分类,比如给定一个图像,把它归类为狗或者猫。比较常用的是随机森林分类器,它是的工作原理是基于多个决策树对样本数据进行训练和预测。

决策树分类器

简单聊聊决策树,假设给定我们一些关于动物类别、身高、体重、速度等信息,要求我们据此推断出该动物是猫,还是狗或者其他,就可以通过决策树来实现。

TensorFlow 坐庄,预测谁是最强神奇宝贝

如上图所示,在决策树的每个节点都会产生一个问题,根据问题的答案可以进一步划分出子树,然后整个过程不断重复,直至我们确定该动物是猫,还是狗。

可见,决策树分类器的优势在于,给定一个数据集,它能在每个节点提出正确的问题 (即找出增益信息),从而划分树,增加对每个预测的准确度。

随机森林分类器

TensorFlow 坐庄,预测谁是最强神奇宝贝

随机森林分类器就是多个决策树分类器的集合,与使用单一决策树相比,这种方法可以得到更好的结果,实用性也更强。

好了,现在开始构建这个随机森林分类器。如下所示:n_estimators 给出用于创建随机森林的决策树的数量为 100。

TensorFlow 坐庄,预测谁是最强神奇宝贝

训练分类器

以小精灵们各自的属性值为数据集(即 x_train),通过这些数据集来训练分类器,并使预测值和实际值(即 y_train)在训练集上的损失最小化。

TensorFlow 坐庄,预测谁是最强神奇宝贝

整个分类器的训练需要通过确定不同属性值间的关系来实现,最终,随机森林分类器的准确率达到 95% 以上。

测试分类器

在实际预测中,所使用的数据集仍是所有精灵的属性值,随机森林分类器通过这些数值预测结果。

大岩蛇、波波兽、吸盘魔偶 和 哥达鸭 是《Pokemon GO》中的 4 个角色,这个模型模型将分别预测 大岩蛇 VS 波波兽 以及 吸盘魔偶 VS 哥达鸭 的结果。

TensorFlow 坐庄,预测谁是最强神奇宝贝

TensorFlow 坐庄,预测谁是最强神奇宝贝

预测结果:大岩蛇胜出

TensorFlow 坐庄,预测谁是最强神奇宝贝

TensorFlow 坐庄,预测谁是最强神奇宝贝

预测结果:吸盘魔偶胜出

这样的对战此前并没有在《Pokemon GO》中出现过,如果你正在玩这款游戏,不妨跟朋友一起试试,看看结果是否真如这个模型预测的一样。

项目已经由工程师小哥哥们发布在 Github 了,有兴趣的其他小伙伴们也可以了解一下。

TensorFlow 坐庄,预测谁是最强神奇宝贝