常用数据挖掘算法 - 决策树ID3&关联推荐Apriori &朴素贝叶斯NBC

来源:互联网 发布:飞耀速录软件 编辑:程序博客网 时间:2024/05/22 01:42
数据挖掘主要解决四类问题:
  1. 分类:预测主题属于(A,B,C)类,前提预先知道分类,根据构造模型算法将输入数据分类,而非一个具体数值(广义预测)-决策树,Logistic回归,神经网络
  2. 聚类:把一个对象划分若干组,核心划分依据,如果选择若干指标(成本,价格,质量)对已有体验用户群进行划分,按指标计算距离归类K-means聚类,聚类分)根据很多特征,相似分为一组。最大化类内相似性,最小化类间相似性。
  3. 关联:多个对象间关联规则,一群用户购买了很多产品之后,哪些产品同时购买的几率比较高(apriori)-啤酒与尿布案例
  4. 预测:预测一个具体值更多用统计学如回归分析和时间序列分析(狭义预测)洞悉事物进化机制(统计学如:回归分析)市场营销,客流量分析,股价变动
应用场景:

一:分类:
定位产品(如彩铃、WAP、增值数据业务等)目标用户:构建模型筛选产品营销的目标用户群。
信用申请评分:根据用户资料评估用户是否可以授信(如预付费用户可以透支、后付费用户可以延长帐期)。
信用行为评分:根据用户过去的消费行为特征评估信用得分高低,便于调整话费透支额度或者付费帐期。
离网预测:预测用户在未来一段时间内离网的风险。
请查阅决策树Logistic回归、判别分析、神经网络、Inpurity EntropyChi-squareGiniOddsOdds Ratio二:聚类:(多维变量)用户细分:选择若干指标把用户群聚为若干个组,组内特征相似、组间特征差异明显。当然用户细分的方法很多,不一定都是采用聚类方法。聚类的优点是可以综合处理多维变量,缺点是随之带来的不易解释性。一种便于解释的细分方法是结合业务对用户群进行人为的划分,习惯上称为Pre-Define的方法。这种方法的优点是便于解释且应用性强,缺点是对业务要求比较高,划分边界比较难定,对多维变量处理有难度
三:关联:amazon 35% sales from recommend
交叉销售:针对用户已经使用的产品和业务,向其推荐他没有使用的,但可能有兴趣的产品。 �聚类方法。聚类的优点是可以综合处理多维变量,缺点是随之带来的不易解释性。一种便于解释的细分方法是结合业务对用户群进行人为的划分,习惯上称为Pre-Define的方法。这种方法的优点是便于解释且应用性强,缺点是对业务要求比较高,划分边界比较难定,对多维变量处理有难度

四:预测:
比较成型的应用不多,一般多为用户数预测、收入预测等

数据挖掘重要因素:不是分析方法而是十分提供足够变量供分析方法选择。

线性判别分析(LDA), 主成分分析(PCA)


蕴涵式:

十大经典算法:(参考:算法杂货铺)
1  决策树算法
ID3:基于gain(A)信息增益(最大),是单变量决策树(在分枝节点上只考虑单个属性),抗噪性差
C4.5:基于gainration信息增益比率,用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足
CART:基于Gini指数(最小)
使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。而每个叶节点存放一个类别。(根据不同特征值最后归并为哪个叶子节点类别)
如:女孩约会男孩
上图不能算严格意义的决策树:因为判断条件没有量化(如收入>20W)
这种只能获取离散值,判断归类。如果是具体值,需要用线性回归
•决策树类型(ID3,C4.5 and C5.0):基于信息论分隔方法(最大信息增益)
信息论:若一事件有k种结果,对应的概率为Pi。则此事件发生后所得到的信息量I(视为Entropy信息熵)为:I=-(p1*log2(p1)+ p2*log2(p2)+…+ pk*log2(pk))信息熵(熵指混乱)-Entropy 一个统越是有序,信息熵就越低;反之,一个系统越乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个衡量。
(CART,SLIQ,SPRINT):基于最小Gini方法
(CART:Classification And Regression Tree)
回归树:叶节点对应于一连续值
- 分类树:目标类离散值
分类与回归与C4.5最大区别是只能有两个分支Gini基尼系数:
济学家基尼,根据洛伦茨曲线找出了判断分配平等程度的指标(如右图),设实际收入分配曲线和收入分配绝对平等曲线之间的面积为A,实际收入分配曲线右下方的面积为B。并以A除以A+B(即OPM三角形面积)的商表示不平等程度。这个数值被称为基尼系数或称洛伦茨系数。如果A为零,基尼系数为零,表示收入分配完全平等;如果B为零则系数为1,收入分配绝对不平等。该系数可在零和1之间取任何值。收入分配越是趋向平等,洛伦茨曲线的弧度越小,基尼系数也越小,反之,收入分配越是趋向不平等,洛伦茨曲线的弧度越大,那么基尼系数也越大。

GINI指数

总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)。比如体温为恒温时包含哺乳类5个、鸟类2个,则:

体温为非恒温时包含爬行类3个、鱼类3个、两栖类2个,则

所以如果按照“体温为恒温和非恒温”进行划分的话,我们得到GINI的增益(类比信息增益):

最好的划分就是使得GINI_Gain最小的划分。


