码迷,mamicode.com
首页 > 编程语言 > 详细

机器学习算法小结

时间:2018-05-17 00:57:53      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:模拟退火   价格   处理   轻松   通过   无法   服务   取值   nes   

  1. 贝叶斯分类器(Bayesian Classifier)

(如何建立一个文档分类系统,用于垃圾邮件过滤,或是根据关键字的模糊搜索来对一组文档进行划分)

 

贝叶斯分类器一般用于关于文档处理,但实际上也可以适用于任何其他形式的数据集,只要能将其转化成一组特征列表。所谓特征,就是指一个给定项中存在或缺少的某种东西。(在文档中,特征就是文档中的单词)

 

*训练

        利用样本进行训练(同所以监督算法一样)

        分类器会记录所有特征,以及这些特征与某个特定分类相关联的数字概率;即得到一个附有相应概率的特征列表。

*分类

        经过训练之后,对新的项目进行自动分类;

        需要一种方法能将所有特征的概率组合到一起,形成一个整体上的概率。

 

  1. 决策树分类器(Decision Tree Classifier)

(如何根据服务器日志来对用户的行为进行建模)

 

算法从根部开始构造决策树,在每一步选择一个属性,利用该属性以最佳的可能方式对数据进行拆分

为了创建(根)节点,第一步就是要对每一个变量进行尝试,最后获得拆分效果最好的那个变量(但面对规模更大一些的数据集时,就不会总是有清晰的拆分结果,为了衡量一个拆分的优劣,需要知道熵的概念)

熵(每个集合的熵都是用来计算信息增益的):集合中的熵偏小,意味着该集合中大部分元素都是同质的;熵等于0,则所有元素都是同一个类型的

 

  1. 神经网络(Neural Networks)

(如何根据用户以往点击的链接简单构建一个神经网络,用以对搜索结果的排名进行调整,神经网络可以识别出哪些单词的组合最重要的,以及哪些单词对于某次查询是并不重要的,不仅可以将神经网络用于分类,还可以将其用于数值预测问题)

 

神经网络一类之——多层感知神经网络(multilayer perceptron network)

多层感知神经网络:一层输入神经元,多层隐藏神经元,一层输出神经元

层与层之间通过突触彼此相连,每一个突触都有一个与之关联的权重,权重越大,对神经元输出的影响也越大

 

*简单的例子:垃圾邮件的过滤问题

首先需要设置好突触的权重(设置突触的方法???),位于第一层的神经元对于用作输入的单词给予响应,如某个单词存在于邮件信息中,则与该单词关联最强的神经元就会被激活,第二层神经元接受第一层神经元的输入,因此会对单词的组合给予响应(因为每层的每个神经元之间都有联系),最后,这些神经元会将结果输出,形成强或弱关联,最终的决策结论,就是判定哪一个输出最强

例子总结:多层神经网络可以非常轻松的处理代表不同事物的各种特征的不同组合

*训练:

神经网络的真正威力是可以从随机的权重值开始,然后通过训练不断的从样本中得到学习,训练神经网络最常见的方法就是”反向传播法”:

首先,从一个样本中及其正确答案(非垃圾邮件/垃圾邮件)开始

随后,将样本送入神经网络,观察其当前的推测结果

开始的时候,网络也许会为垃圾邮件赋予一个比非垃圾邮件更高一些的权重,       这是不正确且需要修正的,即需要告诉网络,垃圾邮件的权值更接近于0,非       垃圾邮件则更接近与1

指向垃圾邮件的突触权重,会根据每一个隐藏层节点的贡献程度相应的做向下微调,而指向非垃圾邮件的权重则会向上微调;介于输入层和隐藏层之间的突触权重,也会根据其对输出层中的重要节点的贡献程度进行相应的调整(调整的公式???)

 

  1. 支持向量机 (Support-Vector Machines)

(SVM)

 

SVM接受数据集作为数字输入,并尝试预测这些数据属于哪个分类

SVM通过寻找介于两个分类之间的分界线来构建预测模型

通过支持向量机找到的分界线,能够清晰地对数据进行划分,这意味着分界线与处于其附近的坐标点彼此间达到最大可能距离

而最佳分界线,是表现最好的那条线:确定这条分界线所在位置唯一需要的坐标点,是距离它最近的那些点,这些点被称为”支持向量”

 

核技法(The Kernel Trick)

假如在图上找不到任何可以划分数据的直线,因此在没有按某种方式对数据采取变换之前,无法利用”线性分类器”来找到有效划分的;

方法一:(就需要一些方法(通过在各个轴上施加不同的函数,将数据变换到另一个不同的空间内,甚至超过二维空间))”多项式变换”(???),利用该方法后可以得到新的分布图,并且很可以通过线性分类器得到分界线

方法二:(在现实中,大多数情况下为了找到分界线往往要将坐标点变换到更为复杂的空间,这些空间维度有的是上千维,有的是无限维,多项式变换并不总是可行)”核技法”——不再进行空间的变换,而是用一个新的函数(???)来取代原来的点函数,该函数会在数据被变换到另一个不同的空间之后,返回相应的点积结果

 

  1. K-最近邻(K-Nearest Neighbors,KNN)

(如何针对一组给定的样本来构造价格预测模型)

 

*工作原理:

接受一个用以进行数值预测的新数据项,然后将其与一组已经赋过值的数据项进行比较,算法会从中找出与待测数据项最为接近的若干项,并对其求均值以得到最终的预测结果

K——若干项的数目,即用于求均值的最佳匹配数

 

*扩展

根据近邻之间距离远近程度进行加权平均,距离非常接近的近邻会比稍远者更高的权重

