深度学习学习笔记

深度学习学习笔记:机器学习常用算法

(一)决策树

决策树,是树形结构,通过树形结构将各种情况组合都表示出来,每次分割的时候,都将当前的空间一分为二,简单来说就是每个分支进行一次Yes 或 No 的选择,直到所有选择都进行完毕,最终给出正确答案。这个监督式学习算法通常被用于分类问题。

划分方法:最小化信息熵,最小化Gini系数
为了防止过拟合,决策树可以用剪枝来提升泛化能力,判断泛化能力是根据预先分为test和valid集,看其在valid中的表现。剪枝分为两种,预剪枝是指在划分前估计当前结点的划分是否能提升决策树泛化能力,如果不能就设为叶结点。还有一种是后剪枝,先构建一颗完整的决策树,再由底往上考虑,如果当前结点替换为叶结点能提升泛化能力,则当前结点为叶结点。

  • 优点
    计算简单,易于理解,可解释性强。
    比较适合处理有缺失属性的样本。
    能够处理不相关的特征。
    在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

  • 缺点
    容易发生过拟合(随机森林可以很大程度上减少过拟合)。
    忽略了数据之间的相关性。
    对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征(只要是使用了信息增益,都有这个缺点,如RF)。

(二)逻辑回归

逻辑回归是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。对于样本是二项分布的二分类问题且希望得到概率值结果时适用,对远点的样本敏感(即远离中间的样本)。简单来说,它通过将数据拟合进一个逻辑函数来预估一个事件出现的概率。因此被叫做逻辑回归。因为它预估的是概率,所以它的输出值大小在 0 和 1 之间。

  • 优点
    实现简单,分类时计算量非常小,速度很快,存储资源低。
    可以观测样本概率值。
  • 缺点
    当特征空间很大时,逻辑回归的性能不是很好。
    因为模型简单,所以容易欠拟合,一般准确度不太高。
    不能很好地处理大量多类特征或变量。
    只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分。

(三)KNN:K最近邻

该算法可用于分类问题和回归问题。然而,在业界内,K – 最近邻算法更常用于分类问题。从训练集中找出K个最接近测试对象的训练对象,再从这K个训练对象中找出居于主导的类别,将其赋给测试对象。通俗上来说就以物以类聚的思路,给一个新的数据时,离它最近的 K个点中,哪个类别多,这个数据就属于哪一类。

这些距离函数可以是欧式距离、曼哈顿距离、明式距离或者是汉明距离。前三个距离函数用于连续函数,第四个函数(汉明函数)则被用于分类变量。如果 K=1,新案例就直接被分到离其最近的案例所属的类别中。有时候,使用 KNN 建模时,选择 K 的取值是一个挑战。

  • 优点
    精度高
    对异常值不敏感
    无数据输入假定
    简单有效,并且可以随时加入新样本

  • 缺点
    复杂度太高,计算成本大,需要大量内存
    当类别存在范围重叠时,KNN分类的精度不太高

(四)kmeans

(1)随机选择k个样本作为k各类别的中心
(2)根据距离将样本归于每一个类别,然后对每一类别再计算中心样本
反复重复上述步骤,直至收敛。

  • 优点
    算法简单,容易实现。
    对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k远小于n。这个算法通常局部收敛。
    当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。
  • 缺点
    对数据类型要求较高,适合数值型数据。
    可能收敛到局部最小值,在大规模数据上收敛较慢。
    K值比较难以选取。
    对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果。
    不适合于发现非凸面形状的簇,或者大小差别很大的簇。
    对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

(五)朴素贝叶斯

朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。

用更简单的话来说,一个朴素贝叶斯分类器假设一个分类的特性与该分类的其它特性不相关。举个例子,如果一个水果又圆又红,并且直径大约是 3 英寸,那么这个水果可能会是苹果。即便这些特性互相依赖,或者依赖于别的特性的存在,朴素贝叶斯分类器还是会假设这些特性分别独立地暗示这个水果是个苹果。

  • 优点
    对小规模的数据表现很好,能处理多分类任务。
    对缺失数据不太敏感,算法也比较简单,常用于文本分类。
    当样本很多时,可以分批训练,即可以增量式训练

  • 缺点
    对于属性较多或者属性之间关联性较大的情况,效果很差,容易欠拟合。
    需要计算先验概率,先验模型对预测结果有很大影响。
    由于通过先验和条件概率计算后验概率,所以分类决策存在一定的错误率。

(六)支持向量积(SVM)

这是一种分类方法。在这个算法中,我们将每个数据在N维空间中用点标出(N是你所有的特征总数),每个特征的值是一个坐标的值。

举个例子,如果我们只有身高和头发长度两个特征,我们会在二维空间中标出这两个变量,每个点有两个坐标(这些坐标叫做支持向量)。

  • 优点
    可以解决高维问题,即大型特征空间。
    能够处理非线性特征的相互作用。
    无需依赖整个数据。
    可以提高泛化能力。

  • 缺点
    当观测样本很多时,效率并不是很高。
    对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数。
    对缺失数据敏感。

(六)集成学习

  • boosting & bagging
    boosting 是每次迭代会给错误的样本更高的权重使得下一个弱分类器能正确观察到错的地方。最后由几个弱分类器加起来,根据准确率给每个分类器一个投票的权重。
    bagging 是每次随机抽m个样本训练一个分类器,重复k次,从这k个分类其中选择表现最好的作为结果
    随机森林 :bagging的代表
    随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

  • 优点
    能够处理很高维度(feature很多)的数据,并且不用做特征选择
    训练时树与树之间是相互独立的,训练速度快,并且可并行
    实现比较简单
    如果有很大一部分的特征遗失,仍可以维持准确度。

  • 缺点
    随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
    对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。

adaboost :boosting的代表

  • 优点
    可以使用各种方法构造子分类器,Adaboost算法提供的是框架
    简单,不用做特征筛选
    相比较于RF,更不用担心过拟合问题

  • 缺点
    adaboost对于噪音数据和异常数据是十分敏感的。Boosting方法本身对噪声点异常点很敏感,因此在每次迭代时候会给噪声点较大的权重,这不是我们系统所期望的。
    运行速度慢,凡是涉及迭代的基本上都无法采用并行计算,Adaboost是一种”串行”算法.所以GBDT(Gradient Boosting Decision Tree)也非常慢。

更多算法类别
归纳总结
参考博客:
https://blog.csdn.net/thormas1996/article/details/81537472#机器学习算法总结
https://blog.csdn.net/jrunw/article/details/79205322
https://blog.csdn.net/j2IaYU7Y/article/details/78988060

猜你喜欢

转载自blog.csdn.net/weixin_43717579/article/details/84348922