0. 缺乏数据(Lack Data)
对于分类问题或预估问题来说,常常缺乏准确标注的案例。
例如:
-欺诈侦测(Fraud Detection):在上百万的交易中,可能只有屈指可数的欺诈交易,还有很多的欺诈交易没有被正确标注出来,这就需要在建模前花费大量人力来修正。
-信用评分(Credit Scoring):需要对潜在的高风险客户进行长期跟踪(比如两年),从而积累足够的评分样本。
1. 太关注训练(Focus on Training)
IDMer:就象体育训练中越来越注重实战训练,因为单纯的封闭式训练常常会训练时状态神勇,比赛时一塌糊涂。
实际上,只有样本外数据上的模型评分结果才真正有用!(否则的话,直接用参照表好了!)
例如:
-癌症检测(Cancer detection):MD Anderson的医生和研究人员(1993)使用神经网络来进行癌症检测,惊奇地发现,训练时间越长(从几天延长至数周),对训练集的性能改善非常轻微,但在测试集上的性能却明显下降。
-机器学习或计算机科学研究者常常试图让模型在已知数据上表现最优,这样做的结果通常会导致过度拟合(overfit)。
解决方法:
解决这个问题的典型方法是重抽样(Re-Sampling)。重抽样技术包括:bootstrap、cross-validation、jackknife、leave-one-out...等等。
2. 只依赖一项技术(Rely on One Technique)
IDMer:这个错误和第10种错误有相通之处,请同时参照其解决方法。没有对比也就没有所谓的好坏,辩证法的思想在此体现无遗。
“当小孩子手拿一把锤子时,整个世界看起来就是一枚钉子。”要想让工作尽善尽美,就需要一套完整的工具箱。
不要简单地信赖你用单个方法分析的结果,至少要和传统方法(比如线性回归或线性判别分析)做个比较。
研究结果:按照《神经网络》期刊的统计,在过去3年来,只有1/6的文章中做到了上述两点。也就是说,在独立于训练样本之外的测试集上进行了开集测试,并与其它广泛采用的方法进行了对比。
解决方法:
使用一系列好的工具和方法。(每种工具或方法可能最多带来5%~10%的改进)。
3. 提错了问题(Ask the Wrong Question)
IDMer:一般在分类算法中都会给出分类精度作为衡量模型好坏的标准,但在实际项目中我们却几乎不看这个指标。为什么?因为那不是我们关注的目标。
a)项目的目标:一定要锁定正确的目标
例如:
欺诈侦测(关注的是正例!)(Shannon实验室在国际长途电话上的分析):不要试图在一般的通话中把欺诈和非欺诈行为分类出来,重点应放在如何描述正常通话的特征,然后据此发现异常通话行为。
b)模型的目标:让计算机去做你希望它做的事
大多数研究人员会沉迷于模型的收敛性来尽量降低误差,这样让他们可以获得数学上的美感。但更应该让计算机做的事情应该是如何改善业务,而不是仅仅侧重模型计算上的精度。
4. 只靠数据来说话(Listen (only) to the Data)
IDMer:“让数据说话”没有错,关键是还要记得另一句话:兼听则明,偏听则暗!如果数据+工具就可以解决问题的话,还要人做什么呢?
4a.投机取巧的数据:数据本身只能帮助分析人员找到什么是显著的结果,但它并不能告诉你结果是对还是错。
4b.经过设计的实验:某些实验设计中掺杂了人为的成分,这样的实验结果也常常不可信。
5. 使用了未来的信息(Accept Leaks from the Future)
IDMer:看似不可能,却是实际中很容易犯的错误,特别是你面对成千上万个变量的时候。认真、仔细、有条理是数据挖掘人员的基本要求。
预报(Forecast)示例:预报芝加哥银行在某天的利率,使用神经网络建模,模型的准确率达到95%。但在模型中却使用了该天的利率作为输入变量。
金融业中的预报示例:使用3日的移动平均来预报,但却把移动平均的中点设在今天。
解决方法:
要仔细查看那些让结果表现得异常好的变量,这些变量有可能是不应该使用,或者不应该直接使用的。
给数据加上时间戳,避免被误用。
6. 抛弃了不该忽略的案例(Discount Pesky Cases)
IDMer:到底是“宁为鸡头,不为凤尾”,还是“大隐隐于市,小隐隐于野”?不同的人生态度可以有同样精彩的人生,不同的数据也可能蕴含同样重要的价值。
异常值可能会导致错误的结果(比如价格中的小数点标错了),但也可能是问题的答案(比如臭氧洞)。所以需要仔细检查这些异常。
研究中最让激动的话语不是“啊哈!”,而是“这就有点奇怪了……”
数据中的不一致性有可能会是解决问题的线索,深挖下去也许可以解决一个大的业务问题。
例如:
在直邮营销中,在对家庭地址的合并和清洗过程中发现的数据不一致,反而可能是新的营销机会。
解决方法:
可视化可以帮助你分析大量的假设是否成立。
7. 轻信预测(Extrapolate)
IDMer:依然是辩证法中的观点,事物都是不断发展变化的。
人们常常在经验不多的时候轻易得出一些结论。
即便发现了一些反例,人们也不太愿意放弃原先的想法。
维度咒语:在低维度上的直觉,放在高维度空间中,常常是毫无意义的。
解决方法:
进化论。没有正确的结论,只有越来越准确的结论。
8. 试图回答所有问题(Answer Every Inquiry)
IDMer:有点像我爬山时鼓励自己的一句话“我不知道什么时候能登上山峰,但我知道爬一步就离终点近一步。”
“不知道”是一种有意义的模型结果。
模型也许无法100%准确回答问题,但至少可以帮我们估计出现某种结果的可能性。
9. 随便地进行抽样(Sample Casually)
9a 降低抽样水平。例如,MD直邮公司进行响应预测分析,但发现数据集中的不响应客户占比太高(总共一百万直邮客户,其中超过99%的人未对营销做出响应)。于是建模人员做了如下抽样:把所有响应者放入样本集,然后在所有不响应者中进行系统抽样,即每隔10人抽一个放入样本集,直到样本集达到10万人。但模型居然得出如下规则:凡是居住在Ketchikan、Wrangell和Ward Cove Alaska的人都会响应营销。这显然是有问题的结论。(问题就出在这种抽样方法上,因为原始数据集已经按照邮政编码排序,上面这三个地区中不响应者未能被抽取到样本集中,故此得出了这种结论)。
解决方法:“喝前摇一摇!”先打乱原始数据集中的顺序,从而保证抽样的随机性。
9b 提高抽样水平。例如,在信用评分中,因为违约客户的占比一般都非常低,所以在建模时常常会人为调高违约客户的占比(比如把这些违约客户的权重提高5倍)。建模中发现,随着模型越来越复杂,判别违约客户的准确率也越来越高,但对正常客户的误判率也随之升高。(问题出在数据集的划分上。在把原始数据集划分为训练集和测试集时,原始数据集中违约客户的权重已经被提高过了)
解决方法:先进行数据集划分,然后再提高训练集中违约客户的权重。
10. 太相信最佳模型(Believe the Best Model)
IDMer:还是那句老话-“没有最好,只有更好!”
可解释性并不一定总是必要的。看起来并不完全正确或者可以解释的模型,有时也会有用。
“最佳”模型中使用的一些变量,会分散人们太多的注意力。(不可解释性有时也是一个优点)
一般来说,很多变量看起来彼此都很相似,而最佳模型的结构看上去也千差万别,无迹可循。但需注意的是,结构上相似并不意味着功能上也相似。
解决方法:把多个模型集装起来可能会带来更好更稳定的结果。
数据挖掘最重要的要素是分析人员的相关业务知识和思维模式。丰富的业务知识是设计有效的相关变量的必要条件,而分析人员的思维模式从另外一个方面也保障了设计变量的结构化和完整性。所以我们在掌握丰富的业务知识同时,如果能够按照正确的思维模式去思考问题,将会发现解决问题并不是很困难的。
一般来说,数据挖掘主要侧重解决四类问题:分类、聚类、关联、预测。数据挖掘非常清晰的界定了它所能解决的几类问题。这是一个高度的归纳,数据挖掘的应用就是把这几类问题演绎的一个过程。下面让我们来看看它所解决的四类问题是如何界定的:
1、分类问题
分类问题属于预测性的问题,但是它跟普通预测问题的区别在于其预测的结果是类别(如A、B、C三类)而不是一个具体的数值(如55、65、75……)。
举个例子,你和朋友在路上走着,迎面走来一个人,你对朋友说:我猜这个人是个上海人,那么这个问题就属于分类问题;如果你对朋友说:我猜这个人的年龄在30岁左右,那么这个问题就属于后面要说到的预测问题。
商业案例中,分类问题可谓是最多的:
有一种很特殊的分类问题,那就是“二分”问题,显而易见,“二分”问题意味着预测的分类结果只有两个类:如是/否;好/坏;高/低……;这类问题也称为0/1问题。之所以说它很特殊,主要是因为解决这类问题时,我们只需关注预测属于其中一类的概率即可,因为两个类的概率可以互相推导。如预测X=1的概率为P(X=1),那么X=0的概率P(X=0)=1-P(X=1),这一点是非常重要的。
可能很多人已经在关心数据挖掘方法是怎么预测P(X=1)这个问题的了,其实并不难。解决这类问题的一个大前提就是通过历史数据的收集,已经明确知道了某些用户的分类结果。
例如已经收集到了10000个用户的分类结果,其中7000个是属于“1”这类;3000个属于“0”这类。伴随着收集到分类结果的同时,还收集了这10000个用户的若干特征(指标、变量)。这样的数据集一般在数据挖掘中被称为训练集,顾名思义,分类预测的规则就是通过这个数据集训练出来的。
训练的思路大概是这样的:对所有已经收集到的特征/变量分别进行分析,寻找与目标0/1变量相关的特征/变量,然后归纳出P(X=1)与筛选出来的相关特征/变量之间的关系(不同方法归纳出来的关系的表达方式是各不相同的,如回归的方法是通过函数关系式,决策树方法是通过规则集)。
如需了解细节,请查阅:决策树、Logistic回归、判别分析、神经网络、Chi-square、Gini、……等相关知识。
2、聚类问题
聚类问题不属于预测性的问题,它主要解决的是把一群对象划分成若干个组的问题。划分的依据是聚类问题的核心。所谓“物以类聚,人以群分”,故得名聚类。
聚类问题容易与分类问题混淆,主要是语言表达的原因,因为我们常说这样的话:“根据客户的消费行为,我们把客户分成三个类,第一个类的主要特征是……”,实际上这是一个聚类问题,但是在表达上容易让我们误解为这是个分类问题。
分类问题与聚类问题是有本质区别的:分类问题是预测一个未知类别的用户属于哪个类别(相当于做单选题),而聚类问题是根据选定的指标,对一群用户进行划分(相当于做开放式的论述题),它不属于预测问题。
聚类问题在商业案例中也是一个非常常见的,例如需要选择若干个指标(如价值、成本、使用的产品等)对已有的用户群进行划分:特征相似的用户聚为一类,特征不同的用户分属于不同的类。
聚类的方法层出不穷,基于用户间彼此距离的长短来对用户进行聚类划分的方法依然是当前最流行的方法。大致的思路是这样的:
如需了解细节,请查阅:聚类分析、系统聚类、K-means聚类、欧氏距离、马氏距离等知识。
3、关联问题
说起关联问题,可能要从“啤酒和尿布”说起了。有人说啤酒和尿布是沃尔玛超市的一个经典案例,也有人说,是为了宣传数据挖掘/数据仓库而编造出来的虚构的“托”。不管如何,“啤酒和尿布”给了我们一个启示:世界上的万事万物都有着千丝万缕的联系,我们要善于发现这种关联。
关联分析要解决的主要问题是:
可能是由于最初关联分析主要是在超市应用比较广泛,所以又叫“购物篮分析”,英文简称为MBA,当然此MBA非彼MBA,意为Market Basket Analysis。
如果在研究的问题中,一个用户购买的所有产品假定是同时一次性购买的,分析的重点就是所有用户购买的产品之间关联性;如果假定一个用户购买的产品的时间是不同的,而且分析时需要突出时间先后上的关联,如先买了什么,然后后买什么?那么这类问题称之为序列问题,它是关联问题的一种特殊情况。从某种意义上来说,序列问题也可以按照关联问题来操作。
关联分析有三个非常重要的概念,那就是“三度”:支持度、可信度、提升度。假设有10000个人购买了产品,其中购买A产品的人是1000个,购买B产品的人是2000个,AB同时购买的人是800个。
如需了解细节,请查阅:关联规则、apriror算法中等相关知识。
4、预测问题
此处说的预测问题指的是狭义的预测,并不包含前面阐述的分类问题,因为分类问题也属于预测。一般来说我们谈预测问题主要指预测变量的取值为连续数值型的情况。
例如天气预报预测明天的气温、国家预测下一年度的GDP增长率、电信运营商预测下一年的收入、用户数等?
预测问题的解决更多的是采用统计学的技术,例如回归分析和时间序列分析。回归分析是一种非常古典而且影响深远的统计方法,最早是由达尔文的表弟高尔顿在研究生物统计中提出来的方法,它的主要目的是研究目标变量与影响它的若干相关变量之间的关系,通过拟和类似Y=aX1+bX2+……的关系式来揭示变量之间的关系。通过这个关系式,在给定一组X1、X2……的取值之后就可以预测未知的Y值。
相对来说,用于预测问题的回归分析在商业中的应用要远远少于在医学、心理学、自然科学中的应用。最主要的原因是后者是更偏向于自然科学的理论研究,需要有理论支持的实证分析,而在商业统计分析中,更多的使用描述性统计和报表去揭示过去发生了什么,或者是应用性更强的分类、聚类问题。
如需了解细节,请查阅:一元线性回归分析、多元线性回归分析、最小二乘法等相关知识。
数据分析也好,统计分析也好,数据挖掘也好、商业智能也好都需要在学习的时候掌握各种分析手段和技能,特别是要掌握分析软件工具!我曾经说过,沈老师的学习方法,一般是先学软件开始,再去应用,再学会理论和原理,因为是老师,再去教给别人!没有软件的方法就不去学了,因为学了也不能做,除非你自己会编程序。
那么在数据分析领域,都有哪些软件分析工具呢?如何选择呢?其实很多领域或者说分析方法都有相应的软件工具,只要你想找就应该能够找到!
这里我把软件分成纵横四个层次的的象限图来表达!
第一维度:数据存储层——>数据报表层——>数据分析层——>数据展现层
第二维度:用户级——>部门级——>企业级——>BI级
首先,存储层:
我们必须能够存储数据,对个人来讲至少应该掌握一种数据库技术,当然也不一定要熟练操作,但至少要能够理解数据的存储和数据的基本结构和数据类型,比如数据的安全性、唯一性、冗余性,表的关系,粒度,容量等,最好能够理解SQL查询语言的基本结构和读取等等!
第二:报表层
当企业存储了数据后,首先要解决的报表,还不是分析问题,是要能够看到,看到报表,各种各样的报表!国内外有专门提供报表分析服务的企业和软件。
这个软件从3.0开始,现在已经有了5.1版本,两年的时间已经到了服务器和Web方式了!
当然,如果企业有上万张报表,需要好好管理起来,还有安全性,并发请求等,就需要有Server版;
博易智讯公司专门提供Crystal Report和Crystal Report Server版销售和软件服务;
第三:数据分析层
这个层其实有很多分析工具,当然我们最常用的就是Excel,我经常用的就是统计分析和数据挖掘工具;
当然,我主要是采用SPSS和Clementine,有时候就是习惯,当然会了一种软件在学其他的也不是很困难!
第四:表现层
最近我一直在研究数据可视化技术,一方面是因为Excel大家有需求,另一方面就是我第一个购买了Xcelsius,也写了《Excel高级应用与数据分析》和《数据展现的艺术——Xcelsius》。这个领域的软件,特别是一些小工具非常有价值!
最后,需要说明的是,我这样的分层分类并不是区分软件,只是想说明软件的应用,其实每个层次的软件都是相互融合的,追求:平台化,整合化,智能化,可视化,专业化,都是各有特色;价格也不同,有免费的,有上百万的;有单机版的,有服务器版的;有正版的,有盗版的!
有时候我们把数据库就用来进行报表分析,有时候报表就是分析,有时候分析就是展现;当然有时候展现就是分析,分析也是报表,报表就是数据存储了!
没有最好,只有更好,适合你的就是最好的!
很多朋友问沈老师,我是学统计分析的,为什么我还是不知道如何应用呢?
问题:沈浩老师,我有些问题想跟您请教一下,我现在从事的工作是互联网行业数据分析工作,我以前学的专业是统计学,但是工作中有很多多元统计方法并没有应用,虽然学了很多方法,但是在实际中还是有点不知道如何运用?我应该从哪些方面着手?请指教!谢谢!
相信,这个朋友的问题带有普遍性,其实我在前面的文章中或多或少的解释了数据分析的学习方法,但是可能还是有些建议可以给朋友们,当然,我一直强调每个人都有自己的学习路径,适合自己的才是最好的。
我经常这么说:学数学的不一定会统计分析,学统计的不一定就会数据分析!
为什么这么说呢?因为社会科学!特别是企业经营分析、市场研究等领域都属于社会科学。我们在大学学的数学或统计都是基础,也更多的都是理想数据分析,处理的变量大部分都是数量型的,高测量等级的变量,但是经营分析和市场研究大部分处理的都是非数量型变量,例如都是品牌、行业、地区、偏好、态度、价值观等!
对于社会科学研究,研究者必须在看到数据的时候,要看到数据后面的人,后面的消费者,后面的领导!
上面这张分析人员知识结构图较好的诠释我对从事经营分析、市场研究和统计分析人员的知识框架的理解,企业需要的复合型人才,虽然一个人不可能全部掌握,那就需要你有好的协助能力和团队精神,要有沟通技巧!
当然,对大部分人来讲,这些不是短期就可以积累的,需要不断的学习积累,要具有快速学习的能力。对已经工作的人来讲,实践是最好的老师,互联网是最好的学习资源;
最后,成为一名自信的高级数据分析人员,至少要2-3年的磨练!
数据挖掘最重要的要素是分析人员的相关业务知识和思维模式。丰富的业务知识是设计有效的相关变量的必要条件,而分析人员的思维模式从另外一个方面也保障了设计变量的结构化和完整性。所以我们在掌握丰富的业务知识同时,如果能够按照正确的思维模式去思考问题,将会发现解决问题并不是很困难的。
转:http://blog.csdn.net/liuxincumt/article/details/7377518