决策树

游戏开发中的人工智能

不想你离开。 提交于 2020-07-27 05:53:29
前言 今天非常开心,观看cocos官方直播居然在几千人中中奖,可以买彩票了。 言归正传,所谓的人工智能,也就是大家常说的AI(Artificial Intelligence)。一说到AI可能就会让人觉得比较深奥,其实也就是非玩家角色思考和行为的综合。比如,在什么样的条件下,触发什么样的行为。 其实我们在游戏开发中的AI要比学术理论中的AI简单很多,甚至有些行为不需要AI也能体现。比如使用剧情对话体现非玩家角色的想法。 那么AI 都涉及到哪些东西呢? 控制器 我理解的控制器,就是非玩家角色的大脑,是用来思考事情的。例如通过执行决策树,得到一个有效的行为。使用不一样的控制器就会有不一样的思考方式。比如玩家的控制器就是根据按键操作触发不同的行为。阿猫,阿狗的可能又不一样了。 感知器 获得周围环境的情况,不如距离谁有多远,自身生命值多少,玩家生命值多少,等等。 反应 也就是控制器执行决策树后产生的有效行为。比如跳跃,跑,各种攻击,防御等等。 决策树 我理解为思考时的思路,比如应该在什么样的条件下执行什么样的反应。比如当我的血量低于百分之30的时候我要逃跑。具体案例体现在我的游戏《星际迷航》的第一个boss身上。 记忆 就是非玩家角色可以通过存储数据,供控制器执行的时候使用,以提高非玩家角色的智商。 学习 这个能力太牛逼了。实现起来也比较复杂,需要大量的数据和计算量为依托

LIME算法:模型的可解释性(代码实现)

淺唱寂寞╮ 提交于 2020-07-26 10:56:56
在这篇笔记中分享前段时间我对于LIME算法的调研。 一、算法简介 LIME算法是Marco Tulio Ribeiro2016年发表的论文《“Why Should I Trust You?” Explaining the Predictions of Any Classifier》中介绍的局部可解释性模型算法。该算法主要是用在文本类与图像类的模型中。 1.算法主要用途 在算法建模过程中,我们一般会用测试集的准确率与召回率衡量一个模型的好坏。但在和客户的实际沟通时,单单抛出一个数字就想要客户信任我们,那肯定是不够的,这就要求我们摆出规则,解释模型。但不是所有的模型都是规则模型,一些黑盒模型(比如神经网络)有着更高的准确率,但是无法给出具体的规则,无法让普通人理解和信任模型的预测结果,这种时候,就可以利用本文要介绍的LIME算法,全称Local Interpretable Model-agnostic Explanations,可以理解为模型的解释器。 可以从两个方面说明我们为什么需要模型解释器,一方面是用户需要信任预测结果,另一方面是建模者需要信任模型。 2、用户需要信任预测结果 在很多行业,比如医生、法律行业,都需要就模型的预测结果给出充分的理由,否则就无法取得用户的信任。举一个论文中提到的例子,一个医学模型判断病人患病,通过LIME算法同时给出病人的病史症状包括喷嚏、头痛等特征

有监督学习:从过去到现在的模型流行度(深度翻译好文)

筅森魡賤 提交于 2020-07-25 12:53:44
在过去的几十年中,机器学习领域发生了巨大的变化。诚然,有些方法已经存在很长时间了,但仍然是该领域的主要内容。例如,Legendre和Gauss已经在19世纪初提出了最小二乘的概念。在最近的几十年中,诸如神经网络等其他方法的最基本形式在1958年得到了极大的发展,而诸如支持向量机(SVM)等其他方法则是最近的。 由于监督学习的可用方法很多,因此经常会提出以下问题:**最佳模型是什么?**众所周知,这个问题很难回答,因为正如乔治·博克斯(George Box)所说的那样,所有模型都是错误的,但有些模型是有用的。特别是,模型的实用性主要取决于手头的数据。因此,这个问题没有普遍的答案。以下是一个更容易回答的问题: 什么是最受欢迎的模型? 。这将是本文的关注点。 衡量机器学习模型的受欢迎程度 出于本文的目的,我将使用一种常用方法来定义流行度。更准确地说,我将使用许多提及个别监督学习模型的科学出版物来代替受欢迎程度。当然,这种方法有一些局限性: 流行的概念可能比出版物的数量更准确。例如,批评某种模型的出版物并不一定暗示该模型很受欢迎。 该分析受所用搜索词的影响。为了确保高度的特异性,我没有考虑模型缩写,这就是为什么我可能未检索到所有潜在匹配的原因。此外,对于那些也被分析中未考虑的搜索词引用的模型,灵敏度可能较低。 文献数据库并不完美:有时,出版物存储的原数据不正确(例如,年份不正确)

数据集成、变换、归约及相关MATLAB工具箱函数

