因为想要去腾讯实习,所以参加了今年的腾讯游戏安全技术竞赛,这个比赛赢了会有一个实习的绿色通道。选了数据分析方向里面的机器学习。

初赛题目很有趣,关于LOL(英雄联盟)的代练检测。

Moba游戏常见的5v5模式,玩家将与其余9名玩家共同组成对局。对局双方各5人,两方队伍通过优先推倒敌方水晶来取得胜利。排位赛的单双模式指:玩家可以选择自己参加排位或以双人组队的形式参加排位赛,比赛成绩都会对自己的段位产生影响。

我们提供某款Moba游戏在2019.03.07当天部分玩家账号,训练集名单已经标注了是否代练账号,未标注的10000个账号作为测试集,同时我们提供2019.02.26-2019.03.07 前10天这些玩家的排位赛数据,选手需要根据历史对局表现来预测2019.03.07当天测试集中的账号是否存在代练行为。

数据下载:https://gslab.qq.com/html/competition/20190311/index.htm

我本身就很喜欢玩LOL,所以做起来也感觉比较有意思,熬了两天夜给做完了,最后准确率86%,召回率73%,score是82

首先看到txt的数据文件,多达仅500W行,最大的数据文件大小约1G,每次load起来太慢了,于是我用pandas读取后转成了numpy的矩阵类型然后直接存成了npy文件,npy存取都是用二进制,之后load的速度会有大大提升。

行为流水和战绩流水数据文件中有着诸多玩家10天以来的所有对局,我先筛选出每一个玩家,再计算各个变量。这里变量是根据文件所提供的数据和我自己根据对英雄联盟的了解来选取的。

共提取了32个特征(变量)

特征变量目录

1

单双排位占比
2 最常用英雄占比
3 平均游戏时长
4

秒均击杀

5 秒均死亡
6 秒均助攻
7 平均每局对局中最大连杀
8 平均对局平均分
9 胜率
10 (不屈)败方评价分最高占败局比
11 对方投降在胜局中占比
12 游戏时长大于25分钟占比
13 Carry局在胜局中占比
14 被虐局在败局中占比
15 尽力局在胜局中占比
16 碾压局在胜局中占比
17 躺赢局在胜局中占比
18 杀人最多占比
19 金钱最多占比
20 不可思议连杀占比(应该就是超神占比)
21 MVP占胜局比
22 补兵王占比
23 逃跑占比
24 对英雄伤害最高占比
25 秒均造成伤害
26 秒均收到伤害
27 秒均获得金币
28 场均最大连杀
29 场均最大多杀
30

场均补刀。如果是打野,计算秒均中立生物*1.4+小兵,如果不是打野,计算秒均小兵。通过是否携带惩戒在判断是不是打野

31

KDA

32 游戏局数

提取出这些特征后就变成了 17W行,也就是17W个玩家样本,32列,也就是32个特征变量的矩阵。并通过训练集和测试集的玩家目录把17W个玩家分开(一共有1W个测试样本)。

之后我是用的Sklearn提供的SVM直接进行模型建立,并把训练集按6:4分成了训练集和验证集。在未加任何处理的情况下准确率大约是90%,召回率0%-40%都出现过,非常不稳定。

我们排名的根据是,其中P是准确率,R是召回率。我的得分很不稳定而且很低。我在sklearn文档里面找到了一段说,训练的时候尽量进行归一化。我尝试了这种方法,果真有奇效。

scaler = StandardScaler()
scaler.fit(training_x)
trans_training_x = scaler.transform(training_x)scaler.fit(test_x)
trans_test_x=scaler.transform(test_x)

上述就是归一化的代码,一定要注意不仅要对training set进行归一,还要对test set进行归一。否则整个结果就毫无意义。

在归一化后我的召回率稳定在了40%,准确率90%。准确率和召回率的差距太大,这样子最后的得分也非常的低。我想到了这是一个样本类别非常不均衡的训练。因为代练玩家本身只占少数,所以在最后要把SVM中把玩家本是代练,却判错为正常玩家的惩罚提高。

最后我选择了如下的参数(1代表代练玩家,0代表正常玩家):

weight_dict=dict()
weight_dict[1]=4
weight_dict[0]=float(4)/7clf=SVC(class_weight=weight_dict,C=1.0,kernel='rbf',gamma='scale')

其实class_weight参数中有一个很现成的选项是"balanced",在这种情况下C[i]=n_samples / (n_classes * np.bincount(y))。具体请见sklearn关于svm的文档:https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

其实在大多数非平衡情况下class_weight=”balanced“就可以解决问题。但在本题score的定义下,我自己尝试了多种weight_dict,最后还是4和4/7得到的score是最高的。最后得到了准确率86%,召回率73%,分数有82,进入了决赛。问到一个人说他的分数有87,不知道怎么办到的。

进决赛了很开心,就当是免费去深圳旅游了。这次初赛这个项目我本身是非常喜欢的,说到遗憾就是没有加让玩家rank分数这个特征,还有数据预处理阶段写了太多不必要的操作,导致在特征提取过程中程序运行了14个小时。我想优点就是能够有诸如KDA、打野和线上补兵调整这些不玩LOL的人不会有的数据处理操作,当然也使得最终结果有一定提升。

今天腾讯HR打电话来说因为我之前参加了腾讯面试,所以这次所谓的面试绿色通道对我没有用……就相当于这个面试通道只是可以提供一个立即初试的机会,然而我之前已经面过初试。 ORZ  突然就不知道到底我是为了什么要参赛了,有点沮丧。

