机器学习,学前概览

2021-05-14 11:41:45 浏览数 (1)

机器学习-学前概览

学习了这么多年,越发感觉自己不会学习,越发的意识到死读书,读死书的套路已经行不通了,于是我想稍微改变一下学习方法,首先总览全局,高屋建瓴,之后再逐一突破!效果如何,从今天开始见证!


机器学习(Machine Learning, ML)

  • 涉及领域:概率论、统计学、逼近论、凸分析、算法复杂度理论等等各类知识。
  • 作用:研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能
  • 方法:它主要使用归纳、综合而不是演绎。
  • 常见算法:线性回归与logistic、岭回归、降维算法、线性分类、knn算法、朴素贝叶斯、决策树、支持向量机、人工神经网络、BP神经网络、聚类等

算法综述

  • 回归分析 - - -以线性回归为例
  • 所要解决的问题,是自变量和因变量之间的因果关系,比如,销售季和销售量的关系/手机的外观、质量价格和用户满意度的关系/资本、技术的投入和产出的关系等等
  • 很多应用场景不能够使用线性回归模型来进行预测,例如,月份和平均气温,平均气温并不随着月份的增长呈线性增长或下降的趋势。够适用的场景是:可以用于预测(解释:yi=a bxi z,其中xi是自变量,yi是因变量,用历史数据求出线性关系式中的参数a,b,z,便可根据新的自变量xi的值来预测yi的值),也可以用于分类(解释:当找到一个适合的回归方式时,便可以把平面上的点按照回归方程线分为两部分,即二分类,非此即彼),且只适用于线性问题,可以有多个维度
  • 岭回归、lasso算法
    • 岭回归:是为了解决多重共线性问题(解释:是由于变量之间存在精确或高度相关关系,使模型估计失真。,影响家庭消费支出的家庭收入家庭财富两个变量就存在明显高度相关//经济变量在时间上有共同变化的趋势。如在经济上升时期, 收入、消费、就业率都在增长,反之亦然)
    • lasso算法:在建立模型之初,为了尽量减小因缺少重要自变量而出现的模型偏差,通常会选择尽可能多的自变量。然而,建模过程需要寻找对因变量最具有强解释力的自变量集合,也就是通过自变量选择(指标选择、字段选择)来提高模型的解释性和预测精度。该方法通过 构造一个惩罚函数获得一个精炼的模型。
  • 主成分分析
    • 设法将原先众多具有一定相关性的指标,重新组合为一组新的互相独立的综合指标,并代替原先的指标,最终目的是实现降维
    • 是常用的降维技术之一,而前面提到的岭回归和lasso算法也常被用于降维。
  • 支持向量机(SVM,support vector machine)
  • 支持向量机其实是一个二分类器,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化
  • 特点 (1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;// (2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;/// (3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。/// (4)SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统 过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。///(5)SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。///(6)少 数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁 棒”性主要体现在: ①增、删非支持向量样本对模型没有影响; ②支持向量样本集具有一定的鲁棒性; ③有些成功的应用中,SVM 方法对核的选取不敏感
  • 局限: (1) SVM算法对大规模训练样本难以实施 由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内 存和运算时间。针对以上问题的主要改进有有SMO算法、SVM、PCGC、SOR算法 (2) 用SVM解决多分类问题存在困难 。经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有 一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决(摘自:百度文库,感谢 贡献者 住山使
  • SVM应用:手写体数字识别//文本分类//图像识别//语音信号处理//入侵检测、病毒检测、数字水印//时间序列如经济预警、股市预测、财务预测、电力负荷、交通流量
  • svm 更多的属于非参数模型,而logistic regression 是参数模型,本质不同。其区别就可以参考参数模型和非参模型的区别就好了。
  • 在相关课里讲到过:
  1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
  2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM Gaussian Kernel
  3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况
  • 分类
    • knn算法:或者说K最近邻(k-NearestNeighbor),是比较简单的一种分类算法。最简单的分类器,是“死记硬背”型的,记住所有的训练数据,对于新的数据则直接和训练数据匹配,如果存在相同属性的训练数据,则直接用它的分类来作为新数据的分类;相比较于前者,knn算法则是从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别。应用方面,更适合于稀有事件的分类问题,如客户流失预测、欺诈侦测等
    • 朴素贝叶斯算法:( Naive Bayes, NB),更像是在做一些计数的工作。如果条件独立假设成立的话,NB将比鉴别模型(如Logistic回归)收敛的更快,所以你只需要少量的训练数据。即 使条件独立假设不成立,NB在实际中仍然表现出惊人的好。如果你想做类似半监督学习,或者是既要模型简单又要性能好,NB值得尝试(摘自知乎Jason Gu)
    • Logistic回归(Logistic Regression, LR):LR有很多方法来对模型正则化。比起NB的条件独立性假设,LR不需要考虑样本是否是相关的。与决策树与支持向量机(SVM)不同,NB有很好的概率解释,且很容易利用新的训练数据来更新模型(使用在线梯度下降法)。如果你想要一些概率信息(如,为了更容易的调整分类阈值,得到分类的不确定性,得到置信区间),或者希望将来有更多数据时能方便的更新改进模型,LR是值得使用的。(摘自知乎Jason Gu)
    • 决策树(Decision Tree, DT):DT是非参数的,所以你不需要担心离群点和数据是否线性可分的问题(例如,DT可以轻松的处理这种情况:属于A类的样本的特征x取值往往非常小或者非常大,而属于B类的样本的特征x取值在中间范围)。DT的主要缺点是容易过拟合,这也正是随机森林(Random Forest, RF)(或者Boosted树)等集成学习算法被提出来的原因。此外,RF在很多分类问题中经常表现得最好,且速度快可扩展,也不像SVM那样需要调整大量的参数(摘自知乎Jason Gu)
  • 聚类
    • COBWeb: COBWeb是一个通用的概念聚类方法,它用分类树的形式表现层次聚类
    • AutoClass: 是以概率混合模型为基础,利用属性的概率分布来描述聚类,该方法能够处理混合型的数据,但要求各属性相互独立

    (摘自:http://blog.chinaunix.net/uid-10289334-id-3758310.html)

    • 自组织神经网络SOM: 该方法的基本思想是–由外界输入不同的样本到人工的自组织映射网络中,一开始时,输入样本引起输出兴奋细胞的位置各不相同,但自组织后会形成一些细胞群,它们分别代表了输入样本,反映了输入样本的特征
    • sting: 利用网格单元保存数据统计信息,从而实现多分辨率的聚类
    • WaveCluster: 在聚类分析中引入了小波变换的原理,主要应用于信号处理领域。(备注:小波算法在信号处理,图形图像,加密解密等领域有重要应用,是一种比较高深和牛逼的东西)
    • clique: 是一种结合了网格和密度的聚类算法
    • dbscan: DBSCAN算法是一种典型的基于密度的聚类算法,该算法采用空间索引技术来搜索对象的邻域,引入了“核心对象”和“密度可达”等概念,从核心对象出发,把所有密度可达的对象组成一个簇 -gdbscan : 算法通过泛化DBSCAN算法中邻域的概念,以适应空间对象的特点
    • optics: OPTICS算法结合了聚类的自动性和交互性,先生成聚类的次序,可以对不同的聚类设置不同的参数,来得到用户满意的结果
    • FDC: FDC算法通过构造k-d tree把整个数据空间划分成若干个矩形空间,当空间维数较少时可以大大提高DBSCAN的效率
    • cure: 采用抽样技术先对数据集D随机抽取样本,再采用分区技术对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类
    • rock: 也采用了随机抽样技术,该算法在计算两个对象的相似度时,同时考虑了周围对象的影响
    • chemaloen(变色龙算法): 首先由数据集构造成一个K-最近邻图Gk ,再通过一个图的划分算法将图Gk 划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇
    • SBAC: SBAC算法则在计算对象间相似度时,考虑了属性特征对于体现对象本质的重要程度,对于更能体现对象本质的属性赋予较高的权值
    • birch: BIRCH算法利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点,该算法也可以作为其他聚类算法的预处理过程
    • bubble: BUBBLE算法则把BIRCH算法的中心和半径概念推广到普通的距离空间
    • k-means: 是一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,即在迭代过程中选择的聚点不一定是聚类中的一个点,该算法只能处理数值型数据
    • k-modes: K-Means算法的扩展,采用简单匹配方法来度量分类型数据的相似度
    • k-prototypes: 结合了K-Means和K-Modes两种算法,能够处理混合型数据
    • k-medoids: 在迭代过程中选择簇中的某点作为聚点,PAM是典型的k-medoids算法
    • clara: CLARA算法在PAM的基础上采用了抽样技术,能够处理大规模数据
    • clarans: CLARANS算法融合了PAM和CLARA两者的优点,是第一个用于空间数据库的聚类算法
    • Focused claran: 采用了空间索引技术提高了CLARANS算法的效率
    • PCM: 模糊集合理论引入聚类分析中并提出了PCM模糊聚类算法
    • 基于划分聚类算法(partition clustering):
    • 基于层次聚类算法
    • 基于密度聚类算法:
    • 基于网格的聚类算法
    • 基于神经网络的聚类算法
    • 基于统计学的聚类算法
  • 人工神经网络、线性神经网络、BP神经网络、梯度下降学习算法(今后再补充)

0 人点赞