一,回归类问题
- linear regression 线性回归
最主要的目的就是寻找某一现象发生的原因,预测,受单一变量影响
通过匹萨价格预测的例子介绍了一元线性回归,一个解释变量和一个响应变量的线性拟合
这几年我国的肺癌发生率一直在上升,是什么原因引起的呢,如果我们目前只想考虑一个因素,比如烟草的销量。那我们就可以粗略的看一下烟草的销量是不是与肺癌的发生率呈线性关系.
总之,如果你发现了一种现象,又想探索这种现象背后的原因,就可以考虑采用回归分析。如果这种现象可以用连续型数值来描述的话,可以考虑采用线性回归。
一元线性回归拟合模型的参数估计常用方法是普通最小二乘法(ordinary least squares )或线性最小二乘法(linear least squares)。 首先,我们定义出拟合成本函数,然后对参数进行数理统计
- multiple linear regression 多元线性回归
用于预测某类值,受多个变量影响
讨论了多元线性回归,具有更一般形式的若干解释变量和一个响应变量的问题
二,流式计算和批量计算的比较
- 批量计算
目前绝大部分传统数据计算和数据分析服务均是基于批量数据处理模型: 使用ETL系统或者OLTP系统进行构造数据存储,在线的数据服务(包括Ad-Hoc查询、DashBoard等服务)通过构造SQL语言访问上述数据存储并取得分析结果。这套数据处理的方法论伴随着关系型数据库在工业界的演进而被广泛采用。但在大数据时代下,伴随着越来越多的人类活动被信息化、进而数据化,越来越多的数据处理要求实时化、流式化,当前这类处理模型开始面临实时化的巨大挑战。传统的批量数据处理模型传统的批量数据处理通常基于如下处理模型:
- 使用ETL系统或者OLTP系统构造原始的数据存储,以提供给后续的数据服务进行数据分析和数据计算。即下图,用户装载数据,系统将根据自己的存储和计算情况,对于装载的数据进行索引构建等一系列查询优化工作。因此,对于批量计算,数据一定需要预先加载到计算系统,后续计算系统才在数据加载完成后方能进行计算。
- 用户/系统主动发起一个计算作业(例如MaxCompute的SQL作业,或者Hive的SQL作业)并向上述数据系统进行请求。此时计算系统开始调度(启动)计算节点进行大量数据计算,该过程的计算量可能巨大,耗时长达数分钟乃至于数小时。同时,由于数据累计的不可及时性,上述计算过程的数据一定是历史数据,无法保证数据的”新鲜”。用户可以根据自己需要随时调整计算SQL,甚至于使用AdHoc查询,可以做到即时修改即时查询。
- 计算结果返回,计算作业完成后将数据以结果集形式返回用户,或者可能由于计算结果数据量巨大保存着数据计算系统中,用户进行再次数据集成到其他系统。一旦数据结果巨大,整体的数据集成过程漫长,耗时可能长达数分钟乃至于数小时。
批量计算是一种批量、高时延、主动发起的计算。 用户使用的批量计算的顺序是:
- 预先加载数据;
- 提交计算作业,并且可以根据业务需要修改计算作业,再次提交作业;
计算结果返回
- 流式计算
不同于批量计算模型,流式计算更加强调计算数据流和低时延,流式计算数据处理模型如下:
使用实时数据集成工具,将数据实时变化传输到流式数据存储(即消息队列,如DataHub);此时数据的传输变成实时化,将长时间累积大量的数据平摊到每个时间点不停地小批量实时传输,因此数据集成的时延得以保证。
此时数据将源源不断写入流数据存储,不需要预先加载的过程。同时流计算对于流式数据不提供存储服务,数据是持续流动,在计算完成后就立刻丢弃。数据计算环节在流式和批量处理模型差距更大,由于数据集成从累积变为实时,不同于批量计算等待数据集成全部就绪后才启动计算作业,流式计算作业是一种常驻计算服务,一旦启动将一直处于等待事件触发的状态,一旦有小批量数据进入流式数据存储,流计算立刻计算并迅速得到结果。同时,阿里云流计算还使用了增量计算模型,将大批量数据分批进行增量计算,进一步减少单次运算规模并有效降低整体运算时延。从用户角度,对于流式作业,必须预先定义计算逻辑,并提交到流式计算系统中。在整个运行期间,流计算作业逻辑不可更改!用户通过停止当前作业运行后再次提交作业,此时之前已经计算完成的数据是无法重新再次计算。
- 不同于批量计算结果数据需等待数据计算结果完成后,批量将数据传输到在线系统;流式计算作业在每次小批量数据计算后可以立刻将数据写入在线/批量系统,无需等待整体数据的计算结果,可以立刻将数据结果投递到在线系统,进一步做到实时计算结果的实时化展现。
流计算是一种持续、低时延、事件触发的计算作业。,用户使用流计算的顺序是:
- 提交流计算作业;;
- 提交流计算作业;
计算结果持续不断对外写出;
- 模型对比
对比指标 | 批量计算 | 流式计算 |
---|---|---|
数据集成方式 | 预先加载数据 | 实时加载数据实时计算 |
使用方式 | 业务逻辑可以修改,数据可重新计算 | 业务逻辑一旦修改,之前的数据不可重新计算(流数据易逝性) |
数据范围 | 对数据集中的所有或大部分数据进行查询或处理 | 对滚动时间窗口内的数据或仅对最近的数据记录进行查询或处理 |
数据大小 | 大批量数据 | 单条记录或包含几条记录的微批量数据 |
性能 | 几分钟至几小时的延迟 | 只需大约几秒或几毫秒的延迟 |
分析 | 复杂分析 | 简单的响应函数、聚合和滚动指标 |
三,分类
1,定义
- 分类是数据挖掘中应用非常广泛的一项技术,利用分类算法可以从数据集中提取描述数据类的一个函数或模型,并把数据集中的每个对象归结到某个已知的类别中;
- 从机器学习的观点,分类属于监督学习,每个训练样本的数据对象已经有类标识,通过学习可以形成表达数据对象与类标识间对应的知识;
- 数据挖掘的目标就是根据样本数据形成的类知识并对数据进行分类,以预测未来数据的归类。分类具有广泛的应用,例如医疗诊断、信用卡的信用分级、图像模式识别、营销用户画像等;
分类挖掘所获的分类模型可以采用多种形式加以描述输出。其中主要的表示方法有:分类规则、决策树、数学公式和神经网络等;
k 近邻算法
定义:(kNN,k-Nearest Neighbors)算法是一种基于实例的分类方法;
描述:该方法就是找出与未知样本x距离最近的k个训练样本,看这k个样本中多数属于哪一类,就把x归为那一类。k-近邻方法是一种懒惰学习方法,它存放样本,直到需要分类时才进行分类,如果样本集比较复杂,可能会导致很大的计算开销,因此无法应用到实时性很强的场合。
- 决策树
定义:决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则
描述:构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处
- 朴素贝叶斯
定义: 贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法
描述: 这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。为此就出现了许多降低独立性假设的贝叶斯分类算法,如TAN(Tree Augmented Na?ve Bayes)算法,它是在贝叶斯网络结构的基础上增加属性对之间的关联来实现的。
- 支持向量机
定义:支持向量机(SVM,Support Vector Machine)是Vapnik根据统计学习理论提出的一种新的学习方法;
描述:它的最大特点是根据结构风险最小化准则,以最大化分类间隔构造最优分类超平面来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。对于分类问题,支持向量机算法根据区域中的样本计算该区域的决策曲面,由此确定该区域中未知样本的类别;
- 人工神经网络
定义:人工神经网络(Artificial Neural Networks,ANN)是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。
描述:在这种模型中,大量的节点(或称”神经元”,或”单元”)之间相互联接构成网络,即”神经网络”,以达到处理信息的目的。神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。
目前,神经网络已有上百种不同的模型,常见的有BP网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络)等。但是当前的神经网络仍普遍存在收敛速度慢、计算量大、训练时间长和不可解释等缺点;
- 基于关联规则的分类
定义: 关联规则挖掘是数据挖掘中一个重要的研究领域;
描述: 近年来,对于如何将关联规则挖掘用于分类问题,学者们进行了广泛的研究。关联分类方法挖掘形如condset→C的规则,其中condset是项(或属性-值对)的集合,而C是类标号,这种形式的规则称为类关联规则(class association rules,CARS)。关联分类方法一般由两步组成:第一步用关联规则挖掘算法从训练数据集中挖掘出所有满足指定支持度和置信度的类关联规则;第二步使用启发式方法从挖掘出的类关联规则中挑选出一组高质量的规则用于分类。属于关联分类的算法主要包括CBA[44] ,ADT[45] ,CMAR[46] 等
- 集成学习(Ensemble Learning)
定义:实际应用的复杂性和数据的多样性往往使得单一的分类方法不够有效;
描述: 学者们对多种分类方法的融合即集成学习进行了广泛的研究。集成学习已成为国际机器学习界的研究热点,并被称为当前机器学习四个主要研究方向之一。
集成学习是一种机器学习范式,它试图通过连续调用单个的学习算法,获得不同的基学习器,然后根据规则组合这些学习器来解决同一个问题,可以显著的提高学习系统的泛化能力。组合多个基学习器主要采用(加权)投票的方法,常见的算法有装袋[47] (Bagging),提升/推进[48, 49] (Boosting)等。
有关分类器的集成学习见图2-5。集成学习由于采用了投票平均的方法组合多个分类器,所以有可能减少单个分类器的误差,获得对问题空间模型更加准确的表示,从而提高分类器的分类准确度;
选择各种分类算法的主要评判依据:
- 预测的准确率。模型正确地预测新样本的类标号的能力;
- 算速度。包括构造模型以及使用模型进行分类的时间;
- 强壮性。模型对噪声数据或空缺值数据正确预测的能力;
- 可伸缩性。对于数据量很大的数据集,有效构造模型的能力;
- 模型描述的简洁性和可解释性。模型描述愈简洁、愈容易理解,则愈受欢迎。
2,分类技术应用中的过度拟合问题
分类技术应用中的过度拟合问题
你有一份数据,通过这份数据构建模型,过度拟合就是说你的模型过度的提取了这份样本数据的特征,将此模型进行应用其他数据时会出现准确性并不高。
也及一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据;
过度拟合产生的原因:
- 噪声数据导致过度拟合;
- 缺乏代表性样本导致过度拟合;
免过度拟合的策略:提前停止树的增长或者对已经生成的树按照一定的规则进行后剪枝。
四,聚类
1,定义
- 聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类的目的是使得属于同类别的对象之间的差别尽可能的小,而不同类别上的对象的差别尽可能的大。因此,聚类的意义就在于将观察到的内容依据相应算法组织成类分层结构,把类似的事物组织在一起;
- 与分类技术不同,在机器学习中,聚类是一种无监督学习。也就是说,聚类是在预先不知道欲划分类的情况下,根据信息相似度原则进行信息聚类的一种方法。通过聚类,人们能够识别密集的和稀疏的区域,因而发现全局的分布模式,以及数据属性之间的有趣的关系;
- 从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。常见的聚类算法包括:K-均值聚类算法、K-中心点聚类算法、层次聚类、DBScan、EM聚类、层次聚类等。聚类分析广泛应用于金融、营销、电力、交通、教育等多种行业领域;
- 聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。不同研究者对于同一组数据进行聚类分析,所得到的聚类数未必一致;
2,分类与聚类的对比
分类
- 分类属于监督学习;
- 这些类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类;
- 根据文本的特征或属性,划分到已有的类别中;
聚类
- 聚类属于无监督学习;
- 压根不知道数据会分为几类(研究人员可以指定聚类数),通过聚类分析将数据聚合成几个群体;
- 需要分析人员找出各类用户的重要特征;
- 需要通过各类别的特征解释含义以及为各类别命名;
3,总结分类和聚类
在实际应用中,除了二者的独立应用外,两种技术的结合应用有更大的实践价值。尤其在大数据时代背景下,信息隐藏在杂乱的数据里,需要综合多种数据挖掘方法以获取足够的信息。分类技术针对于已知分类,对于未知分类的数据则需要聚类技术的辅助。
4,四种常用聚类算法研究
- k-means聚类算法
k-means是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。
k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
- 层次聚类算法
根据层次分解的顺序是自底向上的还是自上向下的,层次聚类算法分为凝聚的层次聚类算法和分裂的层次聚类算法。
凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。绝大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义上有所不同
- SOM聚类算法
SOM神经网络[11]是由芬兰神经网络专家Kohonen教授提出的,该算法假设在输入对象中存在一些拓扑结构或顺序,可以实现从输入空间(n维)到输出平面(2维)的降维映射,其映射具有拓扑特征保持性质,与实际的大脑处理有很强的理论联系
SOM网络包含输入层和输出层。输入层对应一个高维的输入向量,输出层由一系列组织在2维网格上的有序节点构成,输入节点与输出节点通过权重向量连接。 学习过程中,找到与之距离最短的输出层单元,即获胜单元,对其更新。同时,将邻近区域的权值更新,使输出节点保持输入向量的拓扑特征
- FCM聚类算法
>
1965年美国加州大学柏克莱分校的扎德教授第一次提出了‘集合’的概念。经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面。为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析。用模糊数学的方法进行聚类分析,就是模糊聚类分析[12]。
FCM算法是一种以隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是传统硬聚类算法的一种改进
五,推荐 recommendation
基于用户(user-based)和基于物品(item-based)两种
- 基于物品的推荐,slope-one 算法
- 分布式推荐
- 基于用户的推荐,协同过滤,collaborative filtering