机器学习算法

分类算法:

  •  决策树:

       对每一节点,根据feature进行分类。 选择信息增益最大的feature, 也就是选择将不确定性降低最多的feature。

  • 随机森林:

多个决策树的投票机制来改善决策树,假设有m棵决策树,要有m个一定数量的样本集来训练一棵树(每棵决策树处理一个训练样本子集),如果用全样本来训练m棵决策树不可取,全样本训练忽略了局部样本的规律,对于模型的泛化能力有害, 产生n个样本的方法采用boostraping的方法,有放回的抽样方法,最终结果采用bagging的策略,多数投票机制。

 

方法: 从样本集中通过重采样的方式产生n个样本;

          假设特征数为a,对n个样本选择a中的k个特征,用建立决策树的方式获得最佳分隔点(通过决策树的节点分裂来筛选特征,层层对样本进行细分,直到每个训练样本子集分类正确)

         重复m次,产生m棵决策树

         多测投票预测a

 

  • 逻辑回归

当预测目标是概率,值域在0到1 之间,用线性模型做不到,(因为如下图),因为在定义域不在某个返回范围之内时,值域超过规定范围。

要在一个概率范围之内:

 

sigmoid 函数:

大于0,绝对值,平方,指数;

小于等于1,分子是自己,分母是自身加上1,

 

  •  SVM

将两类分开,要的到一个超平面,使用线性分类器可以得到多种超平面,最优的超平面是到两类的margin达到最大,margin 就是超平面到离它最近的一点的距离(支持向量)

(绿色的比红色的好)

最大化margin,就要最小化分母:

 

 

  •  朴素贝叶斯

一段文字,返回一个情感,可能是positive,可能是negative

可以只看其中的一些单词(相当于特征提取)

统计单词和其计数:

贝叶斯解法:

    1. 每一类每个特征出现的概率

    2. 一句话的情感条件概率

 

 

问题变成,这一类中这句话出现的概率是多少,当然,别忘了公式里的另外两个概率

栗子:单词 love 在 positive 的情况下出现的概率是 0.1,在 negative 的情况下出现的概率是 0.001

 

 

  •  K近邻

给一个新的数据,离它最近的k个点钟,哪个类别多,这个数据就属于哪一类。

  • adaboost

将多个分类效果并不好的分类器综合起来考虑,得到一个效果好的

下图,左右两个决策树,单个看是效果不怎么好的,但是把同样的数据投入进去,把两个结果加起来考虑,就会增加可信度

 

adaboost 的栗子,手写识别中,在画板上可以抓取到很多 features,例如 始点的方向,始点和终点的距离等等

 

training 的时候,会得到每个 feature 的 weight,例如 2 和 3 的开头部分很像,这个 feature 对分类起到的作用很小,它的权重也就会较小

 

而这个 alpha 角 就具有很强的识别性,这个 feature 的权重就会较大,最后的预测结果是综合考虑这些 feature 的结果

 

  • 神经网络

Neural Networks 适合一个input可能落入至少两个类别里,NN 由若干层神经元,和它们之间的联系组成。第一层是 input 层,最后一层是 output 层,在 hidden 层 和 output 层都有自己的classifier

forward propagation->backword propagation 权重更新

马尔科夫

图模型,由state和transitions 组成,比如一句话  the quick brown fox jumps over the lazy dog,

将每个单词设定为一个状态,然后计算状态之间的转换概率:

当使用大量文本做统计的时候,会得到更大的状态转移矩阵, the 后面可以连得单词,及相应的概率

 

 

 

 

聚类模型:

 

k-means 聚类

分为k类, 每一类初始化一个聚类中心,计算各个点到聚类中心的距离,对聚类中心进行更新,继续迭代,直到聚类中心不再变化;

 

层次聚类:遍历所有的数据,计算两两之间的距离,找出距离最小的两个集合将其合并;

LDA:

 

 神经网络: 

 

 

posted @ 2017-09-17 11:45  hahahaf  阅读(243)  评论(0编辑  收藏  举报