回归算法聚合
⑴ 数据挖掘核心算法之一--回归
数据挖掘核心算法之一--回归
回归,是一个广义的概念,包含的基本概念是用一群变量预测另一个变量的方法,白话就是根据几件事情的相关程度,用其中几件来预测另一件事情发生的概率,最简单的即线性二变量问题(即简单线性),例如下午我老婆要买个包,我没买,那结果就是我肯定没有晚饭吃;复杂一点就是多变量(即多元线性,这里有一点要注意的,因为我最早以前犯过这个错误,就是认为预测变量越多越好,做模型的时候总希望选取几十个指标来预测,但是要知道,一方面,每增加一个变量,就相当于在这个变量上增加了误差,变相的扩大了整体误差,尤其当自变量选择不当的时候,影响更大,另一个方面,当选择的俩个自变量本身就是高度相关而不独立的时候,俩个指标相当于对结果造成了双倍的影响),还是上面那个例子,如果我丈母娘来了,那我老婆就有很大概率做饭;如果在加一个事件,如果我老丈人也来了,那我老婆肯定会做饭;为什么会有这些判断,因为这些都是以前多次发生的,所以我可以根据这几件事情来预测我老婆会不会做晚饭。
大数据时代的问题当然不能让你用肉眼看出来,不然要海量计算有啥用,所以除了上面那俩种回归,我们经常用的还有多项式回归,即模型的关系是n阶多项式;逻辑回归(类似方法包括决策树),即结果是分类变量的预测;泊松回归,即结果变量代表了频数;非线性回归、时间序列回归、自回归等等,太多了,这里主要讲几种常用的,好解释的(所有的模型我们都要注意一个问题,就是要好解释,不管是参数选择还是变量选择还是结果,因为模型建好了最终用的是业务人员,看结果的是老板,你要给他们解释,如果你说结果就是这样,我也不知道问什么,那升职加薪基本无望了),例如你发现日照时间和某地葡萄销量有正比关系,那你可能还要解释为什么有正比关系,进一步统计发现日照时间和葡萄的含糖量是相关的,即日照时间长葡萄好吃,另外日照时间和产量有关,日照时间长,产量大,价格自然低,结果是又便宜又好吃的葡萄销量肯定大。再举一个例子,某石油产地的咖啡销量增大,国际油价的就会下跌,这俩者有关系,你除了要告诉领导这俩者有关系,你还要去寻找为什么有关系,咖啡是提升工人精力的主要饮料,咖啡销量变大,跟踪发现工人的工作强度变大,石油运输出口增多,油价下跌和咖啡销量的关系就出来了(单纯的例子,不要多想,参考了一个根据遥感信息获取船舶信息来预测粮食价格的真实案例,感觉不够典型,就换一个,实际油价是人为操控地)。
回归利器--最小二乘法,牛逼数学家高斯用的(另一个法国数学家说自己先创立的,不过没办法,谁让高斯出名呢),这个方法主要就是根据样本数据,找到样本和预测的关系,使得预测和真实值之间的误差和最小;和我上面举的老婆做晚饭的例子类似,不过我那个例子在不确定的方面只说了大概率,但是到底多大概率,就是用最小二乘法把这个关系式写出来的,这里不讲最小二乘法和公式了,使用工具就可以了,基本所有的数据分析工具都提供了这个方法的函数,主要给大家讲一下之前的一个误区,最小二乘法在任何情况下都可以算出来一个等式,因为这个方法只是使误差和最小,所以哪怕是天大的误差,他只要是误差和里面最小的,就是该方法的结果,写到这里大家应该知道我要说什么了,就算自变量和因变量完全没有关系,该方法都会算出来一个结果,所以主要给大家讲一下最小二乘法对数据集的要求:
1、正态性:对于固定的自变量,因变量呈正态性,意思是对于同一个答案,大部分原因是集中的;做回归模型,用的就是大量的Y~X映射样本来回归,如果引起Y的样本很凌乱,那就无法回归
2、独立性:每个样本的Y都是相互独立的,这个很好理解,答案和答案之间不能有联系,就像掷硬币一样,如果第一次是反面,让你预测抛两次有反面的概率,那结果就没必要预测了
3、线性:就是X和Y是相关的,其实世间万物都是相关的,蝴蝶和龙卷风(还是海啸来着)都是有关的嘛,只是直接相关还是间接相关的关系,这里的相关是指自变量和因变量直接相关
4、同方差性:因变量的方差不随自变量的水平不同而变化。方差我在描述性统计量分析里面写过,表示的数据集的变异性,所以这里的要求就是结果的变异性是不变的,举例,脑袋轴了,想不出例子,画个图来说明。(我们希望每一个自变量对应的结果都是在一个尽量小的范围)
我们用回归方法建模,要尽量消除上述几点的影响,下面具体讲一下简单回归的流程(其他的其实都类似,能把这个讲清楚了,其他的也差不多):
first,找指标,找你要预测变量的相关指标(第一步应该是找你要预测什么变量,这个话题有点大,涉及你的业务目标,老板的目的,达到该目的最关键的业务指标等等,我们后续的话题在聊,这里先把方法讲清楚),找相关指标,标准做法是业务专家出一些指标,我们在测试这些指标哪些相关性高,但是我经历的大部分公司业务人员在建模初期是不靠谱的(真的不靠谱,没思路,没想法,没意见),所以我的做法是将该业务目的所有相关的指标都拿到(有时候上百个),然后跑一个相关性分析,在来个主成分分析,就过滤的差不多了,然后给业务专家看,这时候他们就有思路了(先要有东西激活他们),会给一些你想不到的指标。预测变量是最重要的,直接关系到你的结果和产出,所以这是一个多轮优化的过程。
第二,找数据,这个就不多说了,要么按照时间轴找(我认为比较好的方式,大部分是有规律的),要么按照横切面的方式,这个就意味横切面的不同点可能波动较大,要小心一点;同时对数据的基本处理要有,包括对极值的处理以及空值的处理。
第三, 建立回归模型,这步是最简单的,所有的挖掘工具都提供了各种回归方法,你的任务就是把前面准备的东西告诉计算机就可以了。
第四,检验和修改,我们用工具计算好的模型,都有各种假设检验的系数,你可以马上看到你这个模型的好坏,同时去修改和优化,这里主要就是涉及到一个查准率,表示预测的部分里面,真正正确的所占比例;另一个是查全率,表示了全部真正正确的例子,被预测到的概率;查准率和查全率一般情况下成反比,所以我们要找一个平衡点。
第五,解释,使用,这个就是见证奇迹的时刻了,见证前一般有很久时间,这个时间就是你给老板或者客户解释的时间了,解释为啥有这些变量,解释为啥我们选择这个平衡点(是因为业务力量不足还是其他的),为啥做了这么久出的东西这么差(这个就尴尬了)等等。
回归就先和大家聊这么多,下一轮给大家聊聊主成分分析和相关性分析的研究,然后在聊聊数据挖掘另一个利器--聚类。
⑵ 回归算法有哪些
回归算法有:
线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。
用一个方程式来表示它,即Y=a+b*X + e,其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(s)来预测目标变量的值。
逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。这里,Y的值从0到1,它可以方程表示。
⑶ 回归算法有哪些
一张图为你解释清楚回归算法
⑷ 常用的数据挖掘算法有哪几类
常用的数据挖掘算法分为以下几类:神经网络,遗传算法,回归算法,聚类分析算法,贝耶斯算法。
目前已经进入大数据的时代,所以数据挖掘和大数据分析的就业前景非常好,学好大数据分析和数据挖掘可以在各个领域中发挥自己的价值;同时,大数据分析并不是一蹴而就的事情,而是需要你日积月累的数据处理经验,不是会被轻易替代的。一家公司的各项工作,基本上都都用数据体现出来,一位高级的数据分析师职位通常是数据职能架构中领航者,拥有较高的分析和思辨能力,对于业务的理解到位,并且深度知晓公司的管理和商业行为,他可以负责一个子产品或模块级别的项目,带领团队来全面解决问题,把控手下数据分析师的工作质量。
想要了解更多有关数据挖掘算法的信息,可以了解一下CDA数据分析师的课程。课程教你学企业需要的敏捷算法建模能力,可以学到前沿且实用的技术,挖掘数据的魅力;教你用可落地、易操作的数据科学思维和技术模板构建出优秀模型,只教实用干货,以专精技术能力提升业务效果与效率。点击预约免费试听课。
⑸ 聚类算法(上)06
这篇文章的整体排版主要是根据个人的博客来哒,如果感兴趣的话可以去我的自己搭建的个人博客看这篇 文章 。
聚类算法很多,所以和讲回归算法一样,分成了上下,上中主要讲了传统的K-Means算法以及其相应的优化算法入K-Means++,K-Means||和Canopy等。下中主要讲了另外两种的思路的聚类算法,即层次聚类和密度聚类。
聚类算就是怼大量未知标注的数据集,按照数据 内部存在的数据特征 将数据集 划分为多个不同的类别 ,使类别内的数据比较相似,类别之间的数据相似度比较小,属于 无监督学习 。
从定义就可以看出,聚类算法的关键在于计算样本之间的 相似度 ,也称为 样本间的距离 。
说到聚类算法,那肯定核心就是计算距离的公式了,目前常用的有以下几种。
闵可夫斯基距离(Minkowski) :公式2.1
KL距离(相对熵) :
思考下条件熵的定义,简单的来说就是在放生一件事情的时候,发生另一件事的概率。公式如下公式2.7.
注:这里书的概率不是实指概率,而是熵表达的含义。这个公式其实就是条件熵的公式。
杰卡德相似系数(Jaccard) :
这个很好理解,它的核心就是使用两个集合的交集和并集的比率来代表两者的相似度,也就是说重合的越多越相似。公式如下,公式2.8.
Pearson相关系数 :
这个就是考研数学中的相关系数,表达就是两者之间的想关系,所以直接拿来用就好了,公式如下公式2.9。
给定一个有M个对象的数据集,构建一个具有k个簇的模型,其中k<=M。满足 以下条件:
基本思想:
对于给定的类别数目k,首先给定初始划分,通过迭代改变样本和簇的隶属关系,使的每次处理后得到的划分方式比上一次的好,即 总的数据集之间的距离和变小了
K-means的核心算法如下:
再循环中的第二步,我们移动了中心点的位置,把中心点移到了隶属于该中心点类别的所有样本的中间,并使用样本的均值作为位置。这样子看似是拍脑袋想的移动策略,其实是可以推导出来的。正如聚类算法思想所指出的,我们要让所有的点到自己的分类的中心点的欧几里得距离最小,所以我们设置目标放称为公式4.1,公式中的1/2是为了之后求导运算方便。我们为了让目标函数尽可能的小,所以使用了之前一直在使用的思考方式,对其使用梯度下降算法,求导后得到公式4.2,之后令其等于0,就得到了公式4.3。
最后这个看似不错的算法,其实有着不小的缺点,那就是 初值敏感 。我们来仔细想一想,如果两个不小心随机生成的初值落到了一个类别中,两者的距离还特别近,这中情况下就很难正确分类了。除此之外,由于移动策略中使用的是均值,也就是说如果集合中含有非常大的误差点的话,这样子会是中心点的设置偏离正确点很远,所以很多时候我们改用 中值来更新中心点 ,这就是我们说的K-Mediods聚类,即K中值聚类。
总结下K-means算法
优点:
由于K-Means对初始中心点非常敏感,我们这里就尝试着通过二分法弱化初始中心点。这种算法的具体步骤如下:
我们在这个算法中提到了SSE,这个可以是簇内所有样本点,到其中心点的距离的总和,代表着簇内的点是不是高度相关。计算公式如下公式4.4。
可以看出在这种算法下,很好的避开了,两个中心点都在一起的情况。
K-Means++做的改善,是直接对初始点的生成位置的选择进行优化的,他的初始点生成策略如下:
Canopy属于一种“粗略地”聚类算法,简单的来说就是,不那么追求自动获得最优解,而是引入了一种人为规定的先验值进行聚类,具体步骤如下:
注:Canopy算法得到的最终结果的值,聚簇之间是可能存在重叠的,但是不会存在 某个对象不属于任何聚簇的情况
显然,这种算法虽然快,但是很难生成满足我们应用的模型,所以通常我们将它作为解决K-Means初值敏感的方案,他们合在一起就是Canopy+K-Means算法。
顺序就是先使用Canopy算法获得K个聚类中心,然后用这K个聚类中心作为K-Means算法。这样子就很好的解决了K-Means初值敏感的问题。
Mini Batch K-Means算法是K-Means算法的一种优化变种,采用小规模的数据子集,来减少计算时间。其中采用小规模的数据子集指的是每次训练使用的数据集是在训练算法的时候随机抽取的数据子集。Mini Batch K-Means算法可以减少K-Means算法的收敛时间,而且产生的结果效果只是略差于标准K-Means算法。
它的算法步骤如下:
聚类算法的衡量标准有很多,包括均一性、完整性、V-measure、调整兰德系数(ARI ,Adjusted Rnd Index)、调整互信息(AMI,Adjusted Mutual Information)以及轮廓系数等等。
均一性:一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是正确率,即每个聚簇中正确分类的样本数占该聚簇总样本数的比例和。其公式如下公式5.1。
完整性:同类别样本被归类到相同簇中,则满足完整性。每个聚簇中正确分类的样本数占该类型的总样本数比例的和,通俗的来说就是,我们已分类类别中,分类正确的个数。
其公式如下,公式5.2:
在实际的情况中,均一性和完整性是往往不能兼得的,就好像抓特务时的矛盾一样,到底是保证每个抓的人都是特务,还是宁可错抓也不放过一个特务,之间的取舍很难把握。所以再一次贯彻,鱼和熊掌不可兼得,我们就加权,于是得到的就是V-measure,其公式如下公式5.3:
兰德系数(RI,Rand index) ,我用中文看了不少讲兰德系数的博客,其中的文字说明几乎都是相同的,对个人的理解帮助不是特别大,于是用英文查的。最终理解了这个系数的参数的意思,想看英文说明的,个人觉得还挺好懂的参考 这里 。以下是我个人的讲解。
首先,将原数据集中的元素进行两两配对形成一个新的数据集,我们称之为S数据集。这时候,我们将原数据集,根据两种不同的策略分别划分成r份和s份,并对这两个数据集命名为X和Y。在这里我们可以看出,X和Y的元素是相同的,只是他们的划分方式不同。
接下来我们来思考,S数据集中,每个元素中的两个样本,在X和Y中只有两种可能,就是两个样本都在一个子集中,或者不在一个子集中,那么对于S中的一个元素,只有四种可能性。
接下来引入, 调整兰德系数(ARI,Adjusted Rnd Index) ,ARI取值范围 ,值越大,表示聚类结果和真实情况越吻合。从广义的角度来将,ARI是衡量两个数据分布的吻合程度的,公式5.5如下:
调整互信息,整体的流程很像ARI,AMI则是对MI进行调整。而MI是使用信息熵来描述的。那么互信息表示了什么呢,首先先看下 维基网络的定义 :
之前我们说到的衡量指标都是有标签的,这里的轮廓系数则是不包含标签的评价指标。