白话算法

决策时

什么是决策树

判定树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。
70281bdba0f3bb825d51c881731619d1.png

3c2a6280c98d75ac1fa901078532f493.png

决策树需要知道的一些知识

  • 熵(entropy)
  • 概念: 信息和抽象,
  • 如何度量?
    1948年,香农提出了 ”信息熵(entropy)“的概念 :一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者 是我们一无所知的事情,需要了解大量信息

==> 信息量的度量就等于不确定性的多少

例子:猜世界杯冠军,假如一无所知,猜多少次?

每个队夺冠的几率不是相等的

比特(bit)来衡量信息的多少
3cf3fed7b58bc270d2e34cfceb5ee654.png
6d1984e7610a2382831d3587db82c01d.png
变量的不确定性越大,熵也就越大

举个例子

a512c9b51ba8eea2cb5e840ce112064a.png

fd26f83dfd4ba392fd69b0d15f3297d8.png

142e9d42179cab5e35eb38017eca04c7.png

6f0d556158b3e948a396031d5e9eecdd.png

类似,Gain(income) = 0.029, Gain(student) = 0.151, Gain(credit_rating)=0.048

所以,选择age作为第一个根节点

ebffd932b3b7e3ecb71fe42e9df35590.png

决策树的优化策略

  • 先剪枝
    预剪枝就是在树的构建过程(只用到训练集),设置一个阈值(样本个数小于预定阈值或GINI指数小于预定阈值),使得当在当前分裂节点中分裂前和分裂后的误差超过这个阈值则分列,否则不进行分裂操作。

  • 后剪枝(主要是防止过拟合))
    基于已有的树切分测试数据:

    1. 如果存在任一子集是一棵树,则在该子集递归剪枝过程
    2. 计算不合并的误差
    3. 如果合并会降低误差的话,就将叶节点合并
    4. 在回归树一般用总方差计算误差(即用叶子节点的值减去所有叶子节点的均值)。

决策树的优点:

直观,便于理解,小规模数据集有效

决策树的缺点:

  • 处理连续变量不好
  • 类别较多时,错误增加的比较快
  • 可规模性一般

模型的评价

模型的训练

  • train_test split
    即简单的将数据分为训练集和测试集,这种方法适用于数据量较大的情况。
    c8214c433d0a820e112c19bdcc3d6e7c.png

  • k-fold split
    是指将数据分为k份,然后在每份中再分割出训练集和测试集,分别训练模型,最后对模型的测试结果求平均数
    f1ec66025b17b7d7f6d733d79154e081.png

