分类 人工智能 下的文章

决策树

决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。
决策树方法最早产生于上世纪60年代,到70年代末。由J Ross Quinlan提出了ID3算法,此算法的目的在于减少树的深度。但是忽略了叶子数目的研究。C4.5算法在ID3算法的基础上进行了改进,对于预测变量的缺值处理、剪枝技术、派生规则等方面作了较大改进,既适合于分类问题,又适合于回归问题。
决策树算法构造决策树来发现数据中蕴涵的分类规则.如何构造精度高、规模小的决策树是决策树算法的核心内容。决策树构造可以分两步进行。第一步,决策树的生成:由训练样本集生成决策树的过程。一般情况下,训练样本数据集是根据实际需要有历史的、有一定综合程度的,用于数据分析处理的数据集。第二步,决策树的剪枝:决策树的剪枝是对上一阶段生成的决策树进行检验、校正和修下的过程,主要是用新的样本数据集(称为测试数据集)中的数据校验决策树生成过程中产生的初步规则,将那些影响预衡准确性的分枝剪除。
目标:根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。决策树学习本质上是从训练数据集中归纳出一组分类规则。能对训练数据进行正确分类的决策树可能有多个,可能没有。在选择决策树时,应选择一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力;而且选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。 [1]
损失函数:通常是正则化的极大似然函数
策略:是以损失函数为目标函数的最小化
因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习通常采用启发式方法,近似求解这一最优化问题,得到的决策树是次最优(sub-optimal)的。
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。包含特征选择、决策树的生成和决策树的剪枝过程。
决策树算法的优点如下:
(1)分类精度高;
(2)生成的模式简单;
(3)对噪声数据有很好的健壮性。
因而是目前应用最为广泛的归纳推理算法之一,在数据挖掘中受到研究者的广泛关注
基本思想L
1)树以代表训练样本的单个结点开始。
2)如果样本都在同一个类.则该结点成为树叶,并用该类标记。
3)否则,算法选择最有分类能力的属性作为决策树的当前结点.
4)根据当前决策结点属性取值的不同,将训练样本数据集tlI分为若干子集,每个取值形成一个分枝,有几个取值形成几个分枝。匀针对上一步得到的一个子集,重复进行先前步骤,递4’I形成每个划分样本上的决策树。一旦一个属性出现在一个结点上,就不必在该结点的任何后代考虑它。
5)递归划分步骤仅当下列条件之一成立时停止:
①给定结点的所有样本属于同一类。
②没有剩余属性可以用来进一步划分样本.在这种情况下.使用多数表决,将给定的结点转换成树叶,并以样本中元组个数最多的类别作为类别标记,同时也可以存放该结点样本的类别分布,
③如果某一分枝tc,没有满足该分支中已有分类的样本,则以样本的多数类创建一个树叶。 [

词向量

词向量(Word embedding),又叫Word嵌入式自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。 从概念上讲,它涉及从每个单词一维的空间到具有更低维度的连续向量空间的数学嵌入。
生成这种映射的方法包括神经网络,单词共生矩阵的降维,概率模型,可解释的知识库方法,和术语的显式表示 单词出现的背景。
当用作底层输入表示时,单词和短语嵌入已经被证明可以提高NLP任务的性能,例如语法分析和情感分析。
思想向量是单词嵌入到整个句子甚至文档的扩展。一些研究人员希望这些可以提高机器翻译的质量。
为什么需要词向量?
众所周知,不管是机器学习还是深度学习本质上都是对数字的数字,Word Embedding(词嵌入)做的事情就是将单词映射到向量空间里,并用向量来表示
一个简单的对比
One-hot Vector
对应的词所在的位置设为1,其他为0;
例如:King, Queen, Man and Woman这句里面Queen对应的向量就是[0,1,0,0]
不足:难以发现词之间的关系,以及难以捕捉句法(结构)和语义(意思)之间的关系
Word2Vec
基本思想是把每个词表征为K维的实数向量(每个实数都对应着一个特征,可以是和其他单词之间的联系),将相似的单词分组映射到向量空间的不同部分。也就是Word2Vec能在没有人为干涉下学习到单词之间的关系。
举个最经典的例子:
king- man + woman = queen
实际上的处理是:从king提取了maleness的含义,加上了woman具有的femaleness的意思,最后答案就是queen.
借助表格来理解就是:
animal pet
dog -0.4 0.02
lion 0.2 0.35
比如,animal那一列表示的就是左边的词与animal这个概念的相关性
https://www.cnblogs.com/MartinLwx/p/10005520.html

百度自然语言处理接口

词法分析 分词、词性标注、专名识别
依存句法分析 自动分析文本中的依存句法结构信息
词向量表示 查询词汇的词向量,实现文本的可计算
DNN语言模型 判断一句话是否符合语言表达习惯
词义相似度 计算两个给定词语的语义相似度
短文本相似度 判断两个文本的语义相似度
中文分词 切分出连续文本中的基本词汇序列(已合并到词法分析接口)
词性标注 为自然语言文本中的每个词汇赋予词性(已合并到词法分析接口)

深度学习和机器学习的区别

首先看看机器学习的定义:
“A computer program is said to learn from experience E with respect to some class of tasksT and performance measureP if its performance at tasks inT, as measured by P, improves with experience E ”(这段话我真的是看了100遍才知道怎么断句啊!!(Д))
翻译过来就是:“一个电脑程序要完成任务(T),如果电脑获取的关于T的经验(E)越多就表现(P)得越好,那么我们就可以说这个程序‘学习’了关于T的经验。”
简单来说,就是解释什么叫“机器的学习”,如果输入的经验越多表现的越好,这就叫“学习”嘛。
我们首先浏览所有的历史风暴数据,从这些大量的数据中学习出某些“模式”,这些“模式”包含了具体的哪些条件可以导致风暴。
比如我们也许可以通过学习历史数据发现:温度超过40度,湿度在80-100之间,就容易发生风暴。种种类似的模式。
这里注意了!“温度”、“湿度”等等指标,就是机器学习中的“特征”,而这些特征都是人工设置好的!就是说,我们在做这样一个预测系统的时候,首先由专家通过分析哪些“特征”是重要的,然后机器就通过分析历史数据中的这些特征的数据,来找到相应的模式,也就是怎样的特征的组合会导致怎样的结果。
还是首先看看深度学习的定义:
“Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with each concept defined in relation to simpler concepts, and more abstract representations computed in terms of less abstract ones.”(这个起码听起来像人话,但还是让人疑惑。。。)
我试着翻译一下:深度学习是一种特殊的机器学习,它可以获得高性能也十分灵活。它可以用概念组成的网状层级结构来表示这个世界,每一个概念更简单的概念相连,抽象的概念通过没那么抽象的概念计算。(有没有大佬帮忙指正一下?)
2.识别狗和猫:
如果是传统机器学习的方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样等等。总之,我们首先要确定相应的“面部特征”作为我们的机器学习的特征,以此来对我们的对象进行分类识别。
而现在,深度学习的方法则更进一步。深度学习自动地找出这个分类问题所需要的重要特征!而传统机器学习则需要我们人工地给出特征!
5.运行时间
深度学习需要花大量的时间来训练,因为有太多的参数需要去学习。顶级的深度学习算法ResNet需要花两周的时间训练。但是机器学习一般几秒钟最多几小时就可以训练好。
但是深度学习花费这么大力气训练处模型肯定不会白费力气的,优势就在于它模型一旦训练好,在预测任务上面就运行很快。这才能做到我们上面看到的视频中实时物体检测。
6.可理解性
最后一点,也是深度学习一个缺点。其实也说不上是缺点吧,那就是深度学习很多时候我们难以理解。一个深层的神经网络,每一层都代表一个特征,而层数多了,我们也许根本就不知道他们代表的啥特征,我们就没法把训练出来的模型用于对预测任务进行解释。例如,我们用深度学习方法来批改论文,也许我们训练出来的模型对论文评分都十分的准确,但是我们无法理解模型到底是啥规则,这样的话,那些拿了低分的同学找你质问“凭啥我的分这么低啊?!”,你也哑口无言····因为深度学习模型太复杂,内部的规则很难理解。
但是机器学习不一样,比如决策树算法,就可以明确地把规则给你列出来,每一个规则,每一个特征,你都可以理解。
但是这不是深度学习的错,只能说它太牛逼了,人类还不够聪明,理解不了深度学习的内部的特征。
以上就是关于机器学习和深度学习的联系和区别了。首先说说感受吧,感觉很多国外的文章,尤其是这样的类似科普文章写的真心棒!很好理解,而且解释的非常详细,这是很多国内博客所不能比的。所以建议大家有问题可以多搜搜国外的文章读一读,而且其实英文也用的很简单。
https://www.analyticsvidhya.com/blog/2017/04/comparison-between-deep-learning-machine-learning/

基于用户标签的推荐系统

拿到了用户标签行为数据,相信大家都可以想到一个最简单的个性化推荐算法。这个算法的描述如下所示:
1)统计每个用户最常用的标签。
2)对于每个标签,统计被打过这个标签次数最多的物品。
3)对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门物品推荐给这个用户
未完待续

