机器学习算法非常之多,下面是常见算法思想及优缺点比较。
KNN(k-nearest neighbor)的思路很简单,就是计算测试数据与类别中心的距离。KNN实际上利用训练数据集对特征向量进行空间划分,并作为其分类的模型。K值的选择、距离度量及分类决策规则是KNN的三个基本要素。
1.1 算法步骤:
step.1—初始化距离为最大值
step.2—计算未知样本和每个训练样本的距离dist
step.3—得到目前K个最临近样本中的最大距离maxdist
step.4—如果dist小于maxdist,则将该训练样本作为K-最近邻样本
step.5—重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完
step.6—统计K-最近邻样本中每个类标号出现的次数
step.7—选择出现频率最大的类标号作为未知样本的类标号
1.2 常见问题
距离度量选择
一般采用马氏距离或者欧式距离。
高维度对距离衡量的影响:众所周知当变量数越多,欧式距离的区分能力就越差。变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化。
K值选择
k太小,分类结果易受噪声点影响;k太大,近邻中又可能包含太多的其它类别的点。(对距离加权,可以降低k值设定的影响)。
k值通常是采用交叉检验来确定(以k=1为基准)。
经验规则:k一般低于训练样本数的平方根。
决策规则
投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以加权投票法更恰当一些。
性能问题
kNN是一种懒惰算法,平时不好好学习,考试(对测试样本分类)时才临阵磨枪(临时去找k个近邻)。
懒惰的后果:构造模型很简单,但在对测试样本分类地的系统开销大,因为要扫描全部训练样本并计算距离。
已经有一些方法提高计算的效率,例如压缩训练样本量等。
优缺点
优点:理论简单、实现容易、高精度、对异常值不敏感。
缺点:计算复杂度高,样本不平衡敏感导致预测偏差较大。
应用领域
KNN既可以做分类也可以做回归,一般用在文本分类、模式识别、聚类分析,多分类领域。
朴素贝叶斯法是基于贝叶斯定理与特征条件独立的假设的分类方法。通俗地讲,对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
朴素贝叶斯分类器可以表示为:
也就是给定参数,找一个概率最大的ck出来。注意到上式分母其实就是P(X=x),x给定了就固定了,跟ck一点关系都没有,所以分母可以去掉,得到:
优缺点
优点:生成式模型,通过计算概率来进行分类,可以用来处理多分类问题;对小规模的数据表现很好,适合多分类任务,适合增量式训练,算法也比较简单。
缺点:由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好,即对输入数据的表达形式很敏感。
机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。
从数据产生决策树的机器学习技术叫做决策树学习, 通俗点说就是决策树,说白了,这是一种依托于分类、训练上的预测树,根据已知预测、归类未来。
决策树学习通常包括3个步骤:特征选择,决策树的生成、树的剪枝。
ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。
C4.5是ID3的改进算法,相比于ID3,改进地方有哪些呢?
1. 用信息增益率来选择属性。ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(entropy,熵是一种不纯度度量准则),也就是熵的变化值,而C4.5用的是信息增益率。对,区别就在于一个是信息增益,一个是信息增益率。
增益比率度量是用前面的增益度量Gain(S,A)和分裂信息度量SplitInformation(S,A)来共同定义的,其中,分裂信息度量被定义为(分裂信息用来衡量属性分裂数据的广度和均匀),如下所示:
- 在树构造过程中进行剪枝,在构造决策树的时候,那些挂着几个元素的节点,不考虑最好,不然容易导致overfitting。
- 对非离散数据也能处理。
- 能够对不完整数据进行处理。
上面讲述了三个决策树算法的基础思想,那么决策树的性能以及使用领域呢?
从线性回归,分析因变量z和自变量xi之间的定量依赖关系,自变量可以连续或者离散,但因变量为连续值。如果因变量为离散值怎么办?逻辑函数的引入顺利解决了改为提。利用逻辑函数将自变量加权压缩带0~1范围,用于表示因变量取各离散值的概率。所以,逻辑回归可以表示为:
回归就是将一些数据点用一条直线对这些点进行拟合。而Logistic回归是指根据现有数据对分类边界线建立回归公式,以此进行分类。