故事扮演 提交于 2020-05-08 19:57:52
   数据预处理 的主要内容包括 数据清洗、数据集成、数据变换和数据规约 ,在数据挖掘的过程中,数据预处理工作量占到了整个过程的 60% 。数据清洗在上一篇博客中写过,这里主要写后面三部分。 数据集成   数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。   在数据集成时,来自多个数据源的现实世界实体的表达形式是不一样的,有可能不匹配,要考虑实体识别问题和属性冗余问题,从而将源数据在最低层上加以转换、提炼和集成。   1、实体识别   同名异义、异名同义、单位不统一   2、冗余项识别   数据集成往往导致数据冗余,如:   ①同一属性多次出现。   ②同一属性命名不一致导致重复。   有些冗余属性可以用相关分析检测。给定两个数值型的属性A和B,根据其属性值,用 相关系数 度量一个属性在多大程度上蕴含另一个属性。 数据变换   数据变换主要是对数据进行规范化处理,将数据转换成适当的形式,以适用于挖掘任务及算法的需要。 简单的函数变换   常见的函数变换有平方、开方、取对数、差分等。 $$\begin{array}{*{20}{l}} {{x^\prime } = {x^2}}\\ {{x^\prime } = \sqrt x }\\ {{x^\prime } = \log (x)}\\ {\nabla f

gdbt与adboost(或者说boosting)区别

拥有回忆 提交于 2020-05-07 00:03:23
boosting 是一种将弱分类器转化为强分类器的方法统称,而adaboost是其中的一种,或者说AdaBoost是Boosting算法框架中的一种实现 https://www.zhihu.com/question/37683881 gdbt(Gradient Boosting Decision Tree,梯度提升决策树) gbdt通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的 残差 基础上进行训练。 弱分类器一般会选择为CART TREE(也就是分类回归树)。由于上述高偏差和简单的要求 每个分类回归树的深度不会很深。最终的总分类器 是将每轮训练得到的弱分类器加权求和得到的(也就是加法模型)。 模型最终可以描述为:          模型一共训练M轮,每轮产生一个弱分类器 T ( x ; θ m ) 。弱分类器的 损失函数    看公式就知道其实每次学习的是T,即当前的那个分类器 F m − 1 ( x ) 为当前的模型,gbdt 通过经验风险极小化来确定下一个弱分类器的参数。具体到损失函数本身的选择也就是L的选择,有平方损失函数,0-1损失函数,对数损失函数等等。如果我们选择平方损失函数,那么这个差值其实就是我们平常所说的残差。 但是其实我们真正关注的,1.是希望损失函数能够不断的减小,2.是希望损失函数能够尽可能快的减小。所以如何尽可能快的减小呢?

python机器学习之随机森林

为君一笑 提交于 2020-05-05 23:01:21
#随机森林是集成学习的一种,基本的原理是在决策树的原理上加上随意boosting根据多种树的结果进行平均而得到回归,分类问题进行投票 在进行随机森林模型时需要对数据进行自采样从而达到与原数据集相同的数据, from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.datasets import make_moons x,y=make_moons(n_samples=100,noise=0.25,random_state=3)#对数据进行自采样boosting x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=0) forest=RandomForestClassifier(n_estimate=5,random_state=2)#对于模型不做参数调整 forest.fit(x_train,y_train print(forest.score(x_train,y_train)) print(forest.score(x_train,y_trian)) #对模型进行剪枝 forest=RandomForestClassifier

梯度提升树(GBDT)原理小结

三世轮回 提交于 2020-05-05 08:17:25
    在 集成学习之Adaboost算法原理小结 中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结。GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法,本文统一简称GBDT。GBDT在BAT大厂中也有广泛的应用,假如要选择3个最重要的机器学习算法的话,个人认为GBDT应该占一席之地。 1. GBDT概述     GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同。回顾下Adaboost,我们是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。     在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是$f_{t-1}(x)$, 损失函数是$L(y, f_{t-1

机器学习 -- 初识决策树

不打扰是莪最后的温柔 提交于 2020-05-04 20:04:45
决策树 一、概述 1. 分类问题的步骤 2. 决策树的优点 3. 决策树解决问题的一般方法 4. 决策树的3个步骤 5. 决策树的特点 二、决策树建模与学习 1. 什么是决策树 2. 决策树与if-then规则 3. 如何学习一个决策树 三、特征选择 1. 什么是特征选择 2. 熵 3. 条件熵 4. 信息增益 5. ID3算法 6. 信息增益比 四、决策树生成 1. ID3算法 五、决策树的剪枝(Decision tree pruning) 1. 理想的决策树 2. 决策树面临的问题 3. 解决方法:剪枝 4. 判断剪枝的好坏 5. 决策树剪枝算法 6. CART算法 总结 一、概述 决策树是一种典型的分类方法 首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。 本质上决策树是通过一系列规则对数据进行分类的过程。 1. 分类问题 的 步骤 (1)模型构建(归纳)通过对训练集合的归纳,建立分类模型。 (2)预测应用(推论)建立的分类模型,对测试集合进行测试。 2. 决策树的优点 (1)推理过程容易理解,决策推理过程可以表示成If Then形式; (2)推理过程完全依赖于属性变量的取值特点; (3)可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。 3. 决策树解决问题的一般方法 4. 决策树的3个步骤

数据挖掘——基于sklearn包的分类算法小结

ぃ、小莉子 提交于 2020-04-30 02:06:51
   目录 一、分类算法简介 二、KNN算法 三、贝叶斯分类算法 四、决策树算法 五、随机森林算法 六、SVM算法 一、分类算法简介 1、概念   1.1 监督学习(Supervised Learning)   从给定标注(训练集有给出明确的因变量Y)的训练数据集中学习出一个函数,根据这个函数为新数据进行标注。   1.2 无监督学习(Unsupervised Learning)   从给定无标注(训练集无明确的因变量Y)的训练数据中学习出一个函数,根据这个函数为所有数据标注。   1.3 分类 (Classification)   分类算法通过对已知类别训练数据集的分析,从中发现分类规则,以此预测新数据的类别, 分类算法属于监督学习 。 2、常用的分类算法 KNN算法(K-近邻分类算法) 贝叶斯算法 决策树算法 随机森林算法 SVM算法(支持向量机) 3、分类问题的验证方法 交叉验证(Cross Validation):训练集与测试集 K折交叉验证(K-fold Cross Validation) :设置k=10,那么我们把原来的数据集随机分为10份,分别为{D1,D2,D3...D10} 接着,使用D1作为测试集,{D2,D3...D10}作为训练集,计算得分S1 使用D2作为测试集,{D1,D3...D10}作为训练集,计算得分S2 ......... 最后