当前位置:   article > 正文

模型与算法_模型和算法

模型和算法

模型是一类问题的解题步骤,亦即一类问题的算法。如果问题的算法不具有一般性,就没有必要为算法建立模型,因为此时个体和整体的对立不明显,模型的抽象性质也体现不出来。

如果研究的问题是特殊的,比如,我今天所做的事情的顺序,因为每天不一样,就没有必要建立模型。如果研究问题具有一般性,比如我要研究办银行卡,办羊城通卡,或者办其他卡的顺序,由于它们的先后次序基本相同,因此可以为办卡这一类事情建立模型。

数学模型还没有一个统一的准确的定义,因为站在不同的角度可以有不同的定义。不过我们可以给出如下定义。"数学模型是关于部分现实世界和为一种特殊目的而作的一个抽象的、简化的结构。"具体来说,数学模型就是为了某种目的,用字母、数字及其它数学符号建立起来的等式或不等式以及图表、图象、框图等描述客观事物的特征及其内在联系的数学结构表达式。

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

在行业设备大数据平台建设中,势必要用到大数据技术,而大数据技术中,机器学习与数据挖掘算法是重要的一环,我们通过这些算法与模型对设备的故障进行监控与预测,对设备技改需求进行预测,对设备采购需求进行预测以及创建各种模型与算法设备标签。下面我们对一些常用的算法与模型进行简要介绍。

在进行数据挖掘时,首先要进行商业理解,即我们需要达到什么目的,解决什么问题;其次需要进行数据理解,我们需要哪些数据以及需要什么样的数据;接着需要进行数据准备,即进行相关数据采集与读取,并进行数据预处理;继而建立相关模型,即使用什么算法与模型去解决这个问题;进而进行模型评估,即采用一些指标评价模型的好坏程度;然后,进行模型发布,即当模型的效果达到设定值之后,我们将模型进行上线发布;最后,进行模型更新,即使用后面的新生数据对模型进行更新,以达到更好的效果。


数据预处理
现实的数据一般是不完整的、带有随机性的、游噪声的、与不一致的脏数据,数据质量不高,无法直接进行数据挖掘,或者挖掘的效果差强人意。为了以后的处理更加方便以及模型具有更好的效果,往往在使用模型之前需要对数据进行预处理。
数据预处理包括:数据清理、数据集成、数据变换、数据归约。

数据清理一般包括对数据纪录的缺失属性进行填充、对数据的噪声进行光滑操作、识别并删除数据中的异常或者离群点(在有些挖掘任务中则不需要处理,如欺诈行为识别)等。简而言之,包括数据缺失值处理、数据标准化、异常数据清除、数据错误纠正、重复数据删除等;

数据集成是解决多个数据源可能带来的数据不一致问题,通过相关技术(如 ID Mapping)将多个数据源中的数据结合并统一存储,即建立数据仓库;

数据变换即将数据的各个属性通过平滑聚集、数据概化、数据规范化等方式将数据转换成适用于数据挖掘的形式;

数据归约是指在数据挖掘中,往往数据量非常大,在少量数据上进行挖掘分析需要很长的时候,用来得到数据集的归约表示,它小得多,但仍然近于保持原数据的完整性,并结果与归约前的结果相同或者几乎相同。


常用的数据挖掘与机器学习模型包括分类模型、回归模型、聚类模型、预测模型、关联挖掘模型等。它们分别解决不同的任务以及不同的数据处理方式,并且每种模型中有着众多不同的算法,每种算法都适应不同的场景。

分类模型:
分类是指,存在一些实例,我们不知道它所属的离散类别,每个实例是一个特征向量,并且类别空间已知,分类即将这些未标注类别的实例映射到所属的类别上。
分类模型是监督式学习模型,即分类需要使用一些已知类别的样本集去学习一个模式,用学习得到的模型来标注那些未知类别的实例。在构建分类模型的时候,需要用到训练集与测试集,训练集用来对模型的参数进行训练,而测试集则用来验证训练出来的模型的效果的好坏,即用来评价模型的好坏程度,常用的评价指标有准确率与召回率。
针对不同的分类任务、不同的数据以及不同的适应场景,分类中有着不同的分类算法。常见的分类方法包括:决策树、贝叶斯、K近邻、支持向量机、基于关联规则、集成学习、人工神经网络。