我真的没有想到过要去一个实习会有这么难。什么时候才能到各家公司直接来找我呢?

LOL代练检测——2019腾讯游戏安全技术竞赛初赛记录相关推荐

  1. LOL代练检测——2019腾讯游戏安全技术竞赛决赛记录

    决赛去了深圳,过了几天吃喝全包的生活,感觉快爱上腾讯和深圳了.虽然最后没有拿到名词-- 进决赛的一共有20多个人,数据分析方向一共8个,其中机器学习仅有4个.我以为决赛会有一个不太一样的题目背景,后来 ...

  2. 2019腾讯游戏安全技术竞赛移动端题目解析

    2019腾讯游戏安全技术竞赛移动端初赛题目解析 前言 前几天朋友发了腾讯游戏安全技术竞赛链接给我,看了看感觉自己挺适合这方面的比赛.我初三买了第一台安卓机子,从root到网络渗透,从美化系统到自制ro ...

  3. 2018年腾讯游戏安全技术竞赛进阶版writeup

    本来去年对比赛印象不错,所以今年还是在一堆事情的情况下挤了点时间强行通宵做了一下,题目本身还行,不过题目各种出错,主办方反馈极度慢也是无话可说. 最后本来是打算等比赛结果公布后抽空好好整理下把 wri ...

  4. 【2020腾讯游戏安全技术竞赛】PC方向初赛 WriteUp

    很遗憾没有进入复赛,不过还是记录一下自己做题的过程叭 PC方向的初赛题目有2道,一道Ring0一道Ring3,由于技术不到位 我只做了简单的Ring3,无缘复赛QAQ RIng0的题目为:给了一个加了 ...

  5. 2018腾讯游戏安全技术竞赛Android 组决赛第一轮

    本博客由闲散白帽子胖胖鹏鹏胖胖鹏潜力所写,仅仅作为个人技术交流分享,不得用做商业用途.转载请注明出处,禁止未经许可将本博客内所有内容转载.商用. "横看成岭侧成峰,远近高低各不同" ...

  6. 2019腾讯游戏客户端面试

    第一次面试腾讯,个人感觉,每个问题都会问的比较深入,以及原理性的理解. 一面是电话面试,一个还比较年轻的面试官跟我开视频面试的,面试时间一小时.下面是一些问到的内容: 1.针对简历,问一下你之前的项目 ...

  7. 2019腾讯实习笔试题部分记录+两次电话面试笔记

    第一题:有n层的一座塔,跳塔 有n层的一座塔,每层高度不一样,现在小Q去爬塔,有如下特性:他爬塔的速度恒定,也就是说爬每一层的用时和这一层的高度成正比.但是他有一个能力:他可以有一种魔法,这个魔法可以 ...

  8. 2019腾讯广告算法大赛-冠军之路

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 写在前面 历时三个月腾讯广告算法大赛已经告一段落,在前两届成功经验的基础上,今年大赛在 ...

  9. 腾讯游戏应邀2019大数据产业峰会BDIC | 荣获“大数据星河奖”并获颁测评证书...

    6月4日至5日,由中国信息通信研究院.中国通信标准化协会主办.大数据技术标准推进委员会承办.中国IDC圈协办的2019大数据产业峰会在北京国际会议中心隆重召开. 腾讯游戏孙龙君.农益辉和刘天斯作为数据 ...

最新文章

  1. 个人作业1——四则运算题目生成程序
  2. 无论什么级别程序员,“微服务架构”都是你必须过的坎!
  3. 华为年薪200万招募的“天才少年”,一句话让我陷入了深思
  4. 【Java 虚拟机原理】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 | 静态变量 )
  5. 算法学习之百钱买百鸡
  6. boost::gil模块数字扩展中的 resample_pixels() 示例
  7. 【原创】【狗眼看股】【2008-4-25】干扰了节奏,改变不了趋势
  8. python list,str的拼接与转换
  9. 【君义精讲】多种方法求斐波那契数列
  10. 比亚迪汉鸿蒙系统测评_国产强强联合,比亚迪与华为联手打造的“汉”定制款华为P40亮相...
  11. 大数据治理的误区有哪些
  12. [论文笔记]ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS
  13. 【心情】换个皮肤试试看
  14. 七年级上册计算机教学反思,七年级信息技术上册教学反思
  15. 大话数据结构PDF/word
  16. python的扩展名是_python文件扩展名是什么
  17. TLC5615 产生频率可变的正弦波
  18. 酷冷战神 先手致胜:腾讯ROG游戏手机6为游戏而生
  19. 关于2D-DCT字典和克罗内克积以及二维字典的separable特性的个人理解
  20. 新型勒索软件Phobos利用弱安全性攻击目标

热门文章

  1. 可微神经计算机(Differentiable neural computer)的介绍
  2. B. Chris and Magic Square
  3. 城市槽音乐在津巴布韦的美国音乐如何影响其他文化和身份的个案研究
  4. SciTE 编辑器汉化
  5. 从iPhone6S发售谈富士康电商富连网
  6. mysql设置值班表_简单的员工轮换值班表
  7. 如何快速深度写论文?
  8. QtCreator代码对齐的方法
  9. android 视频美颜代码,Android 关于美颜/滤镜 利用PBO从OpenGL录制视频
  10. 基于Springboot+支付宝小程序会员开卡功能的服务端实现总结