机器学习十大常用算法----上篇

来源:互联网 发布:java io读取文件乱码 编辑:程序博客网 时间:2024/05/16 06:21

机器学习十大常用算法----上篇

声明明:此博客写的机器学习十大常用算法是一个感性的理解,本人研究了一天,总结了许多的网络资料,以一种简单的图解快速理解这些算法,里面没有公式的推导,想看推导的请绕行。由于篇幅的原因,分上下两篇。下篇地址十大机器学习算法----下篇

决策树(Decision Tree)

 是一种简单但是广泛使用的分类器,每个节点提一个问题,通过判断,将数据分类,再继续提问。它的节点的数据类型,可以是数字和枚举(比如婚姻状况:单身、未婚、离婚)。常见的决策树算法有C4.5、ID3(采用信息增益作为分裂属性)和CART,决策树使用纯度来进行构建,分三种方式:

  • GINI 不纯度:其中的p(i)=第i类的数目/总数目


  • 错误率

你可能会遇到的概念,

信息:信息是用来消除随机不确定性的,信息量的大小表示所消除的不确定性大小

熵:熵是用来度量不确定性的,当熵越大,X=xi的不确定性越大,反之越小

信息增益:表示信息消除随机不确定性的程度,信息增益越大,则这个特征的选择性越好

举个决策树的例子:任何贷款者通过下面的筛选就知道他能否偿还,进而银行就可以决定是否贷款给他

k-均值(k-means)

是无监督学习里面的聚类算法,相对KNN监督学习里的分类算法不同
1、 随机选取k个聚类质心点(cluster centroids)为

2、 重复下面过程直到收敛 {
               对于每一个样例i,计算其应该属于的类

    对于每一个类j,重新计算该类的质心,求所有样本点的x和y的均值

}

举个例子:图中红色和蓝色叉代表随机选取的两个聚类点,每次重新计算质心

随机森林 (Random Forest,简称RF)

通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树。随机森林是基于bagging算法,集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合每棵树,bagging算法原理图

随机森林按照如下创建
1.)采用bootstrap sample方法:训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取n个训练样本
为什么随机?
如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样
为什么要放回?
如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是"盲人摸象"
2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
3)每棵树都尽最大程度的生长,并且没有剪枝过程
随机森林中每一棵树都可以看做是一棵CART(分类回归树),每个CART类似于下表

逻辑回归(Logistic Regression)

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题。Logistic Regression 有三个主要组成部分:回归、线性回归、Logsitic方程。它是计算广告学的核心
回归:回归其实就是对已知公式的未知参数进行估计,前提是公式已知,否则回归无法进行
线性回归:使用线性函数来拟合样本,给定一个自变量,把直线上对应的因变量作为预测值
Logsitic :将线性模型使用Logsitic方程(sigmoid)给归一化而已
[常规步骤]
Regression问题的常规步骤为:
    寻找h函数(即hypothesis);
    构造J函数(损失函数);可用极大似然估计
想办法使得J函数最小并求得回归参数(θ)
逻辑回归的公式为:

,其中是sigmoid函数 ,Logistic Regression算法是将线性函数的结果映射到了sigmoid函数中

SVM支持向量机(support vector machine) 

SVM从线性可分情况下的最优分类面发展而来。最优分类面就是要求分类线不但能将两类正确分开(训练错误率为0),且使分类间隔(margin)最大,与B1平行的两条虚线上的样本就是支持向量。SVM是一种不太容易over-fitting的方法,SVM是一种典型的两类分类器

多分类的情况,SVM怎么做?常见的方法有
一对多法(one-versus-rest,简称OVR):某个样本是属于某个分类,还是这个分类的补
一对一法(one-versus-one,简称OVO SVMs或者pairwise):任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM
DAG SVM(有向无环图):先问分类器“1对4”(意思是它能够回答“是第1类还是第4类”),如果它回答4,我们就往左走,再问“2对4”这个分类器,如果它还说是“4”,我们就继续往左走,如此下去...