1. 决策树
决策树是进行分类与预测的常见方法之一,决策树学习方法是从训练集中每个样本的属性进行构建一棵属性树,它按照一定的规则选择不同的属性作为树中的节点来构建属性和类别之间的关系,常用的属性选择方法有信息增益、信息增益率以及基尼系数等。它采用自顶而下递归构建这颗属性类别关系树,树的叶子节点便是每个类别,非叶子节点便是属性,节点之间的连线便是节点属性的不同取值范围。决策树构建后,便从决策树根节点开始从上到下对需要进行类别标注的实例进行属性值的比较,最后到达某个叶子节点,该叶子节点所对应的类别便是该实例的类别。常用的决策树算法有ID3、C4.5/C5.0、CART等。这些算法的区别主要在于属性选择的策略、决策树的结构(如决策树中出现重复属性)、是否采用剪枝以及剪枝的方法、是否处理大数据集(即算法的复杂度,包括时间与空间复杂度)等。

2. 贝叶斯分类器
贝叶斯分类算法是基于概率论中的贝叶斯公式对实例进行分类的算法,它使用贝叶斯公式计算实例特征向量下每个类别的条件概率,选择条件概率最大所对应的类别作为其类别。常见的贝叶斯分类算法包括朴素贝叶斯、贝叶斯网络等,区别在于假设属性之间是否条件独立。朴素贝叶斯是假设属性之间是条件独立的,但是这种假设往往是不成立的。而贝叶斯网络是假设部分属性之间是有关联的,从而构建一个属性有向网络。

3. K近邻
K近邻算法是基于实例的分类算法。该算法首先定义一个邻居范围,即设定邻居的个数,然后采用投票的方式来决定自己所属的类别,即多数战胜少数的策略,自己的类别为邻居中大部分所对应的类别。一般都是采用欧式距离,即选取欧式距离最近的K个已标注类别的样本作为自己的邻居,既可以采取邻居平等投票的方式,也可以采取邻居权值的方式进行投票,即不同的邻居的意见有着不同的权重,一般距离越近的邻居权重越大。该方法有个缺点就在于对每一个未知类别的实例都需要计算其与样本空间中所有样本的距离,因此复杂度过高,无法满足那些实时性要求较高的分类场景。

4. 支持向量机
支持向量机(SVM)是一种统计机器学习分类算法,它是建立在由Vapnik和Chervonenkis提出的统计学习理论的VC维理论和结构风险最小化原理的基础上。结构化风险等于经验风险加上置信风险,而经验风险为分类器在给定训练样本上的误差,置信风险为分类器在未知类别的实例集上的分类误差。给定的训练样本的数量越多,泛化能力越有可能越好,则学习效果越有可能更好,此时置信风险越小。以前的学习算法目标是降低经验风险,要降低经验风险,则需要增加模型对训练样本的拟合度,即提高分类模型的复杂度,此时会导致VC维很高,泛化能力就差,置信风险就高,所以结构风险也高。而SVM算法则是以最小化结构风险为目标,这便是SVM的优势。SVM是最大化分类几何间隔来构建最优分类超平面来提高模型的泛化能力的。并且引入核函数来降低VC维的。支持向量机在对未知类别的实例进行分类时使用该实例落在超平面哪个区域所对应的类别作为该实例的类别的。

5. 基于关联规则的分类器
基于关联规则的分类方法是基于关联规则挖掘的,它类似于关联规则挖掘,使用最小支持度与置信度来构建关联规则集:Xs->C,只是不同于关联规则挖掘,Xs是属性值对集合,而C则是类别。它首先从训练集中构建所有满足最小支持度与最小置信度的关联规则;然后使用这些关联规则来进行分类,该类型常见的算法有CBA、ADT等。

6. 集成学习
在实际应用中,单一的分类算法往往不能达到理想的分类效果,并且有时单一的分类器会导致过拟合。类似于三个臭皮匠率过一个诸葛亮的思想,使用多个分类器进行集成往往能够达到更好的分类效果。常见的集成方式包括Stacking、Bagging以及Boosting,常见的集成算法包括AdaBoost算法、GBDT、随机森林等。

7. 人工神经网络
人工神经网络模拟人脑的工作原理,使用节点之间的连接来模拟人脑中的神经元连接来进行信息处理的机器学习模型。人工神经网络包括输入层、隐含层、输出层。这些层以此使用不同的权值进行连接,每个节点(神经元)都有一个激励函数,用来模拟人脑神经元的抑制与兴奋。信息从输入层流通到输出层,并且使用训练集来学习网络中的权值,改善网络的效果。一般是使用梯度下降误差反向传播来对网络中的参数进行学习更新,以达到更多的误差,直到满足精度要求。在分类中,首先使用训练集样本对网络中的参数进行学习,然后从输入层输入未知实例的特征向量,输出层的输出便是其类别。常见的人工神经网络有:BP神经网络、RBF神经网络、循环神经网络、随机神经网络、竞争神经网络以及深度神经网络等。不同的神经网络用来处理不同的应用场景。