*变量缩放和多余变量

KNN算法存在的大问题——考虑所有的变量

通过计算距离之前对数据进行调整加以解决,对某些变量的数值进行放大,某些缩小,完全补齐作用的变量乘以0,对有价值但值域范围差别很大的变量缩放到更具可比性的程度

缩放量——需要通过对预测算法实施交叉验证,判断一组缩放因子的优劣程度,即哪些因子应该被用于对新数据的预测

交叉验证:先从数据集中去除一部分数据,然后利用剩余数据来推测出这部分数据,算法会尝试对推测的结果进行评估,通过对不同的缩放因子进行交叉验证,可以得到针对每一项数据的误差率,从而可以判断哪些缩放因子应该用于对数据的猜测

例子:去掉某个数据349,采用k=2,推测值=(399+299)/2,误差=(推测值-去掉的实际数据值)的平方=0

 

##分级聚类、K-均值聚类都属于非监督学习技术:不要求训练用的数据样本,因为这些方法不是用来做预测的

(如何选择一组热门博客并自动对其进行聚类,从中可以发现哪些博客被理所当然的划归到了一类,这些博客或具有相似的描写主题或使用了相近的词汇)

 

  1. 聚类(Clustering)
  2. 分级聚类

*工作方式

寻找距离最近的数据项,合二为一,并且新聚类的位置等于原来两个数据项位置的均值,持续到每个数据项都被包含在一个大的聚类当中

*级?

因为最终可以形成一个层级结构,该层级结构可以显示为树状图的形式(dendrogram),我们可以选出任意一个枝节点,并判断是否为一个有价值的群组

 

  1. K-均值聚类

K-均值聚类实际上是对数据拆分到不同的群组中,要求开始执行运算之前给出想要的群组数量

*运行过程

  1. 两个中心点随机位置产生
  2. 每个数据都分配给最近的中心点
  3. (中心点改变)对之前分配好的某一组数据进行计算平均值,得到新位置,把中心点移到该位置
  4. 当进行再分配时,会发现某一组的某个数据项会距离另一个组的中心点更近了,此时会把这个数据项归划到另一组

 

##多维缩放也是非监督技术,并不是要做预测,而是使不同数据项之间的关联程度更易于理解

  1. 多维缩放(Multidimensional Scaling)

多维缩放会为数据集构造一个低维度的表达形式,并令距离值尽可能接近于原数据集,对于屏幕或者纸张的打印输出,多维缩放通常意味着将数据从多维将至二维

 

例子:将一张4维数据集(每一项数据有4个相关的值),利用欧几里得距离公式,得到每两项直接的距离值,从而可以将所有数据项绘制在2维图上,图元素即为每两项之间计算得到的距离值;而后,由于存在误差,需要不断重复进行节点移动,知道无法通过移动节点来减少总的误差值为止

 

##也是一种非监督算法,因为其作用并非预测分类或数值,而是帮助我们识别数据的特征

  1. 非负矩阵因式分解(Non-Negative Matrix Factorization,NMF)

(观察构成新闻故事的各种不同的主题,借此来了解如何将股票交易量分解成一系列会对单支或者多支股票即刻构成影响的新闻事件)

*NMF的作用

(情况:不知道数据(观测值)的权重和特征)

NMF为我们找到特征和权重的可能取值,NMF的目标就是自动找到”特征矩阵”和”权重矩阵”,李娜改革矩阵乘法可以得到”数据集矩阵”(???)——以随机矩阵开始,并根据一系列更新法则(???)对这些矩阵进行更新,知道特征矩阵和权重矩阵的乘积与数据矩阵足够接近为止

*结果的意义

特征矩阵可以告诉我们潜藏着数据背后的诸多因素~

 

##优化不是要处理数据集,而是要尝试找到能够使成本函数的输出结果达到最小化的值

对于一些成本问题,一旦设计好成本函数,可以利用算法(模拟退火、遗传算法)来解决

  1. 优化(optimization)

成本函数:

(用于优化的成本函数有许多变量需要考虑,而且有时并不清楚到底要修改其中的哪一个变量,才能使最终结果的改善效果达到最好)

 

#此处只考虑一个变量的函数

首先,可以先简单绘制,可以很容易找到函数的最低点(一个带有多个变量的复杂函数则不适用)

注意:一般会有很多个局部最小值,此时假如我们尝试随机选择题解并沿斜坡向下的方法不一定能找到最优解(很有可能陷入一个包含局部最小值的区域,从而永远无法找到全局范围内的最小值)

 

a.  模拟退火

(物理学领域合金冷却)

以一个随即推测的题解开始,然后以此为基准随机选择一个方向,并就近找到另一个近似解,判断其成本值;

如果变小,则新的题解取代原来的题解;

如果变大,则新题解取代旧题解的概率取决于当前的温度值,此处的温度,会以一个相对较高的数值开始缓慢下降,正因如此,算法在执行的早起阶段更容易接受表现相对较差的题解,这样我们就有效的避免了陷入局部最小值的可能,当温度到达0,算法便返回当前的题解

 

b. 遗传算法

(进化理论)

以一组被称为种群的随机题解开始;

种群中表现最为优异的成员——即成本最低者,会被选中并通过稍事改变(变异)或者特征组合(交叉(配对))的方式加以修改;

得到新的族群,称为下一代;

重复,达到某个阈值,或种群经历数代后没有任何改善,或遗传代数达到最大值,终止

机器学习算法小结

标签:模拟退火   价格   处理   轻松   通过   无法   服务   取值   nes   

原文地址:https://www.cnblogs.com/hoanfir/p/9048900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!