机器学习初步探索

**1、什么是机器学习?
**机器学习还有模式识别、计算机视觉、语音识别、统计学习以及自然语言处理等,按其种类来说分为监督学习和非监督学习。
机器学习种类
1.1监督学习
1.1.1分类
在文类信息特征提取中,向量空间模型(VSM: Vector Space Model),把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度。它特征词条(T1 ,T2 ,…Tn)及其权值Wi来表征目标文本。在进行信息匹配时,使用这些特征项评价未知文本与目标样本的相关程度。特征词条及其权值的选取称为目标样本的特征提取。
比如基于NLP的朴素贝叶斯进行文本分类
在这里插入图片描述
以垃圾邮箱分类为例子来说明(以百度某个例子为例我觉得我比较容易理解)
将贝叶斯函数利用到工作中,它能帮助我们干什么呢?如果生活中你的工作邮件经常收到各种垃圾邮件,对你来说如果能够有效的拦截和识别这些垃圾邮件是不是很好的一件事,那么就有了以下做法:
我们现在要对邮件进行分类,识别垃圾邮件和普通邮件,如果我们选择使用朴素贝叶斯分类器,那目标就是判断P(“垃圾邮件”|“具有某特征”)是否大于1/2。现在假设我们有垃圾邮件和正常邮件各1万封作为训练集。需要判断以下这个邮件是否属于垃圾邮件:
“我司可办理正规发票(保真)17%增值税发票点数优惠!”
也就是判断概率P(“垃圾邮件”|“我司可办理正规发票(保真)17%增值税发票点数优惠!”)是否大于1/2。
计算的方法:就是写个计数器,然后+1 +1 +1统计出所有垃圾邮件和正常邮件中出现这句话的次数啊,具体点说:
如果真的这么做了,很多人会觉得如果这样一个句子去做语料库是不是太low了,傻子才会将文本信息一句不差的发给所有人或者每次都是同样的作弊特征。本身我们能够穷举的训练集是有限的,而句子的可能性则是无限的。那么,我们就得找到可替代的方案——切词/分词
如果以句子作为训练集,可能它的组合是无限,但是词语的搭配都是按照语义去搭配的,我们汉语常用字2500个,常用词语也就56000个。那么我们再拆词的时候就能够抓住词的作弊特征。
比如“我司可办理正规发票,17%增值税发票点数优惠!”,这句话就比之前那句话少了“(保真)”这个词,但是意思基本一样。那我们可以作为训练集的样本数量就会增加,这就方便我们计算了。
我们以词作为特征去提取作弊特征这样我们可供训练和提取的特征明显多了。eg:“正规发票”、“增值税”可以作为一个单独的词语,如果在工作中再建立体套豁免机制豁免本公司白名单用户,是不是这些词明显能够提高垃圾邮件的拦截。
句子“我司可办理正规发票,17%增值税发票点数优惠!”就可以变为(“我”,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”))。
我们观察(“我”,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”),这可以理解成一个向量:向量的每一维度都表示着该特征词在文本中的特定位置存在。这种将特征拆分成更小的单元,依据这些更灵活、更细粒度的特征进行判断的思维方式,在自然语言处理与机器学习中都是非常常见又有效的。
因此贝叶斯公式就变成了:
在这里插入图片描述
垃圾邮件识别,说明了一下朴素贝叶斯进行文本分类的思路过程。基本思路是先区分好训练集与测试集,对文本集合进行分词、去除标点符号等特征预处理的操作,然后使用条件独立假设,将原概率转换成词概率乘积,再进行后续的处理。
贝叶斯公式 + 条件独立假设 = 朴素贝叶斯方法
1.1.2.回归
回归是由果索因“的过程。可以理解为–当我看到大量的事实所呈现的样态,我推断出原因或客观蕴含的关系。
比如函数 y=wx+b,在给出一些x和y的取值后,我们可以推导出w和b的取值,这就是简单的一个回归。
回归可分为线性回归和非线性回归两种。
线性回归就是向量和最终的函数值存在一种线性关系。
非线性回归在机器学习领域应用最多当属逻辑回归,对于任何向量,这里的函数值可以假设只存在两种,即0和1,也可认为是“真”和“假”。
1.2非监督学习
1.2.1聚类分析
比如利用word2vec对关键词进行聚类,加入我们要知道新闻的推荐和关键词有什么联系?首先析,我们收集一批数据,这里不可能一下子就得到所有词的集合,最常见的方法是自己写个爬虫去收集网页上的数据,这里的数据应该说越多越好。其次,我们开始分词,将一些非文本的信息去掉,这样有助于对文本聚类的时候不会出现干扰项。然后利用谷歌开源的word2vec算法进行聚类分析。由于word2vec计算的是余弦值,距离范围为0-1之间,值越大代表这两个词关联度越高,所以越排在上面的词与输入的词越紧密。
2.什么是训练集,是用来做什么的?
训练集用于建立模型,测试集评估模型的预测等能力。随机选出一些数据作为模型(训练集),发现其规律。
3.什么是测试集,是用来做什么的?
测试集则检验最终选择最优的模型的性能如何。
一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。但是,当样本总量少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法
测试集方法的代价是要减少一部分训练数据。例如通常我们从训练集中移除了30%的数据。这意味着相比于使用全量集合训练来说,我们的模型会存在更大的偏差。在标准的流程中,评价完模型效果后,我们会用全量数据重新训练来得到最终的模型。因此在这种情流程下,测试集的误差评价结果是偏保守的,因为模型的实际误差要比报告的误差低一些。在实际中这种保守的误差估计要比乐观的误差估计更有效。
这种技术的一个要点是在得到最终模型前不能以任何方式分析或使用测试集。一个常见错误是在效果评估后重新调整模型然后再次训练评估。如果在一次建模中你重复使用一份测试集,这份测试集就被污染了。由于测试集参与了模型调整,它就不能再给出模型误差的一个无偏估计了。
4.什么是模型
就是用来描述输入输出关系的函数
常用经典模型
1.线性回归:有监督回归,y=WX+b,X为m维向量,y、b为n维向量,W为n*m维矩阵
2.Logistic回归:有监督回归,y=logit(WX+b)
3.贝叶斯:有监督分类,最可能的分类是概率最大的分类
4.k近邻:有监督分类,kNN,距离的定义
5.决策树:有监督分类,树形判断分支,非线形边界,+集成=随机森林
6.支持向量机:有监督分类,将原空间变换到另一空间,在新空间里寻找margin最大的分界面(hyperplane)
7.k-means:无监督聚类,初始化中心,不断迭代,EM算法
8.神经网络:有监督和无监督都有

猜你喜欢

转载自blog.csdn.net/qq_39660591/article/details/85920043