不同的分类算法适应着不同的应用场景。在选择分类算法是,需要考虑它们的有缺点。比如特别关注分类准确度,那么可以分别使用上述的分类算法,然后使用交叉验证选择最好的分类算法。
首先,要考虑模型的训练集有多大。如果训练集较小,那么高偏差/低方差的分类器(如贝叶斯分类器、SVM、集成学习)要比低偏差/高方差的分类器具有优势,因为后者容易过拟合。
然而随着训练集的增大,低偏差/高方差的分类器将开始具有优势(它们拥有更低的渐进误差)。
然后要根据不同分类器的特点去选择。

  • 朴素贝叶斯简单,容易理解,但是需要假设属性之间条件独立。
  • 决策树解释性强,能够处理属性之间的交叉关系,并且模型是非参数化的,但是不支持在线学习,于是在新样本到来后,决策树需要进行重建,以及容易过拟合。
  • K近邻容易理解,简单,但是其复杂度高,不适合实时性要求高的场景。
  • 支持向量机具有很好的理论支持,分类准确率高,对于线性不可分的情况,可以使用核函数进行映射到高维空间而线性可分,但是只适合训练集较小的情况,内存消耗大。
  • 基于规则的分类器容易解释,规则容易建立,但是可能效果不佳。
  • 集成学习容易达到较好的分类效果,并且容易避免过拟合,但是它需要训练多个不同的分类器。
  • 人工神经网络效果好,能够以任意精度去拟合非线性分类器,但是模型解释性不强,并且训练复杂,学习速度慢。

回归模型:
回归模型是指通过对数据进行统计分析,得到能够对数据进行拟合的模型,确定两种或两种以上变量间相互依赖的定量关系。它与分类的区别在于其结果是连续的。包括线性回归与非线性回归。线性回归模型是假设自变量与因变量之间是一种线性关系,即自变量最高次是一次,然后使用训练集对模型中的各个参数进行训练学习,得到自变量与因变量之间的定量关系方程,最后将未知结果的实例代入方程得到结果,常用的算法是线性回归算法、L2正则的岭回归与L1正则的Lasso回归。而非线性回归则相反,是假设自变量与因变量之间的关系是非线性的,即自变量的最高次是大于1的。常用的非线性回归算法有逻辑回归、softmax回归、神经网络、支持向量机以及CART等。若在回归结果上面加一层,则可以达到分类的效果。

拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别(最小二乘意义)最小。
如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。
一组观测结果的数字统计与相应数值组的吻合。形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。


预测模型:
预测模型包括分类模型与回归模型,两者的区别在于前者是对离散值进行预测,而后者是对连续值进行预测。同时,在与时间有关的预测模型中,是根据历史的状态预测将来一段时间内的状态。如设备故障预测等。常用的算法包括自回归积分滑动平均模型(ARIMA)、灰度预测模型、循环神经网络以及深度学习模型等。
使用分类、回归模型对设备的故障进行预测以便在设备故障发生之前就进行维修,对设备采购需求、设备技改、设备剩余寿命进行预测,同时可以对设备的故障进行分类等。


聚类模型:
聚类分析是数据挖掘的重要研究内容与热点问题。其由来已久,国外可以追溯到亚里士多德时代。在中国,很久之前便流传着“物以类聚,人以群分”的聚类思想。从而可知聚类是一个非常古来的问题,它伴随着人类社会的产生与发展而不断深化。人们通过事物之间的区别性与相似性来认识与改造世界,将相似的对象聚集到一起。聚类便是按照某种相似性度量方法对一个集合进行划分成多个类簇,使得同一个类簇之间的相似性高,不同类簇之间不相似或者相似性低。同一类簇中的任意两个对象的相似性要大于不同类簇的任意两个对象。从学习的角度来看,聚类中事先并不需要知道每个对象所属的类别,即每个对象没有类标进行指导学习,也不知道每个簇的大小,而是根据对象之间的相似性来划分的,因此聚类分析属于一种无监督学习方法,又被称为“无先验知识学习方法”。其目的是在数据中寻找相似的分组结构和区分差异的对象结构。目前,聚类算法已经被广泛应用于科学与工程领域的方方面面,如在电子商务上进行消费群体划分与商品主题团活动等;在生物信息学上进行种群聚类,便于识别未知种群以及刻画种群结构等;在计算机视觉上应用聚类算法进行图像分割、模式识别与目标识别等;在社交网络上进行社区发现等;在自然语言处理中进行文本挖掘等。常见的聚类方式有以下几种:

1. 基于划分的聚类算法
基于划分的聚类算法是指基于欧式距离将各个对象划分到对应的簇中。主要的代表算法有:K-means、K-mediods、FK-means、K-modes、K-prototype、EM算法、CLARANS等;

