softmax分类会受到类别人为什么会心理不平衡衡的影响吗

短文本分类小结
背景:文本分类技术汇总:因为公司需求,开始探索文本挖掘技术在通信行业方面的应用,现将过程中常用的技术和原理更新如下。文本分类方法经过长期的研究在很多场景下已经得到了应用,但是短文本分类问题起步较晚,且一直也没有什么通用的,效果良好的方法,短文本分类的重点在特征处理环节和分类算法上面。因为其存在两个问题,1、短文本提供的词语少,提供的有效信息有限。2、根据分词结果构建的词频或者特征矩阵通常十分稀疏,大多数算法在处理稀疏矩阵问题时候,效果都不好。常用的处理短文本的方法基本可分为两类:一类是基于某种规则改进分类过程,优化改进模型;另一类是基于外部语义信息扩充短文本信息量,从而提高分类效果。下面讲述探索过程中的用到的技术及其原理:文本挖掘传统方法讲述常见流程:一:分词1、常用中文分词工具:jieba、SnowNLP(MIT)、pynlpir、thulac在文本探索中主要用到了jieba库,所以下面主要对jieba库进行讲述,jieba分词是国内程序员开发的一款非常好用的开源中文分词的库。原理讲述:首先,基于词的前缀集合结构实现高效的词图扫描,生成句子汉字所有可能成词情况所构成的有向无环图其次,采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合最后, 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法用法试例:# encoding=utf-8import jiebaseg_list = jieba.cut("我来到北京清华大学", cut_all=True)print("Full Mode: " + "/ ".join(seg_list))
# 全模式seg_list = jieba.cut("我来到北京清华大学", cut_all=False)print("Default Mode: " + "/ ".join(seg_list))
# 精确模式seg_list = jieba.cut("他来到了网易杭研大厦")
# 默认是精确模式print(", ".join(seg_list))seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
# 搜索引擎模式print(", ".join(seg_list))输出:【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学【精确模式】: 我/ 来到/ 北京/ 清华大学【新词识别】:他, 来到, 了, 网易, 杭研, 大厦
(此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造分词的话就根据具体场景来确定了,通常来说在分词的过程中,还需要不断的更新词库和停词库。构建词库的时候有一些小原则,就是在分词过程中有一些领域常见词可能不会被正确划分,这时候就需要对其进行一个整理,将一些奇怪的分词结果变成合理的词放进词库中,比如流量包,加餐包,分词结果经常为“流量,包”,“加餐,包”,但是其实将其放在一起才是一个领域的词,应该把他们加入到词库当中。如果想了解结巴库的具体原理过程可以查看帖子:https://www.cnblogs.com/baiboy/p/jieba2.html2、去除停用词这个主要需要导入并构建停用词表,然后删除分词结果中停用词表中的词。简单说就是删除一些语气词了,这些词语并不能有效的代表句子的特征。3、特征提取中文分词和去除停用词后,需要对分词结果进行文本特征提取,常用的传统方法有:TFIDF,信息增益法,词频法,X^2统计法,互信息等等。探索过程中,主要用到了TFIDF和信息增益的特征提取方法,所以主要讲述TFIDF,信息增益的原理的代码实现。 TF-IDF技术采用一种统计方法,根据字词的在文本中出现的次数和在整个语料中出现的文档频率来计算一个字词在整个语料中的重要程度。简单说就是通过词频乘以逆文档频率的乘积来计算该词语在语料中的重要程度,更简单的说就是“我”(指一片文章)有很多这个词,“你们”(指其他文档)没有这个词,那么这个词在这篇文档里面的TFIDF值就很大。详见https://flystarhe.github.io//tf-idf/信息增益IG的是通过信息论的思想,如果该词语能在语料中能够带来更多的信息的话,该词语的信息增益就越大。那么相对来说就越重要。from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
if __name__ == "__main__":
corpus=["我 来到 北京 清华大学",#第一类文本切词后的结果,词之间以空格隔开
"他 来到 了 网易 杭研 大厦",#第二类文本的切词结果
"小明 硕士 毕业 与 中国 科学院",#第三类文本的切词结果
"我 爱 北京 天安门"]#第四类文本的切词结果
vectorizer=CountVectorizer()#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
transformer=TfidfTransformer()#该类会统计每个词语的tf-idf权值
tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第一个fit_transform是计算tf-idf,第二个代码中有一个地方需要注意,此时变量tfidf是使用稀疏矩阵的存储方式来节省内存,如果需要得到矩阵形式的表示的话,需要使用tfidf.toarray()来获得,当数据量特别大的时候慎用,很容易内存就爆了。IG的代码就不放上来了。见这个帖子就好了http://eip.teamshub.com/t/3313542。有一个小点说明下,帖子中附的论文使用TFIDFIG来改善效果,但是在短文本情况下效果不大。因为通常来说得到的特征矩阵过于稀疏,简单说是本来TFIDF矩阵中很多都是零。你再乘个IG(特征词的信息增益)的值,也还是零,对结果影响不大。代码的实现也可以使用gensim库实现,gensim是一个非常完备的文本相关的Python库。地址https://radimrehurek.com/gensim/3、这时候样本特征矩阵就构建好了,可以使用一些传统的分类器进行分类预测了,比如LR,NB,SVM,RF等等。下面写一个logistics的例子,其他的类似,就是参数选择不同而已,可以查看sklearn官方文档的用法:实例:#导入数据集划分,LR模型以及评价指标模块from sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import classification_report划分数据集合,比例为8:2,随机数种子设置为10,X代表构建的训练样本,Y是标签X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2,
random_state=10)#训练LR模型,并进行预测logreg = LogisticRegression()logreg.fit(X_train, Y_train)Y_pred = logreg.predict(X_test)打印评价报告,因为这是多分类问题,所以评价指标使用不同类别的准确率,召回率和F指标。因为如果采用平均指标来评价的话可能会被误导,如果存在类别不平衡问题的时候,使用平均指标会影响对结果的判断。有些少量的样本类别,也许根据就不会被模型预测出来,如果真的训练样本不平衡的话,可以考虑将这部分少量样本直接作为异常检测,后面人工校对。print(classification_report(Y_test, Y_pred))3、其他的算法也类似,就是要注意在使用算法时候的参数的选择与设置,不同参数的物理意义,如何进行调优,这些参见官方文档,通常来说可以使用GridSearchCV()函数来网格搜索最优参数。以上过程是使用传统方法的一个简单介绍,但是传统方法面临着一个问题,就是传统方法来进行短文本特征提取的时候经常会遇到矩阵十分稀疏的问题,针对这类问题,传统分类器的表现将受到一定的影响。所以可以考虑引入word embedding思想,将词嵌入到空间中,找到词与词之间的关系,而不是简单的将词作为一个个独立的样本来看待,来解决矩阵稀疏的问题,同时也打破了原一个个词独立的情况。文本挖掘引入词嵌入思想方法讲述1、主要概念:新方法和传统方法的主要区别就是新方法引入了word embedding的思想。简单说就是打破了原版传统方法把一个个特征词作为独立特征的情况,原传统方法的处理,将一个个分词结果作为一个个特征词来处理,其实默认假设了词之间的独立。但其实现实中的语句中,词之间通常是存在一定的联系的。1986年HINTON第一次提出了词的分布式表示,将词作为一个个等长的向量来表示。2003年Bengio《A Neural Probabilistic Language Model》的文章提出了神经网络语言模型,可以词进行分布式表示,将一个个词表示为等长的向量,用于后续的语义分析。但是由于其提出的网络结构存在隐层,且在处理多个输入词的投影层中采用了拼接的方式,导致向量长度过长,进行网络参数学习的BP时计算量偏大。所以在2013年Google 的 Tomas Mikolov 在《Efficient Estimation of Word Representation in Vector Space》提出了word2vec,对其进行了改进,提出了一个简单的三层神经网络,是一种语言模型的浅层神经网络表示方式。主要区别是在输入理多个层处词向量时采用的是相加的方式,这样使得向量的长度急剧减少,而且在输出层采用了根据词频构建的霍夫曼树作为输出,切高频词位于树的浅层,可以有限减少寻找次数,采用霍夫曼树+softmax层作为加速技巧,使得训练速度加快了很多。本地测试过程,在语料不大的情况下,训练时间都小于5分钟。当然其也存在一定的问题,就是越简单的模型就越需要更多的数据,才能表现的更好,而复杂的模型可以在小数据上表现不错。所以该方法,通常在大量预料下能表现不凡。之后更是开源了该项目,为文本分析提供了强大的工具。通过gensim也可以高效的调用word2vec方法,通过word2vec可以学习到词的表达方法,处理之后每一个词可以表示为一个个同维的向量。word2vec的学习方法主要有两种,分别是CBOW和Skip-Gram,简单说就是CBOW方法是通过上下文来推断出这个词的表达,Skip-Gram则相反,是通过这个的词来推断他的上下文。详见http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf和http://blog.csdn.net/wangyangzhizhou/article/details/https://zhuanlan.zhihu.com/p/https://www.zybuluo.com/Dounm/note/591752实例:#导入word2vec模块from gensim.models import Word2Vec#训练word2vec模型model = Word2Vec(LineSentence('word2vec.txt'),min_count=1,size=200,iter=10)#获取每个词和其表征向量w2v = dict(zip(model.wv.index2word, model.wv.syn0))通常来说在该方法在大量语料的时候能获得更好的效果,word2vec.txt是每条记录的分词结果,分词结果用空格隔开,每条记录用回车区分,如:踢 下线 国际社区支局合同号 推送 电子发票 可否 天宫殿支局回不了笼 普子支局在训练之后,可以先把模型保存下来再导入,如:model.save('word2vec')model = Word2Vec.load('word2vec')在获得了每个词的词向量表达之后主要就是要通过不同的方法来构建句向量了,各种不同方法的讨论可以见论文《基于机器学习的汉语短文本分类方法研究与实现 》,文章中引入了深度学习中pooling层的方法,将处理之后的句向量可以作为特征尝试使用传统的分类器进行学习,也可以导入LSTM等深度学习模型进行尝试。fasttext也是一个用于文本挖掘的库,作者和word2vec是同一个人。fasttext相当于是在word2vec的CBOW训练的词向量的基础上加了一个,softmax层来计算得出各类别的概率,最后得出所属类别。fasttext可以参见资料:《Bag of Tricks for Efficient Text Classification》和一些CSDN上的相关博客2、深度学习方法使用深度学习的方法来做文本分类网上也很多资料了。CNN 和RNN都可以做,如果把一个一个词看成存在某种时序,序列的一种数据的输入。使用RNN来做是比较好的,其可以通过memory cell来捕获上一时刻和当前时刻的信息,大部分实验结果也表明在文本上面RNN表现更佳。而在RNN网络中可以考虑使用LSTM来进行模型的训练,当然具体还要看实际的业务场景。—————————
短文本分类
短文本分类工具 TextGrocery
文本分类特征提取之Word2Vec
深度学习Attention机制在短文本分类上的应用——qjzcy的博客
短文本分类概述
短文本分类总结
TextGrocery短文本分类使用
没有更多推荐了,http://blog.csdn.net/weixin_/article/details/
想必通过前一篇的介绍,各位小主已经对word2vec以及CBOW和Skip-gram有了比较清晰的了解。在这一篇中,小编带大家走进业内最新潮的文本分类算法,也就是fastText分类器。fastText与word2vec的提出者之所以会想到用fastText取代CNN(卷积神经网络)等深度学习模型,目的是为了在大数据情况下提高运算速度。&其实,文本的学习与图像的学习是不同的。学习不同,一般情况下,文本学习并不需要过多隐藏层、过复杂的神经网络,为什么这么说呢?打个比方,有这样一句话:“柯南是个聪明的帅哥”,如果让你去学习理解这句话,听上二三十次次与听上两三次相比,对于这句话的理解可能也没有什么提升,就模型而言,不需要过复杂的神经网络就可以很好的对这句话进行学习,然而图像不同,如果让你临摹一个大师的化作,你第一次临摹可能是个四不像,但第一万次临摹,可能就会以假乱真了。所以,用简单的网络对自然语言进行学习,可以快速、高质量的得到结果。正因如此,才有了fastText算法。&言归正传,我们开始fastText算法的深入了解,这篇文章主要从三个方面来介绍算法:模型架构、分层softmax、n-gram特征。在算法原理介绍完毕后,同上一篇文章一样,会带领各位小主实现fastText算法的应用,迫不及待了吧?
为了更好的理解fastText,我们先来了解一些预备知识。第一个是BoW模型,也叫做词袋模型。BoW模型(Bag of words)应用于自然语言处理、信息检索和图像分类等方面。它忽略掉文本的语法和语序等要素(举个例子,Bow模型认为“我爱你”和“你爱我”是相同的,如果我们的世界是一个BoW模型该有多好,再也不会出现对女神单相思的情况了),将其仅仅看作是若干词汇的集合。BoW 使用一组无序的单词(word)来表达一段文字或一个文档,并且文档中每个单词的出现都是独立的。
例如:首先给出两个简单的文本文档如下:&John likes to watch movies. Mary likes too.&John also likes to watch football games.
基于上述两个文档中出现的单词,构建如下一个词典 (dictionary):&
{“John”: 1, “likes”: 2,”to”: 3, “watch”: 4, “movies”: 5,”also”: 6, “football”: 7, “games”: 8,”Mary”: 9, “too”: 10}
上面的词典中包含10个单词, 每个单词有唯一的索引, 那么每个文本我们可以使用一个10维的向量来表示,向量中的元素是词典中对应的词语出现的频数。如下所示:
[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]&[1, 1,1, 1, 0, 1, 1, 1, 0, 0]
该向量与原来文本中单词出现的顺序没有关系,而是词典中每个单词在文本中出现的频数。
第二个要介绍的是名为“霍夫曼树”的数据结构,fastText的速度快,且不会受到不平衡分类问题影响的关键因素就是这个数据结构。
霍夫曼编码树,又称最优二叉树。是一类带权路径长度最短的树。假设有n个权值{w1,w2,…,wn},如果构造一棵有n个叶子节点的二叉树,而这n个叶子节点的权值是{w1,w2,…,wn},则所构造出的带权路径长度最小的二叉树就被称为霍夫曼树。
带权路径长度:如果在一棵二叉树中共有n个叶子节点,用Wi表示第i个叶子节点的权值,Li表示第i个叶子节点到根节点的路径长度,则该二叉树的带权路径长度:
WPL=W1*L1+W2*L2+...Wn*Ln
霍夫曼树的构建步骤如下:&(1)将给定的n个权值看做n棵只有根节点(无左右孩子)的二叉树,组成一个集合HT,每棵树的权值为该节点的权值。&(2)从集合HT中选出2棵权值最小的二叉树,组成一棵新的二叉树,其权值为这2棵二叉树的权值之和。&(3)将步骤2中选出的2棵二叉树从集合HT中删去,同时将步骤2中新得到的二叉树加入到集合HT中。&(4)重复步骤2和步骤3,直到集合HT中只含一棵树,这棵树便是霍夫曼树。
感觉还云里雾里?没关系,小编来举个简单的例子你就明白了。假设给定如图1的四个带权重的节点A—D,结点下方为其对应的权重。
感觉还云里雾里?没关系,小编来举个简单的例子你就明白了。假设给定如图1的四个带权重的节点A—D,结点下方为其对应的权重。&
首先选出权重最小的两个节点作为图2中新树的左右子树(新树即右侧由6、C、A组成的树),新树根节点权重为其左右子树权重之和(即1+5=6)。&
然后重复前一操作,从剩余结点中选出最小的,与前一个树的根节点组成新树的左右结点,如图3所示,新的根节点权重为其两个子结点之和(10+6=16)。&
在重复前面的操作,得到图4的最终树。
fastText的霍夫曼树叶子结点对应为最终的label,可以看到,权重最大的,也就是权重最大的label,其深度最小,fastText 充分利用了这个性质,使得其速度得以提升。&
Huffman编码(霍夫曼编码):&对每个字符设计长度不等的编码,让出现较多的字符采用尽可能短的编码。利用霍夫曼树求得的用于通信的二进制编码称为霍夫曼编码。&树中从根结点到每个叶子节点都有一条路径,对路径上的各分支约定指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为各个叶子节点对应的字符编码,即是霍夫曼编码。以前面的例子为例,各路径上的编码如图5所示。故A结点的编码应当为111,B为10,C为110,D为0。D是权重最大的结点,换言之也就是出现最多的结点,其编码最短,只有一个0,而权重最小的结点是A,其编码为111,这样的编码方式完成了我们对节点编码的需求。&
fastText模型架构
fastText算法是一种有监督的模型,与《前篇》中的CBOW架构很相似,其结构如图6所示。《前篇》中的CBOW,通过上下文预测中间词,而fastText则是通过上下文预测标签(这个标签就是文本的类别,是训练模型之前通过人工标注等方法事先确定下来的)。如果小主在上一篇文章中已经对CBOW了解透彻了,可能到这里你已经觉得fastText并没有什么新鲜玩意儿。事实确实如此,从模型架构上来说,沿用了CBOW的单层神经网络的模式,不过fastText的处理速度才是这个算法的创新之处。
fastText模型的输入是一个词的序列(一段文本或者一句话),输出是这个词序列属于不同类别的概率。在序列中的词和词组构成特征向量,特征向量通过线性变换映射到中间层,再由中间层映射到标签。fastText在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。
图 6 展示了一个有一个隐藏层的简单模型。第一个权重矩阵w_1可以被视作某个句子的词查找表(词表查找是啥来着?去看看《前篇》中的那个矩阵相乘你就想起来了)。词表征被平均成一个文本表征,然后其会被馈送入一个线性分类器。这个构架和《前篇》介绍的CBOW模型相似,只是中间词(middle word)被替换成了标签(label)。该模型将一系列单词作为输入并产生一个预定义类的概率分布。我们使用一个softmax方程来计算这些概率。当数据量巨大时,线性分类器的计算十分昂贵,所以fastText使用了一个基于霍夫曼编码树的分层softmax方法。常用的文本特征表示方法是词袋模型,然而词袋(BoW)中的词顺序是不变的,但是明确考虑该顺序的计算成本通常十分高昂。作为替代,fastText使用n-gram获取额外特征来得到关于局部词顺序的部分信息,后文将详细介绍。&
层次softmax
Facebook声称fastText比其他学习方法要快得多,能够训练模型“在使用标准多核CPU的情况下10分钟内处理超过10亿个词汇”,特别是与深度模型对比,fastText能将训练时间由数天缩短到几秒钟。这样的速度取决于什么呢?模型架构上并没有什么本质革新,接下来就带你“上高速”~
softmax函数
上一篇,我们已经介绍了这个函数。softmax函数实际是一个归一化的指数函数:&
σ(z)j=ezj∑Kk=1ezk
而softmax把一个k维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中bi是一个0-1的常数,然后可以根据bi的大小来进行多分类的任务,如取权重最大的一维。
分层softmax(Hierarchical softmax)
分层softmax的目的是降低softmax层的计算复杂度。&二叉树。Hierarchical softmax本质上是用层级关系替代了扁平化的softmax层,如图1所示,每个叶子节点表示一个词语(即霍夫曼树的结构)。&
图7 Hierarchical softmax
我们可以把原来的softmax看做深度为1的树,词表V中的每一个词语表示一个叶子节点。如果把softmax改为二叉树结构,每个word表示叶子节点,那么只需要沿着通向该词语的叶子节点的路径搜索,而不需要考虑其它的节点。这就是为什么fastText可以解决不平衡分类问题,因为在对某个节点进行计算时,完全不依赖于它的上一层的叶子节点(即权重大于它的叶结点),也就是数目较大的label不能影响数目较小的label(即图5中B无法影响A和C)。
平衡二叉树的深度是log2(|V|),因此,最多只需要计算log2(|V|)个节点就能得到目标词语的概率值。hierarchical softmax定义了词表V中所有词语的标准化概率分布。
具体说来,当遍历树的时候,我们需要能够计算左侧分枝或是右侧分枝的概率值。为此,给每个节点分配一个向量表示。与常规的softmax做法不同,这里不是给每个输出词语w生成词向量v_w^’,而是给每个节点n计算一个向量〖v?n?’〗。总共有|V|-1个节点,每个节点都有自己独一无二的向量表示,H-Softmax方法用到的参数与常规的softmax几乎一样。于是,在给定上下文c时,就能够计算节点n左右两个分枝的概率:&
p(right|n,c=σ(hTvnT))
上式与常规的softmax大致相同。现在需要计算h与树的每个节点的向量v_n^’的内积,而不是与每个输出词语的向量计算。而且,只需要计算一个概率值,这里就是偏向n节点右枝的概率值。相反的,偏向左枝的概率值是1- p(right│n,c)。
图8 Hierarchical softmax的计算过程(来自Hugo Lachorelle的YouTube课件)
如图8所示,为了方便理解,这里的叶子节点给出的依然是词语,也就是CBOW的架构,fastText是相同的道理,只是将叶子节点替换为label即可。假设已知出现了词语“the”、“dog”、“and”、“the”,则出现词语“cat”的概率值就是在节点1向左偏的概率值、在节点2向右偏的概率以及在节点5向右偏的概率值的乘积。
值得注意的是,此方法只是加速了训练过程,因为我们可以提前知道将要预测的词语(以及其搜索路径)。在测试过程中,被预测词语是未知的,仍然无法避免计算所有词语的概率值。&向量表示该节点的搜索路径,词语“cat”的向量就是011。上文中提到平衡二叉树的深度不超过log2(|V|)。若词表的大小是|V|=10000,那么搜索路径的平均长度就是13.3。
常用的特征是词袋模型,在第一部分小编已经介绍过词袋模型了。词袋模型不考虑词之间的顺序,因此 fastText 还加入了 N-gram 特征。“我爱你”的特征应当是“我”、“爱”、“你”。那么“你爱我”这句话的特征和“我爱你”是一样的,因为“我爱你”的bag(词袋)中也是只包含“你”、“爱”、“我”。
还是那句话——“我爱你”:如果使用2-gram,这句话的特征还有 “我-爱”和“爱-你”,这两句话“我爱你”和“你爱我”就能区别开来了,因为“你爱我”的2-gram的特征还包括“你-爱”和“爱-我”,这样就可以区分“你爱我”和“我爱你”了。为了提高效率,实务中会过滤掉低频的 N-gram。否则将会严重影响速度。&在fastText 中一个低维度向量与每个单词都相关。隐藏表征在不同类别所有分类器中进行共享,使得文本信息在不同类别中能够共同使用。这类表征被称为词袋(bag of words)(此处忽视词序)。在 fastText中也使用向量表征单词 n-gram来将局部词序考虑在内,这对很多文本分类问题来说十分重要。
fastText算法实现
这里提醒读者,fastText在Python2和Python3中都可以使用,已有了现成的包,但只支持Linux和mac系统,windows暂时还不支持fastText。本例使用的环境是linux-ubuntu16.04+Python3+JupyterNotebook的组合,读者当然可以使用其他IDE或是使用Python2,都是完全没有问题的。只需要在终端使用语句pip install fasttext(Python2)或是pip3 install fasttext进行安装即可。
我们使用的语料是清华大学的新闻文本(数据比较大,可以在进行下载),这里不在详细介绍分词过程,与《前篇》中的过程基本是一致的。可以直接到和下载处理好的训练集和测试集(处理后的数据形式为词与词之间用空格分开,词语与标签默认用label分隔),如图9所示。
图9 分词后数据样例
使用logging可以查看程序运行日志。fasttext.supervised()的第一个参数为训练集,即用来拟合模型的数据,第二个参数为模型存储的绝对路径,第三个为文本与标签的分隔符;训练好模型后通过load_model加载模型,对训练集使用test方法则可以在测试集上使用模型,则会得到模型在测试集上的准确率和召回率,可以看到模型的准确率和召回率是非常高的,而且对于这个近400Mb的训练集,拟合模型只花费了60秒左右(小编的电脑为8GB内存),速度是非常可观的。
图10 建立模型
fastText算法通过了两篇的讲解,相比聪明的你已经掌握了算法原理,关于fastText算法到这里就要告一段落了,熟悉了原理和思想,接下来小主可以去找些有趣的文本做一些有趣的事情了,与fastText一起飚车吧!
阅读(...) 评论()想转行人工智能?机会来了!!!
一个坏消息:
2018年1月 教育部印发的《普通高中课程方案和语文等学科课程标准》新加入了数据结构、人工智能、开源硬件设计等 AI 相关的课程。
这意味着职场新人和准备找工作的同学们,为了在今后十年内不被淘汰,你们要补课了,从初中开始。
一个好消息:
人工智能尖端人才远远不能满足需求。行业风口的人工智能,在中国人才缺口将超过500万人,而中国人工智能人才数量目前只有5万(数据来自工信部教育考试中心)。
并且目前岗位溢价相当严重,2017年人工智能在互联网岗位薪酬中位列第三,月薪20.1k,如果按照普遍的16月薪酬计算,那么人工智能在2017年一年的薪酬就是2.01*16=32.16万。那么再来看一组2018的薪酬数据:
所以如果你对自己的专业/工作不满意,现在正是进入人工智能领域学习就业/转业的最佳时机。
在面对众多的数学知识和编程知识里,自学会让大家耗费大量的时间金钱。因此,云博士(美国哈佛大学博士后 && 浙江大学博士)领衔的人工智能博士团队开发推出了人工智能机器学习365天特训营(第二期)
为了保证大家的学习效果和就业情况,幂次学院提供4项课程服务,从发展历程、概念、基本名词、术语、评估方法讲起,到算法模型与实战演练:
1、名校大牛讲师授课:云博士(美国哈佛大学博士后 && 浙江大学博士)授课;
2、365天的系统学习周期:直播学习,4年内随时随地回看直播,在线答疑;
3、优质的答疑服务:全天24小时课程问答与社群交流服务,让你的每一个问题都能够得到解答,课程资料随时下载。
4、颁发培训结业证书:通过幂次学院的阶段测试和毕业测试,并颁发幂次学院人工智能培训结业证书。
合计365+天,每周两次直播,365天130+小时(理论+6个企业级项目实战)课程(讲师直播答疑,课程7*24小时问答服务,学院社群7*24小时交流,课程资料随时下载)
购买课程另赠送2门辅助课程:
1. 现在报名免费赠送售价899元的 机器学习之Python编程基础与数据分析 课程,课程内容由清华大学python大牛主讲,课程内容包括:python基础,python数据分析,python机器学习基础与python在机器学习中的实践案例。
2. 现在报名免费赠送售价899元的 人工智能数学基础8天集训营 课程,由中国科学院计算技术研究所博士团队主讲,课程内容包括:矩阵论基础,概率与信息论,数值计算三部分。
助力您解决人工智能学习中所需要用到的数学知识、Python编程知识。
立即开始体系化学习,所有知识一步到位!
直播 + 回放:合计365+天,每周二19:00-20:00,20:00-21:00开课,直播回放4年内随时随地回看。
讲师团队介绍:
云博士:美国哈佛大学大数据分析方向博士后,浙江大学计算机科学与技术专业博士,曾任华为高级软件工程师/项目经理
发明专利多项,软件著作权多项,国际重要期刊论文数十篇,国家及省部级项目多项,横向项目数十项。
张博士:中国科学院计算技术研究所机器学习方向博士
专注于人机交互、机器学习等领域研究。曾在国内外知名会议期刊发表多篇论文,并荣获人工智能领域会议“最佳论文提名奖”,目前拥有国家发明专利2项、软件著作权1项。拥有机器学习、数据挖掘领域实战经验,曾参与项目:
1、面向病症的多模态在线预警方法研究—国家自然科学基金;
2、基于人机交互技术的安全驾驶映射系统—国家国际科技合作专项;
3、散发性病症风险基因图谱与预警评估方法研究—北京市科学技术委员会北京脑科学研究项目;
4、广东省大数据科学中心项目“基于多模态大数据的复杂疾病临床诊断标准及应用”—广东省科技计划项目NSFC等国家级项目。
李金老师:清华大学机器学习方向本硕双清华毕业生,阿里巴巴机器学习方向算法工程师
研究方向为:推荐系统,计算机视觉,自然语言处理,深度学习等,在TNNLS,PR等杂志上发表过多篇论文,著有《自学Python—编程基础科学计算及数据分析》一书,Python笔记3K+Star,知乎python及机器学习板块12K+ zan,幂次学院签约讲师。
附:机器学习365天特训营 - 课程大纲:
第一部分 基础篇
1.2 基本术语
1.3 假设空间
1.4 归纳偏好
1.5 发展历程
1.6 应用现状
第2章 模型评估与选择
2.1 经验误差与过拟合
2.2 评估方法
2.2.1 留出法
2.2.2 交叉验证法
2.2.3 自助法
2.2.4 调参与最终模型
2.3 性能度量
2.3.1 错误率与精度
2.3.2 查准率、查全率与F1
2.3.3 ROC与AUC
2.3.4 代价敏感错误率与代价曲线
2.4 比较检验
2.4.1 假设检验
2.4.2 交叉验证t检验
2.4.3 McNemar检验
2.4.4 Friedman检验与后续检验
2.5 偏差与方差
第3章 线性模型
3.1 基本形式
3.2 线性回归
3.3 对数几率回归
3.4 线性判别分析
3.5 多分类学习
3.6 类别不平衡问题
第4章 决策树
4.1 基本流程
4.2 划分选择
4.2.1 信息增益
4.2.2 增益率
4.2.3 基尼指数
4.3 剪枝处理
4.3.1 预剪枝
4.3.2 后剪枝
4.4 连续与缺失值
4.4.1 连续值处理
4.4.2 缺失值处理
4.5 多变量决策树
第5章 神经网络
5.1 神经元模型
5.2 感知机与多层网络
5.3 误差逆传播算法
5.4 全局最小与局部极小
5.5 其他常见神经网络
5.5.1 RBF网络
5.5.2 ART网络
5.5.3 SOM网络
5.5.4 级联相关网络
5.5.5 Elman网络
5.5.6 Boltzmann机
5.6 深度学习
第6章 支持向量机
6.1 间隔与支持向量
6.2 对偶问题
6.3 核函数
6.4 软间隔与正则化
6.5 支持向量回归
6.6 核方法
第7章 贝叶斯分类器
7.1 贝叶斯决策论
7.2 极大似然估计
7.3 朴素贝叶斯分类器
7.4 半朴素贝叶斯分类器
7.5 贝叶斯网
7.5.1 结构
7.5.2 学习
7.5.3 推断
7.6 EM算法
第8章 集成学习
8.1 个体与集成
8.2 Boosting
8.3 Bagging与随机森林
8.3.1 Bagging
8.3.2 随机森林
8.4 结合策略
8.4.1 平均法
8.4.2 投票法
8.4.3 学习法
8.5 多样性
8.5.1 误差--分歧分解
8.5.2 多样性度量
8.5.3 多样性增强
第9章 聚类
9.1 聚类任务
9.2 性能度量
9.3 距离计算
9.4 原型聚类
9.4.1 k均值算法
9.4.2 学习向量量化
9.4.3 高斯混合聚类
9.5 密度聚类
9.6 层次聚类
第10章 降维与度量学习
10.1 k近邻学习
10.2 低维嵌入
10.3 主成分分析
10.4 核化线性降维
10.5 流形学习
10.5.1 等度量映射
10.5.2 局部线性嵌入
10.6 度量学习
第二部分 进阶篇
第11章 特征选择与稀疏学习
11.1 子集搜索与评价
11.2 过滤式选择
11.3 包裹式选择
11.4 嵌入式选择与L_1正则化
11.5 稀疏表示与字典学习
11.6 压缩感知
第12章 计算学习理论
12.1 基础知识
12.2 PAC学习
12.3 有限假设空间
12.3.1 可分情形
12.3.2 不可分情形
12.5 Rademacher复杂度
12.6 稳定性
第13章 半监督学习
13.1 未标记样本
13.2 生成式方法
13.3 半监督SVM
13.4 图半监督学习
13.5 基于分歧的方法
13.6 半监督聚类
第14章 概率图模型
14.1 隐马尔可夫模型
14.2 马尔可夫随机场
14.3 条件随机场
14.4 学习与推断
14.4.1 变量消去
14.4.2 信念传播
14.5 近似推断
14.5.1 MCMC采样
14.5.2 变分推断
14.6 话题模型
第15章 规则学习
15.1 基本概念
15.2 序贯覆盖
15.3 剪枝优化
15.4 一阶规则学习
15.5 归纳逻辑程序设计
15.5.1 最小一般泛化
15.5.2 逆归结
第16章 强化学习
16.1 任务与奖赏
16.2 K-摇臂赌博机
16.2.1 探索与利用
16.2.2 ε-贪心
16.2.3 Softmax
16.3 有模型学习
16.3.1 策略评估
16.3.2 策略改进
16.3.3 策略迭代与值迭代
16.4 免模型学习
16.4.1 蒙特卡罗强化学习
16.4.2 时序差分学习
16.5 值函数近似
16.6 模仿学习
16.6.1 直接模仿学习
16.6.2 逆强化学习
第17章 增量学习
17.1 被动攻击学习
17.1.1 梯度下降量的抑制
17.1.2 被动攻击分类
17.1.3 被动攻击回归
17.2 适应正则化学习
17.2.1 参数分布的学习
17.2.2 适应正则化分类
17.2.3 适应正则化回归
17.3 增量随机森林
第18章 迁移学习
18.1 迁移学习简介
18.1.1 什么是迁移学习
18.1.2 迁移学习VS传统机器学习
18.1.3 应用领域
18.2 迁移学习的分类方法
18.2.1 按迁移情境
18.2.2 按特征空间
18.2.3 按迁移方法
18.3 代表性研究成果
18.2.1 域适配问题
18.2.2 多源迁移学习
18.2.3 深度迁移学习
第19章 主动学习
19.1 主动学习简介
19.2 主动学习思想
19.3 主动学习VS半监督学习
19.4 主动学习VS Self-Learning
第20章 多任务学习
20.1 使用最小二乘回归的多任务学习
20.2 使用最小二乘概率分类器的多任务学习
20.3 多次维输出函数的学习
第三部分 实战篇
第21章 机器学习应用场景介绍
21.1 机器学习经典应用场景
21.2 头脑风暴:挖掘身边的应用场景
第22章 数据预处理
22.1 数据降噪
22.2 数据分割
第23章 特征提取
23.1 时域特征
23.2 频域特征
23.3 自动特征提取
第24章 机器学习方法应用
24.1 应用机器学习方法之前的处理
24.2 使用机器学习分类
24.3 机器学习调参
24.4 分类结果展示
第25章- 机器学习企业级项目实战
25.1 O2O优惠券使用预测
25.2 鲍鱼年龄预测
25.3 机器恶意流量识别
25.4 根据用户轨迹进行精准营销
25.5 根据搜狗输入进行用户画像
25.6 美国债务违约预测
报名费用及优惠详情:
原价16800元:折后特惠价:2999元。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点}

我要回帖

更多关于 心理不平衡的表现 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信