学习了一个学期机器学习算法,从什么都不懂到对十个机器学习算法有一定的了解,下面总结一下十大机器学习算法,从算法的概念、原理、优点、缺点、应用等方面来总结,如果有错误的地方,欢迎指出。
目录
1.决策树
这个监督式学习算法通常被用于分类问题。它同时适用于分类变量和连续因变量。在这个算法中,我们将总体分成两个或更多的同类群。这是根据属性或者自变量来分成尽可能不同的组别。
如图所示,根据一些 feature(特征) 进行分类,每个节点提一个问题,通过判断,将数据分为两类,再继续提问。这些问题是根据已有数据学习出来的,再投入新数据的时候,就可以根据这棵树上的问题,将数据划分到合适的叶子上。
经典的决策书是ID3,其中有两个重要的概念:熵 和 信息增益
熵:是描述混乱的程度 (在模型中,熵越小较好)
信息增益:是描述属性(非子叶节点)对模型的贡献,信息增益越大对模型的贡献越大
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
缺点:可能会产生过度匹配问题。
2.线性回归
线性回归是用于回归的,对某一现象或类进行归纳为线性模型,通过连续的输入变量,预测出一个值;通过拟合最佳直线来建立自变量和因变量的关系,而这条最佳直线就叫做回归线,并且可以用:
Y= a*X + b
线性等式来表示一元线性回归(Y: 因变量 ,X: 自变量,a: 斜率,b: 截距 ),一元线性回归的特点是只有一个自变量。
多元线性回归
Y= a1*X1 + a2*X2 +a3*X3 +·········+an*Xn +b:
多元线性回归存在多个自变量,找最佳拟合直线的时候,可以拟合到多项或者曲线回归。
线性回归不像Logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为:
而在LWLR(局部加权线性回归)中,参数的计算表达式为:
由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。
优点: 实现简单,计算简单;
缺点: 不能拟合非线性数据.
3.逻辑回归
这是一个分类算法,通过将数据拟合进一个逻辑函数来预估一个事件出现的概率。对于0~1之间的概率值,当概率大于0.5预测为1,小于0.5预测为0。
它属于判别式模型,有很多正则化模型的方法(L0, L1,L2,etc)。如果需要一个概率架构(比如,简单地调节分类阈值,指明不确定性,或者是要获得置信区间),或者你希望以后将更多的训练数据快速整合到模型中去,可以使用逻辑回归。
Sigmoid函数:
使用算法:首先,我们需要输入一些数据,并将其转换成对应的结构化数值; 接着,基于训练好的回归系数就可以对这些数值进行简单的回归计算,判定它们属于哪个类别,在这之后,我们就可以夺输出的类别上做一些其他分析工作。
优点:
实现简单,广泛的应用于工业问题上;
分类时计算量非常小,速度很快,存储资源低;
便利的观测样本概率分数;
对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题;
缺点:
当特征空间很大时,逻辑回归的性能不是很好;
容易欠拟合,一般准确度不太高
只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;对于非线性特征,需要进行转换;
4.支持向量机SVM
这是一种分类方法。在这个算法中,我们将每个数据在N维空间中用点标出(N是你所有的特征总数),每个特征的值是一个坐标的值。SVM算法的实质是找出一个能够将某个值最大化的超平面,这个值就是超平面离所有训练样本的最小距离。这个最小距离用SVM术语来说叫做间隔(margin) 。
假设给定一些分属于两类的2维点,这些点可以通过直线分割, 我们要找到一条最优的分割线:
支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。
在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
算法:
训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优。
测试算法:十分简单的计算过程就可以实现。
使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类分类器,对多类问题应用SVM需要对代码做一些修改。
线性支持向量机
求解线性支持向量机的过程是凸二次规划问题,所谓凸二次规划问题,就是目标函数是凸的二次可微函数,约束函数为仿射函数满足
而我们说求解凸二次规划问题可以利用对偶算法–即引入拉格朗日算子,利用拉格朗日对偶性将原始问题的最优解问题转化为拉格朗日对偶问题,这样就将求w∗,bw∗,b的原始问题的极小问题转化为求
的对偶问题的极大问题,即求出α∗α∗,在通过KKT条件求出对应的参数w∗,bw∗,b,从而找到这样的间隔最大化超平面,进而利用该平面完成样本分类。目标函数如下:
近似线性支持向量机
当数据集并不是严格线性可分时,即满足绝不部分样本点是线性可分,存在极少部分异常点;这里也就是说存在部分样本不能满足约束条件,此时我们可以引入松弛因子,这样这些样本点到超平面的函数距离加上松弛因子,就能保证被超平面分隔开来;当然,添加了松弛因子σσ,我们也会添加对应的代价项,使得
非线性支持向量机
显然,当数据集不是线性可分的,即我们不能通过前面的线性模型来对数据集进行分类。此时,我们必须想办法将这些样本特征符合线性模型,才能通过线性模型对这些样本进行分类。这就要用到核函数,核函数的功能就是将低维的特征空间映射到高维的特征空间,而在高维的特征空间中,这些样本进过转化后,变成了线性可分的情况,这样,在高维空间中,我们就能够利用线性模型来解决数据集分类问题
优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
5.朴素贝叶斯
朴素贝叶斯分类算法则是给出一个最优的猜测结果,同时给出猜测的概率估计值。
这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:
P(B|A)表示事件B已经发生的前提下,事件A发生的概率,称为事件B发生下事件A的条件概率。
公式模型:
使用条件概率进行分类
假设这里要被分类的类别有两类,类c1和类c2,那么我们需要计算概率p(c1|x,y)和p(c2|x,y)的大小并进行比较:
如果:p(c1|x,y)>p(c2|x,y),则(x,y)属于类c1
在p(x,y|c)p(x,y|c)的条件概率所表示的含义为:已知类别c条件下,取到点(x,y)的概率;那么p(c|x,y)p(c|x,y)所要表达的含义呢?显然,我们同样可以按照条件概率的方法来对概率含义进行描述,即在给定点(x,y)的条件下,求该点属于类c的概率值。
那么这样的概率该如何计算呢?显然,我们可以利用贝叶斯准则来进行变换计算:
代近相关参数即:
优点:
朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。对小规模的数据表现很好,能个处理多分类任务, 适合增量式训练;
对缺失数据不太敏感,算法也比较简单,常用于文本分类。
缺点:
需要计算先验概率;
分类决策存在错误率;
对输入数据的表达形式很敏感。
这里先说5个算法,下一编补充完整。
如果有错误的地方,欢迎指出。