2. 基于层次的聚类算法
基于层次的聚类算法可分为两大类,一种是自底向上,一种是自顶而下。自底向上策略是使用凝聚方法进行聚类,该方法最初是将每个点作为一个簇,使用某些准则对簇不断地进行合并,直到满足某个终止条件,便得到了聚类的所有簇;而自顶而下策略是使用分裂方法进行聚类,该方法最初是将所有点都作为一个簇,不断使用某些准则对簇进行分裂,直到所有对象都自成一个簇或者满足某个终止条件,这样便得到了各个簇,层次方法在每个过程中所得到的簇可以构成一棵聚类树。另外,可以在聚类过程中同时结合凝聚与分裂方法。层次凝聚的代表算法是AGNES(Agglomerative Nesting)算法,层次分裂的代表算法是DIANA(Divisive Analysis)算法,以及凝聚与分裂相结合的BIRCH、CURE等;

3. 基于图论的聚类算法
基于图论的聚类算法首先将样本对象构造成一张图,每个对象为图的一个顶点,对象之间的关系(相似度)作为图顶点之间的边值。然后,采用图论的方法对图进行划分而形成多个子图,每个子图便是一个簇,使得子图内部相似性大,子图间相似性小,称为图划分聚类。划分的准则有:最小割集(Minimum-cut)准则、率切(Ratio-cut)准则、规范切(Normalized-cut)准则、最小最大切(Min-max-cut)准则等,基于图论的聚类又称为谱聚类(Spectral Clustering),其基本思想是利用样本数据的相似矩阵(一般是Laplacian矩阵或Laplacian的变换矩阵)进行特征分解后得到的特征向量进行聚类。根据划分准则可以将谱聚类分为两大类:规范化谱聚类(Normalized Spectral Clustering)与非规范化谱聚类(Unnormalized Spectral Clustering),其主要区别在于输入的Laplacian矩阵是否进行了规范化,如最小割集与率切准则是非标准化准则,规范切与最小最大切准则则是规范化准则。在谱聚类算法中使用最广泛的是Ng与Jordan等人提出的基于规范切的谱聚类算法;

4. 基于密度的聚类算法
基于密度聚类算法不是基于距离的而是基于密度的。对象的密度是指以这个对象为中心,单位体积内对象的个数。该类聚类算法使得类簇内的密度大,类簇间的密度小。这样,基于密度聚类便能克服基于距离的算法只能发现“圆形簇”的缺点。其根据对象集合构成的空间的密度差异,将每个类簇看成是:由低密度区域分割开的高密度区域。该类型的算法的一个主要方向是如何去对高低密度区域进行定义。常见的有DBSCAN、OPTICS、DENCLUE、CBFSAFODP等算法;

5. 基于网格的聚类算法
基于网格的聚类算法,首先将数据空间划分成有限个单元的网格结构,每个单元作为基本处理单元,这种方法的一个突出优点便是处理速度快,它与数据本身的对象个数无关,只与把这些对象分成多少个网格有关,代表算法有STING、CLIQIUE等算法;

6. 基于模型的聚类算法
基于模型聚类是假定每一个类簇都是一个模型,然后去寻找能够拟合这个模型的簇,每一个模型反映的是数据对象在样本空间中的密度分布,其潜在假定就是:目标数据集是由一系列的概率分布所决定的。基于模型主要有两类方法:基于统计学的方法与基于神经网络的方法。基于统计学方法有COBWeb雨Auto-class算法,基于神经网络的有CL、LVQ、SOFM等算法。


关联规则挖掘:
关联规则挖掘是指:给定一个数据集T,每条记录有多个特征,从这些记录中找出所有支持度大于等于最小支持度support>=min_support,置信度大于等于最小置信度confidence>=min_confidence的规则Xs->Ys。其形式话的定义:两个不相交的非空集合Xs、Ys,如果Xs->Ys,就说Xs->Ys是一条规则。例如,啤酒与尿布的故事,它已成为了关联规则挖掘的经典案例,{啤酒}->{尿布}就是一条关联规则。支持度support的定义为:support{Xs->Ys}为集合Xs与集合Ys中的项在同一条记录中出现的次数除以总记录的个数。置信度confidence的定义为:confidence{Xs->Ys}为集合Xs与集合Ys中的项在同一条记录中出现的次数除以集合Xs中的项共同出现的次数。支持度和置信度越高,则说明规则越强。关联规则挖掘就是挖掘出具有一定强度的规则集合,即该规则集合中的每条规则的支持度要大于等于最小支持度,置信度要大于等于最小置信度。常见的关键规则挖掘算法有Apriori、FP-growth、GSpan等算法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/353752
推荐阅读
相关标签
  

闽ICP备14008679号