CMU博士Tom Murphy的人工智能超级马里奥

跑了一下CMU博士Tom Murphy的人工智能程序来玩任天堂的超级马里奥,虽然是2013年就出来了,但是还是很激动呀。
这是他本人的博客:http://radar.spacebar.org/
资源都在这个网上有:http://www.cs.cmu.edu/~tom7/mario/
在文章的最下边是论文链接、源程序和编译好的可执行文件。
论文链接:http://www.cs.cmu.edu/~tom7/mario/mario.pdf
源程序:http://sourceforge.net/p/tom7misc/svn/HEAD/tree/trunk/tasbot/
可执行程序:http://www.cs.cmu.edu/~tom7/mario/playfun.7z
解压playfun.7z压缩包,会看到这些程序

playfun7z

playfun7z


打开readme文档,看作者的步骤提示:
1、运行平台是win7 64位系统
2、FCEUX是必须的,录制视频和回放人工智能玩的游戏都是靠这个来播放的。下载链接:http://www.fceux.com/web/download.html FCEUX 2.2.3 win32 Binary
下载超级马里奥的nes文件,用FCEUX完超级马里奥的游戏,并且录制视频
3、创建一个config.txt文件,文件内容包括下边三行文件:

game mario
movie me-playing-mario.fm2
moviename me-playing-mario.fm2

PS:readme文件是这么写的: Modify config.txt to contain e.g. 英文不好,理解为修改一个config.txt文件了,找了半天没找到,哎。其实是自己创建,后来在radar.spacebar.org/f/a/weblog/comment/1/1097 看到别人的评论里详细解释了这个步骤才得以解决。
4、记得在当前目录下有一个叫“mario.nes”的文件,还有录制好的视频命名为“me-playing-mario.fm2”,如下图:

nes

nes


5、点击ansicon.exe 在命令行里运行learnfun.exe 这个应该很快就运行完了
6.运行
playfun.exe –helper 8000
playfun.exe –helper 8001
….
playfun.exe –helper 8005
PS:根据机器配置选择合适的运行个数,否则机器会卡死。还有这个需要的时间特别长,据作者说几分钟的的视频需要运行好多天。我只启动了两个进程。
6、当所有的helper都输出ready,就可以跑主程序了 playfun.exe –master 8000 8001
7.最后会输出mario-playfun-backtrack-269-replacement.fm2文件,再用FCEUX就可以看到了。
mario

mario


这是用程序自己玩马里奥的视频,大概耗时24小时: