http://www.cnblogs.com/seasamsun/p/samsun.html2013/07/22-26 于合肥科大
这几天在合肥参加了由熊辉老师主讲的DM(Data Mining),收获不少。老师讲的方式正如他所说的是独一无二的,通过案例的方式介绍算法,深入浅出,通俗易懂。5天的时间,天气很热,课上大家基本上没有睡觉的。老师认为DM主要分为4大块:Classification, Association Rule Discovery, Clustering和Anomaly Detection。中间还介绍了对人生,社会,教育等的独特见解。
1.几个问题和概念
1)为什么要有DM
硬件的发展。硬件越来越强大也越来越便宜,为我们利用计算机解决大规模计算问题提供了物质基础。
商业竞争的需要。现在有大量数据需要收集和存贮,如何利用这些数据在同行竞争中占据优势很关键。
人性化需要。高质量,更方便,更舒适,更安全,更宜居的生活是人的本能需求,利用计算机对每个人的历史数据进行分析和挖掘可以更好地满足人的需要。
城市的发展。随着社会信息化的进行,交通、医疗、教育、服务等各行各业都需要合理监督和优化配置。
科学发展的需要。未来科学的发展离不开计算机的支持,科学家需要更好的理解和分析数据。
2)DM的定义(定义很多,选取一种)
从 数据中获取之前不知道,但有用的信息。挖掘之前是一堆数据,挖掘之后还是一堆数据,只是挖掘之后的数据是经过提炼的,人们所能理解的信息。数据挖掘必须要 有数据,没有数据做不好数据挖掘。数据是信息的载体,现实生活中的信息不一定可以被计算机直接处理,所以需要分析和抽象并预处理为计算机能处理的数据。挖 掘到的信息准不准,有不有用还需要验证和检验。
3)DM && ML
数据挖掘重在挖掘的流程,机器学习重在算法的调优。两者的共同点离不开数据,算法和验证。
4)数据的来源
做DM是从数据开始的,如果数据一开始就是坏的,不要指望能挖掘到好的、有用的信息。
5)数据预处理
原 始数据通常是含有噪声的,这些噪声数据对结果影响很大,需要找到并移除。数据的预处理内容还包括:整合,取样,降维,特征提取。整合就是把多个数据源的原 始数据合并在一起,取样是选取部分样本作学习样本,降维简单的理解就是选择哪些属性,特征提取提取麻烦点涉及到构造特征空间,它主要是进一步提炼原始数 据。
6)数据可视化
做DM需要有较好的图像展示能力。一堆数据和一个图像在一起一定是图像更直观,更有说服力。通过图像可以帮助我们分析和理解数据。
7)什么是大数据
大数据不是数据体积大,数量多。它应该用单位时间内能处理的能力来衡量。如果在能接受的时间和代价内,数据非常多但能被处理完毕,那么可以认为该数据还不够大。
2. 挖掘技术
2.1. 分类
分类就是通过训练出的模型判断一个未知样本属于哪个类。最常见的就是2分类问题,2分类问题在金融欺诈,疾病诊断用的比较多。分类比聚类容易,分类有参考系,聚类没有。分类一般是监督性学习。
常见的分类算法有:Decision Tree,K-Nearest-Neighbor,Neural Network,SVM,Naive Bayesian等。 判断一个算法的好坏要从速度,准确性,可理解性,性能几个方面综合考虑。没有一个算法是万能的,具体选择哪一个算法需要视情况而定。另外学习算法应该先从 该算法的复杂度,优缺点,使用范围入手。学习一个算法最快的就是看简单的案例,如果将来需要对某一个算法深入研究才要看其实现的过程。
分类的流程一般是训练--->评估--->调整--->训练。评估会用到混合矩阵,一般会使用ROC曲线去描述。
1)Decision Tree
决策树就是找出满足什么条件得到什么结果一系列的最大可能性的规则。
决策树需要解决的难点:该用哪一个属性,什么时候停止分叉,如何分叉。如何分叉通用的3种方法:增益(Gini),信息商(Entropy),分类错误(Misclassification error)。它们的共性就是减少问题的不确定大小。
有时候树越大,越容易过拟合。过拟合(overfitting)和欠拟合(underfitting)是相对的两个概念。过拟合拿到做人上就是太较真了,欠拟合就是做什么都无所谓。
决策树的优点:计算复杂度底,可解释性强,使用方便。
缺点:不是全局最优,属性需要是离散的。
关于可解释性想要再说一点就是政府和公司决策者喜欢DT,因为它清楚,满足什么条件就有什么结果,而且还告诉你准确率是多少。SVM和Neural Network是一个黑箱,虽然大多数情况下这两个比DT的准确率高几个百分点,但决策者更加倾向于DT。
2)KNN
k最近邻点算法原理就是看这个人是什么样,就找他身边最近几个人看是什么样,然后求一个平均值。
KNN需要解决的问题:如何衡量最近的人,是经常在一起的男(女)朋友,同事,哥们还是其他人;找几个人,3,5个还是10个。
KNN的优点:思想简单,训练时间短。
缺点:k会影响准确度,分类时间长(lazy)。
3)SVM
SVM就是找到一个超平面把两个类分开,越开越好。
关于SVM理解几个概念。hyperplane(超平面),margin(度量分开的程度),quadratic programing(二次规划),slack variables(松弛变量,消除噪音用),kernel function(转化为对偶问题时需要用),support vectors(部分样本,分类结果由这几个向量决定)。
优点:小样本性能都较好,准确度高,稳定性好。
缺点:调参数难,训练时间较长,可理解性较差,维数灾难(核函数引起)。
关于分类就介绍这3种算法。补充2个问题。
噪音和异常
噪声(noise)是错误,异常(outlier)不是。通过情况下异常对问题的发现具有重要意义。如金融异常发现等。
训练样本&&验证样本&&测试样本
验证样本是训练样本的一部分,测试样本和训练样本严格分开,测试样本只用一次。验证的方法一般采用5-flod-validation 或 10-flod-validation。5-flod-validation的意思就是将训练样本平均分为5份,标记1,2,3,4,5。先拿2,3,4,5份训练,第1份测试;然后1,3,4,5份训练,第2份测试;... ,求5次的评价错误即为错误率。
2.2. 关联分析
关联规则又称频繁项挖掘。主要用来找出两个同时出现的项(item),这些项之间没有直接的因果关系。与聚类的比较相似,聚类针对对象,关联针对对象中的某些属性值。
关联的几个概念:项集(itemset),支持数(support count),支持度(support),频繁项集(frequency itemset),关联规则(association rule),规则评估量(rule evaluation metric)。
抽取规则的过程需要借助一些过滤条件,这些过滤条件的阈值与规则评估量有关,例如support与confidence。现在confidence被证明有问题,但为了描述经典算法apriori还继续使用它。
关联规则难点在于计算,如果一条记录有n个属性,那么它的项集是一个组合,2n个。在指数级空间被进行频繁项搜索是一个NP难问题,更加费时间的是每一次需要扫描数据库做统计运算。所以可以从2个方面改进,减小搜索项空间和加快数据库查询速度。前者的思想是apriori算法的基础,后者是FP-tree算法的基础。
由于关联规则特点,用计算机去发现频繁项是非常耗时的,这一点与人的思维恰恰相反,人的思维可以跳跃式思考,而计算机不行。
借助关联分析的特点可以帮助我们做人做事,情报机构大部分就是在做关联分析。我们和人打交道也有关联分析的影响,通常有经验的人会在几秒钟之内知道你的身份,工作,地位,年龄及收入等,不是说这个人有什么特异功能,而是他有经验,这个经验用DM的术语讲就是关联规则。关联规则强调细节,细节决定成败,有些人从细节上会看到别人看不到,看不懂的东西。
人的大脑具备很强的学习能力,只是我们没有给它数据进行学习,这个数据很多都是失败的经历还有自我的不满足,所以说人的经历多了,见识多了就变得更加老练和聪明。
2.3. 聚类
聚类是一个非常有挑战性的问题,原因在于没有一个统一的标准去衡量聚类结果的好坏。聚类就是将相似的个体放在一起,它可以帮助我们更好的总结和理解事物。分类主要有分割式(partitional)和分层式(hierarchical)两大类算法。前者是全局的(global),后者是贪婪的(greedy)。前者可描述社会主义社会,后者可以描述资本主义社会,社会主义轻个人重国家,资本主义重个人轻国家。好社会应该利用两种社会制度的优点,它应该是国富民强,少异常少噪声,每个人都有机会,中间大两头小,幸福指数均值大、方差小满足正态(正常状态)分布的社会。
聚类算法的难点在于聚类衡量标准和分类数目。分割式聚类代表性算法是k-means,分层式有group average,dbscan,min,max等。
1)k-means
k-means的思想很简单。先随机选择k的点做初始点;然后每一个点与这k个点作比较,这个点与这k个点哪一个最近就属于哪个点(类); 求出每一个类的中心点,总共k个,以新的k的点作为类标记按照同样的方式划分所有的点;满足结束条件结束。
算法的优点:简单容易理解,复杂度低,速度快。
缺点:对k值和初始值敏感,数据分布的稀疏程度有影响,样本是球形结果才好,抗噪音能力低。
在运用k-means进行聚类分析时,为了减小k值的影响可以先将k值取很大(譬如100),然后再分层聚类,或者先将所有样本分层1个类再分成2,3... ,多个(Bisecting k-means)。在减小初始值随机性的影响时,可以采取多次选取求大概率的方法。
2)group average
该方法是分层聚类方法,一般在多元统计课程里会讲到。它是分层聚类常用的方法,基本思想是类与类的距离由该类中所有点加权决定,有效的消除了噪声的干扰。一般来说,group average整体性能比min和max要好,但是其计算量较大。min也有自己的优势,在密度大的聚类时抗噪能力较好。
3)dbscan
该分层聚类方法canopy方法类似,都是为了提高算法的抗噪能力。它有3个概念:core point,border poing和noise point。难点是确定core point中点的个数。
算法的优点:2,3维聚类效果很好。
缺点:高维效果不好。
2.4. 异常检测
异常检测一般是非监督性学习,异常检测得到的异常可以看成是聚类结果的一种特殊形式。异常和噪声有区别,异常通常是有用的,从它入手很可能发现新问题,而噪声通常是错误。异常检测主要用在发现不寻常的事物,在网络欺诈和疾病检测中用的比较多。
异常的来源主要是因为它们出现的概率比较低,或者被非正常的篡改。由于是小概率事件,发现它们是非常困难的。
处理这类问题的方法有:分类,统计分布,回归,几何和图论。以聚类的方法为例,由于异常样本较小,一般聚类方法不适用。因为聚类方法对大类的预测较好,异常检测是要大概率识别出异常,即使正常数据预测的再高,但异常检测不到也是没有效果的。
用分类做检测常用的做法是加大异常样本的权重。这样一来会将一部分正常的数据预测为异常的数据,但是可以接受,在欺诈检测方面:误判比漏判好。
2.5. 小结
在介绍DM中4大问题时,没有给出算法的计算公式。不是说公式不重要,要想深入研究公式是必要的,在解决实际问题时,从宏观上(思想,优缺点,使用范围)对每一个算法进行把握就够了。
3. 好话
在上课的过程中,老师不时穿插他对社会,国家和人生的见解。一方面讲算法容易使人睡觉,讲这些我们不犯困;另一方面,让我们增加见识,学会做事做人。
1) 赞美人的话多说,损害人的话少说,谎话不能说,真话不全说
人都是喜欢听赞美的话;因一时气愤说话攻击别人,到头来即使赢了,也会受伤;表里不一就会失掉做人的根本---诚信;有些话自己说出来本意是好,但是会伤害其他人。
2)如果自己不会做事情,找到会做的人,跟着他们做
不是所有的事自己都会做,遇到必须做自己又不会做的事情时,选择擅长做这件事的人很重要。
3)方向比能力重要
最可悲的是一个人能力非常强,但是选错了方向,结果他越努力,错的越远。
4)vip不好做
当你成为vip后,你享受利益和尊贵时,也许你已经被盯上了,社会知道你太多的信息,随着信息化加速发展,你所有的信息都会被记录。普通人机器扫描不过来,vip数量有限是可以扫描的。用显微镜去发现一个人的问题,谁都逃不过。所以vip不好做,普通人也有普通人的好处。
5)不要入即将被标准化的行业
入错行对每一个人都是比较大的打击,入错行意味着你的收入,发展都会受到不良影响。这个行指的是标准化的行业。一旦某一个行业被标准化,绝大部分事都用机器来做时,就没人什么事了。
6)让自己无法被人替代
拥有自己的核心竞争力很重要。如果你能做的事别人都能做,对公司来讲你就是其他人的一个子集,那你就没有任何乘数效应可言了。
7)个人的发展由个人知识集,家庭知识集,人际关系知识集决定
年轻的时候对我们影响最大的就是家庭,其次是自己。家庭教育和决策在一个人发展之初是非常重要的,所以做父母的不容易。但随着年龄增加,最重要的变成个人和人际关系。
8)自己会做蛋糕比切蛋糕更加了不起
一块蛋糕(利益)在你手上,如何分让大家皆大欢喜是一件困难的事,因为你要考虑到以后还有没有人愿意和你分蛋糕。但如果你自己就会做蛋糕,到时候就不缺求你分蛋糕给他的人。
9)放下身段,做长远打算
如果你目前什么都没有,无技术,无money,无权利,拼不过爹,也拼不过爷。似乎是一无所有,怎么办,还好你还有时间,还有目标,还有机会。你可以放下自己的身段,选定正确方向后给老板低价打工。在这个平台下,你要积蓄力量,沉淀自己,坚持下去总有一天你会证明自己,聪明的老板会设法留下你。这是一个苦b的过程,但却值得。