1 ID3
如下ID3:
信息增益公式:
熵-oenhan      如I(16,4):4个是,12个否,总数16
熵-oenhan    如E(年龄)=分支概率*info(Dj)熵之和
熵-oenhan 信息增益  
然后针对Femal和Male再分别递归调用选择分隔属性
最终递归树:
备注:CART与ID3区别采用信息增益比率作为条件
CART分类回归树:与C4.5不同,构建二叉分支,Gini指数增益来分裂

 构建树:

           1.找到[最佳待切分特征]

            2.若不能再切分,则将该节点存为[叶子节点]并返回

            3.按照最佳待切分特征将数据集切分成左右子树(这里为了方便,假设大于特征值则为左,小于则归为右)

            4.对左子树进行[构建树]

            5.对右子树进行[构建树]

   最佳待切分特征:

           1.遍历特征

               1.1遍历特征所有特征值

                    1.1.1计算按该特征值进行数据集切分的[误差]

           2.选择误差最小的特征及其相应值作为最佳待切分特征并返回

   基于回归树的预测:

           1.判断当前回归树是否为叶子节点,如果是则[预测],如果不是则执行2

            2.将测试数据相应特征上的特征值与当前回归树进行比较,如果测试数据特征值大,则判别当前回归树的左子树是否为叶子节点,如果不是叶子节点则进行[基于回归树的预测],如果是叶子节点,则[预测];反之,判别当前回归树的右子树是否为叶子节点,如果不是叶子节点则进行[基于回归树的预测],如果是叶子节点,则[预测]

2 C4.5(基于信息增益):基于ID3改进,使用信息增益比率,防止某一种类数据偏大3 聚类算法 (K-means)物以类聚
   Keans聚类策略思想1)对n个对象进行 K个聚类,随机选取K个簇中心,
                       2)然后每个元素与簇中心差平方(哪个距离最小归纳为哪个簇)欧几里得(差平方和再开方)
                       3)重新选择聚类中心(划分好聚类求平均值)是对每一个已经分好类集合各个维度再求均值替换掉该类中心集合对象
                       4)直到中心不再移动(算法收敛或者小于某个阙值)
kmeas.rar
4  朴素贝叶斯模型(Naive Bayesian Model,NBC)
   统计学中朴素贝叶斯原理:即给定一个样本,计算该样本属于特定类概率
  贝叶斯定量,
  h已知分类{癌症,正常} D属性{阳性,阴性},判断一个阳性情况下癌症几率=癌症条件下阳性几率*癌症几率/阳性几率训练样本得出
  P(A|B):事件B发生情况下事件A的概率
  朴素贝叶斯分类实例:检测SNS社区中不真实账号
  条件概率:P(B|A)=P(AB)/P(A) A条件下B类=AB同时概率/A概率  同理 P(A|B)=P(AB)/P(B)

  推导出贝叶斯:P(A|B)=P(AB)/P(B)=>P(B/A)*P(A)/P(B)
  如 (ABC)(AB)(AC)(EF)(BC)  P(B|A)=2/3   P(AB)=2/5 P(A)=3/5  P(B)=3/5
  实例:X={X1...Xn}特征向量  C={C1,C2}类别 比较概率哪个概率大偏向哪个  P(C1|X)[P(X|C1)*P(C1)]就是X特征下C1分类概率  P(X/C2)*P(C2) 
  (朴素贝叶斯分类:根据给定特征向量,然后算出属于各个分类的概率,最后判断哪个概率大偏向哪个分类)
  备注P(X|C1)=P(X1|C1)*P(X2|C1)*...P(Xn|C1) --就是每个特征在C1下分类概率
 
5  K临近算法 ( KNN )
KNN算法和K-Means不同的是,K-Means算法用来聚类,用来判断哪些东西是一个比较相近的类型,而KNN算法是用来做归类的,也就是说,有一个样本空间里的样本分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类。
你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类
•如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。•如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。
适用场景:给定样品,测试抽检样品好坏
6  网页排名(  PageRank )
PageRank是一种在搜索引擎中根据网页之间相互的链接关系计算网页排名的技术。PageRank是Google用来标识网页的等级或重要性的一种方法。其级别从1到10级,PR值越高说明该网页越受欢迎(越重要)
B、C、D页面都指向A
L(B)为B页面出链数
B页面有两个出链接,C有1个,D有3个

7  最大期望 ( EM )--Expectation Maximization
EM算法比K-means算法计算复杂,收敛也较慢,不适于大规模数据集和高维数据,但比K-means算法计算结果稳定、准确。
8  支持向量机 ( SVM:support vector machine):
    实际问题中,是较少"强特征",用简单线回归可以逼近未知函数。有些实际问题较多"弱特征"线性组合反应实际情况
9  迭代算法人脸识别 ( AdaBoost )
10 频繁项集算法 ( Apriori ) -关联规则
 Apriori:主要由连接和剪枝过滤出频繁项集(肯定满足最小支持度),最后对2..K项集进行是否满足最小置信度。
找出频繁项集(满足最小支持度)三个步骤:
1 连接: Ck=Lk-1 连接 Lk-1,有相同元素连接,{A,C},其它元素没有A,但是{B,C}和{C,E}含有C所以可以连接,有相同元素连接,接后过滤掉不满足最小支持度2 剪枝:如C3={A,B,C}其子集{A,B}{A,C}{B,C},其中{A,B}不属于L2,所以删除{A,B,C}称为剪枝,其它集合类似,最后剩下{B,C,E}3 满足最小支持度:验证{B,C,E},4与事务集合有2个含有{B,C,E}  2/4=0.5 满足最小支持度。
然后找出满足最小置信度:
A=>C 置信度:购买A时候,同时买C占比 如 {A,B,C},{A,C},{A,D},含有A,C 2个,含有A 3个  2/3=66.6%






随机森林:
随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
高斯分布:正态分布
熵:

0 0
原创粉丝点击