模型的评价

  • 准确率(accuracy)
    042b0ba58723f9bd261bbb4762b9c2a1.png

  • 精确率({Precision)
    它计算的是所有"正确被检索的item(TP)"占所有"实际被检索到的(TP+FP)"的比例.
    dd6d4e98c04caa661367da07b53e80e8.png

    Accaracy和Precision作用相差不大,都是值越大,分类器效果越好,但是有前提,前提就是样本是均衡的。如果样本严重失衡了,Accuracy不再适用,只能使用Precision,举个简单的例子。比如二分类问题为预测癌症的发生,显然在现实世界中,癌症人数在所有人数中的占比通常只是0.5%左右,即正负样本比例为1:200左右,此时一个分类器如果使用Accuracy作为评估指标,则分类器无需花太多功夫,分类器只用把样本全部清一色预测为正常,那么Accuracy也能达到99.5%的准确率,如此高的准确率,但却毫无任何意义,无法应用到实处,泛化能力极差。

  • 召回率(recall)
    它计算的是所有"正确被检索的item(TP)"占所有"应该检索到的item(TP+FN)"的比例。
    6977d2d24709680ae87555d7abd26c89.png

  • F1指标
    F1值就是精确值和召回率的调和均值,
    285c8a683a03f3ed9fe5fdc755ea870b.png

  • ROC

ROC,AUC优点:当数据中的正负样本分布发生变化时,ROC能够保持不变,尤其在样本不均衡的应用场景中。首先看两个定义
- TPR = TP / (TP+FN)真正率,指在所有正样本中,被准确识别为正样本的比例,公式与召回率一样
- FPR = FP / (TN + FP)假正率,指在所有负样本中,被错误识别为正样本的比例。又叫误报率,错误接收率。

以TPR为y轴,FPR为x轴,通过不断改变threshold的值,获取到一系列点(FPR,TPR),将这些点用平滑曲线连接起来即得到ROC曲线,Threshold定义为正负样本分类面的阈值,通常的二分类模型中取0.5,在绘制ROC曲线过程中,通常取测试集上各样本的概率预测分值,即predict_prob,将所有样本的概率预测分值从高到低排序,并将这些分值依次作为threshold,然后计算对应的点(FPR,TPR),比如最大的样本预测分值为0.9时,当threshold取0.9时,所有样本分值大于等于0.9的才预测为正样本,小于0.9的预测为负样本。最后加上两个threshold值1和0,分别可对应到(0,0),(1,1)两个点,将这些点连接起来即得到ROC曲线,点越多,曲线越平滑,而ROC曲线下的面积即为AUC。

ROC特点

  • 一个好的分类器应该ROC曲线应该尽量位于左上位置,当ROC为(0,0)和(1,1)两个点的直线时,分类器效果跟随机猜测效果一样;
  • ROC曲线下方的面积作为AUC,可以用AUC作为衡量分类器好坏的标准,理想的分类器AUC为1,当AUC为0.5时,效果跟随机猜测效果一致;(3)ROC能很好的解决正负样本分布发生变化的情况,在正负样本分布发生变化的情况下,ROC能够保持不变。

朴素贝叶斯

基本概念

  • 先验概率:是指根据以往经验和分析得到的概率

  • 后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小

  • 全概率公式:
    deabcc31a749386e4841773ced3d6614.jpeg

  • 贝叶斯公式
    0d7afc7817f122434f7a41d3b9b4f63b.gif
    c6105cd16edaf76ca84dbbed4c3b5a6b.gif

算法流程

朴素贝叶斯分类的正式定义如下:      
1、设13404e304bbd3c9af06ed07938b94d6a.gif 为一个待分类项,而每个a为x的一个特征属性。      
2、有类别集合753d149b2bf80b7791653f76251b4fde.gif
3、计算cdcb67c7d8088adf0ef2791daf930056.gif
4、如果e77f2bbb41429cdc51b8b0c3ab338928.gif,则d965c1df6693da9cf5be4f14c19f866f.gif

应用的时候需要注意的点:

贝叶斯算法默认每个属性是相互独立的,因此,在应用前需要弄清楚属性之间是否存在明显的相关性,较好的方法是对属性进行相关性检验,去除那些相关的属性,减少误差

朴素贝叶斯与文本挖掘

文本数据是常见的相关性弱的数据,对一篇文本取出每个不相同的词,构成属性列,其绝大部分的属性是不相关的。朴素贝叶斯再文本挖掘中的常见应用步骤如下:

  1. 准备词典
  2. 依据词典对文本进行向量化
  3. 根据向量矩阵应用贝叶斯

总结

  • 不同于其它分类器,朴素贝叶斯是一种基于概率理论的分类算法;
  • 特征之间的条件独立性假设,显然这种假设显得“粗鲁”而不符合实际,这也是名称中“朴素”的由来。然而事实证明,朴素贝叶斯在有些领域很有用,比如垃圾邮件过滤;在具体的算法实施中,要考虑很多实际问题。比如因为“下溢”问题,需要对概率乘积取对数;
  • 再比如词集模型和词袋模型,还有停用词和无意义的高频词的剔除,以及大量的数据预处理问题,等等;
  • 总体上来说,朴素贝叶斯原理和实现都比较简单,学习和预测的效率都很高,是一种经典而常用的分类算法。

回归问题

简单线性回归

简单线性回归主要是考虑一个变量与另一个变量之间的线性相关关系。一般表达式:3ff6566925271ea30884a9c9c739576c.png

多元线性回归

e8dd04685e105ee4c0bc6c247461ef0a.png
多元线性回归主要考虑的是解决几个自变量与一个因变量之间的相关关系。从建模的角度上考虑,多元线性模型会比简单的线性回归模型表现的效果更好。这主要是因为影响一个因变量的因素在现实情况中并不只一个,增加自变量的个数,能够增强模型对因变量的解释程度,模型的拟合和鲁棒性都会有所提高。

逻辑回归

dbdc8dd16510245abaee7b4f7cab3677.png

将回归模型应用到分类模型中:找一个单调可微函数将分类标记y与线性回归模型的预测值联系起来。利用对数几率函数(logistic function)

若将y视为样本为正例的可能性,1-y视为样本为负例的可能性,两者的比值y/(1-y)称为几率(odds),反应了样本为正例的相对可能性,对几率取对数则得到对数几率(log odds,亦称为logit)。虽然模型名字叫对数几率回归,但实际是一种分类算法,算法的主要优点有:直接对分类的可能性建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题;它不仅预测类别,而是预测概率可以帮助决策;几率函数是任意阶可导的凸函数有很好的数学性质,现有的许多数值优化算法都可以直接用于求解最优解。

其他回归问题

除了上述线性回归的问题之外,还有其他的回归方法,比如多项式回归等

回归问题的求解

回归问题的常用求解方法主要有:

  • 最小二乘法
  • 岭回归
  • LASSO回归
  • 对于非线性回归,常用的启发式算法也会用来求解回归方程的系数,主要思想是将回归方程系数求解看做是求误差平方和最小值的规划问题

集成

  • 求平均
    简单的对数据建立多个模型,在回归问题中,对模型的预测结果求平均,输出为最终结果;在分类问题中,对模型的结果采取少数服从多数原则

  • bagging(挂袋法)
    a5b394fb532066824ab3fbd7d135c7db.jpeg

    Bagging即套袋法,其算法过程如下:

    1. 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
    2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
    3. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
  • boosting
    ef037126b20899835f9f80e72d495c98.jpeg

AdaBoost 通过对样本集的操作来训练产生不同的分类器,他是通过更新分布权值向量来改变样本权重的,也
就是提高分错样本的权重,重点对分错样本进行训练。

  1. 没有先验知识的情况下,初始的分布应为等概分布,也就是训练集如果有 n个样本,每个样本的分布概率为1/ n。
  2. 每次循环后提高错误样本的分布概率,分错的样本在训练集中所占权重增大,使得下一次循环的基分类器
    能够集中力量对这些错误样本进行判断。

监督学习与无监督学习

无监督学习

关联规则挖掘

关联规则是形如X→Y的蕴涵式,其中, X和Y分别称为关联规则的先导(antecedent或left-hand-side, LHS)和后继(consequent或right-hand-side, RHS) 。其中,关联规则XY,存在支持度和信任度。

  • 支持度:关联规则在D中的支持度(support)是D中事务同时包含X、Y的百分比,即概率

  • 信任度:置信度(confidence)是D中事务已经包含X的情况下,包含Y的百分比,即条件概率

如果满足最小支持度阈值和最小置信度阈值,则认为关联规则是有趣的。这些阈值是根据挖掘需要人为设定
5cd1eeb024fa72489116ca8c91780b0b.png

用一个简单的例子说明。表1是顾客购买记录的数据库D,包含6个事务。项集I={网球拍,网球,运动鞋,羽毛球}。考虑关联规则(频繁二项集):网球拍与网球,事务1,2,3,4,6包含网球拍,事务1,2,6同时包含网球拍和网球,X^Y=3, D=6,支持度(X^Y)/D=0.5;X=5, 置信度(X^Y)/X=0.6。若给定最小支持度α = 0.5,最小置信度β = 0.6,认为购买网球拍和购买网球之间存在关联。

Apriori算法

4d5f0134c1c90b193ffdce422170fa14.png

该算法的基本思想 [2] 是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递归的方法。
(1) L1 = find_frequent_1-itemsets(D);
(2) for (k=2;Lk-1 ≠Φ ;k++) {
(3) Ck = apriori_gen(Lk-1 ,min_sup);
(4) for each transaction t ∈ D {//scan D for counts
(5) Ct = subset(Ck,t);//get the subsets of t that are candidates
(6) for each candidate c ∈ Ct
(7) c.count++;
(8) }
(9) Lk ={c ∈ Ck|c.count≥min_sup}
(10) }
(11) return L= ∪ k Lk;

可能产生大量的候选集,以及可能需要重复扫描数据库,是Apriori算法的两大缺点

聚类

定义

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。

聚类算法的应用

在商务上,聚类能帮助市场分析人员从客户基本库中发现不同的客户群,并且用购买模式来刻画不同的客户群的特征。在生物学上,聚类能用于推导植物和动物的分类,对基因进行分类,获得对种群中固有结构的认识。聚类在地球观测数据库中相似地区的确定,汽车保险单持有者的分组,及根据房子的类型、价值和地理位置对一个城市中房屋的分组上也可以发挥作用。聚类也能用于对Web上的文档进行分类,以发现信息。

距离
  • 欧式距离a3640d3bcca172f47179ad57d85da42a.png

  • 马氏距离:即数据标准化之后的欧氏距离fab11ff6f30485cc5ec60bac77ab1db3.png

  • 余弦距离e8e35fece257c05523265c1a6fd32b53.png

  • 曼哈顿距离 (Manhattan distance)d4ef5a0a42b06506b7e6818ba8e4f45a.png

K-means算法

算法步骤:
(1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。

(2) 计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。

(3) 计算每一类中中心点作为新的中心点。

(4) 重复以上步骤,直到每一类中心在每次迭代后变化不大为止。也可以多次随机初始化中心点,然后选择运行结果最好的一个。 下图演示了K-Means进行分类的过程:

评价指标

  • 轮廓系数
    b81f2126186829da6ee96232ffa5334f.png

    1. 本i到同簇其他样本的平均距离ai。ai 越小,说明样本i越应该被聚类到该簇。将ai 称为样本i的簇内不相似度 簇C中所有样本的a i 均值称为簇C的簇不相似度。
    2. 样本i到其他某簇Cj 的所有样本的平均距离bij,称为样本i与簇Cj 的不相似度。定义为样本i的簇间不相似度:bi =min{bi1, bi2, …, bik} ,i越大,说明样本i越不属于其他簇。
    3. 样本i的簇内不相似度a i 和簇间不相似度b i ,定义样本i的轮廓系数:
    • 接近1,则说明样本i聚类合理;
    • 接近-1,则说明样本i更应该分类到另外的簇;
    • i 近似为0,则说明样本i在两个簇的边界上。
  • SSE:计算同类元素与类中心之间的距离和,SSE越小,聚类效果越好
    优点:

  1. 解决聚类问题的经典算法,简单、快速
  2. 当处理大数据集时,该算法保持可伸缩性和高效率
  3. 当簇近似为高斯分布时,它的效果较好

缺点:

  1. 在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用
  2. 必须实现给出k(要生成簇的数目),而且对初值敏感,即对于不同的初值,可能会导致不同结果
  3. 不适合非凸形状的簇或者大小差别很大的簇
  4. 对噪声和孤立点敏感

社会网络分析

有一句格言:不在于你知道什么,而在于你认识谁?

埃米尔.涂尔干(Emile Durkheim,1879)说:“有一种观点认为,对于社会生活的解释,不应当靠参与者的观念进行,而应当根据尚未被自觉认识到的更深层的原因进行。我 认为这样做会极富成就。我还认为,其中的原因主要应当在由个人形成的组群的方式中去寻找。”

社会网络分析是研究一组行动者的关系的研究方法。一组行动者可以是人、社区、群体、组织、国家等,他们的关系模式反映出的现象或数据是网络分析的焦 点。从社会网络的角度出发,人在社会环境中的相互作用可以表达为基于关系的一种模式或规则,而基于这种关系的有规律模式反映了社会结构,这种结构的量化分 析是社会网络分析的出发点。因此,社会网络分析关注的焦点是关系和关系的模式,采用的方式和方法从概念上有别于传统的统计分析和数据处理方法。 7694ae2fb24fb5c7a86b8330fa95ce4c.gif

三种中心度

  • 中心度(degree)
    设想一下,你在微信上有个账号,那么是不是意味着微信好友数量越多,那么你的社交圈子越广?(假设都是真实好友,不考虑微商神马的奇葩情况)比如我有20个好友,那么意味着20个结点与我相连。如果你有50个好友,那么意味着你的点度中心度比我高,社交圈子比我广。这个就是点度中心性的概念。当然,刚才这个情况是无向图的情形,如果是有向图,需要考虑的出度和入度的问题。在刚才的基础上拓展一下,假如我们要比较你在微博和微信上的点度中心度,刚才的方法是否适用?如果说使用微信与微博的人数差不多,那么的确可以。但是如果说用户数量不一样呢?那么我们需要考虑到去规模化的问题,这就是标准化的点度中心性的理念。

  • 中心性(closeness)
    对于了解图论的朋友而言,最短路这个概念一定不陌生。我们设想一个实际生活中的场景,比如你要建一个大型的娱乐商场,你可能会希望周围的顾客到达这个商场的距离都可以尽可能地短。这个就涉及到接近中心性的概念,接近中心性的值为路径长度的倒数。接近中心性需要考量每个结点到其它结点的最短路的平均长度。也就是说,对于一个结点而言,它距离其它结点越近,那么它的中心度越高。一般来说,那种需要让尽可能多的人使用的设施,它的接近中心度一般是比较高的。

  • 中心性(betweenness)
    这个度量很有意思。这个有点像是我们身边那种社交达人,我们认识的不少朋友可能都是通过他/她认识的,这个人起到了中介的作用。中介中心性指的是一个结点担任其它两个结点之间最短路的桥梁的次数。一个结点充当“中介”的次数越高,它的中介中心度就越大。如果要考虑标准化的问题,可以用一个结点承担最短路桥梁的次数除以所有的路径数量。

  • 聚集系数(Clustering coefficient)是表示一个图形中节点聚集程度的系数,证据显示,在现实的网络中,尤其是在特定的网络中,由于相对高密度连接点的关系,节点总是趋向于建立一组严密的组织关系。在现实世界的网络,这种可能性往往比两个节点之间随机设立了一个连接的平均概率更大。这种相互关系可以利用聚类系数进行量化表示。

神经网络与深度学习

ANN-神经网络

173ed369509792a268bea2c1ea8ec8c8.png

CNN-卷积神经网络

CNN由输入和输出层以及多个隐藏层组成,隐藏层可分为卷积层,池化层、RELU层和全连通层
f15a53fb98f26548cbf0efd2a9ce9d41.jpeg

RNN-循环神经网络

7a3fbc60cd4944d5346d4c585840556b.jpeg

RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。首先我们要明确什么是序列数据,摘取百度百科词条:时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度。这是时间序列数据的定义,当然这里也可以不是时间,比如文字序列,但总归序列数据有一个特点——后面的数据跟前面的数据有 关系

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值