原文网址:http://www.cognoschina.net/club/viewthread.php?tid=1518
来自于数据挖掘成功人士对在读研究生的建议:
关于数据挖掘方面的研究,我原来也走过一些弯路。其实从数据挖掘的起源可以发现,它并不是一门崭新的科学,而是综合了统计分析、机器学习、人工智能、数据库等诸多方面的研究成果而成,同时与专家系统、知识管理等研究方向不同的是,数据挖掘更侧重于应用的层面。
因此来说,数据挖掘融合了相当多的内容,试图全面了解所有的细节会花费很长的时间。因此我建议你的第一步是用大概三个月的时间了解数据挖掘的几个常用技术:分类、聚类、预测、关联分析、孤立点分析等等。这种了解是比较粗的,目标是明白这些技术是用来干什么的,典型的算法大致是怎样的,以及在什么情况下应该选用什么样的技术和算法。
经过初步了解之后,就要进入选题的阶段,选择自己感兴趣的某个具体方向,然后通读该方向的经典论文(综述、主要发展方向、应用成果)。选题阶段可能会花费 较长的时间,比如一年。此时,要逐渐明确突破点,也就是将来你论文的创新点。创新对于研究来说非常重要,一方面该创新的确比原来的方法要好,另一方面该创 新的确具有实用的价值。
随后,就要来实现自己的想法。通常对于硕士论文来说,需要建立原型系统,进行试验,并用试验结果来支持自己的论文主题。原型系统就是对自己创新点的实现,需要很好地设计和开发。需要注意的是,原型系统的建立和开发商用系统不同,需要体现比较好的理论基础。也就是说,原型系统并不是简单地用于实现功能,而是将你的一整套理论付诸实现。这种理论基础也将会包含在你的论文中,以体现论文的理论高度。
原型系统的搭建以及产生令人信服试验结果,这个过程一般需要至少一年的时间。所以要集中精力于核心部分(体现论文创新点的部分),外围的界面等等不应投入太多的精力,以免进度失控。
最后是论文的整理和写作了。建议你在之前的阶段中逐步先写出一些篇幅较短的论文(用于发在期刊、会议上),比如综述、体系框架、算法内核、应用等等。这样在最后写毕业论文时就有了足够多的内容,会写得更好更快一些。
以上只是泛泛而谈。其实我觉得其中的关键点在于选题,而选题的好坏取决于你对数据挖掘研究现状的了解、你的兴趣和专长、以及该方向在应用上的意义。建议你和导师、同行多交流,能够让自己的方向更清晰。
至于数据挖掘领域的就业,应该来说还是前景不错的。如果你对研究有兴趣,象微软研究院、Google、高校研究所都是不错的地方;如果你对实际应用有兴趣,很多大的公司包括IBM、Accenture、亚信等等都有相应的人力需求,当然一些甲方的单位比如证券、保险、金融等等单位也都需要分析人才。
关于论文如何创新
“创新”是个很尖锐的问题。以前我帮导师审论文时,给论文评分包括几个要素,分别是理论基础是否坚实、研究问题的重要性、研究成果的创新性等。
所谓创新,就是你解决问题的方法是否和其他人的解决方法有所不同,而这种不同又是否更有利于解决问题。因此,要发现创新点,实际上需要充分的准备和深入的研究。
①充分的准备:既然创新是找出解决问题的更好方法,那么首先你就要发现问题,而且要发现有价值的问题。当找到这种问题时,再去查找有没有人提出了解决这个问题的方法,他们的方法是怎样的,还存在什么不足之处。
这个阶段需要做大量的调查搜集的工作,也是做研究的准备阶段,常常需要通读相关研究领域的经典文献以及最新进展,写读书笔记予以总结。
②深入的研究:当你发现了值得研究的问题,并且知道在这个问题上还没有很好的解决方法时,你就有了创新的机会。找出现有解决方法的不足之处,提出自己的解 决思路,并予以验证,通过试验或者推理证明你的方法是有效的,创新点也就产生了。说起来容易做起来难,就象酝酿一个新发明一样,常常会需要大量的试验和周 密的思考,而且也有可能忙了很久而一无所获。
希望说到这里没有让你心生惧怕,但我见过的一些认真做研究的人的确投入了很多的时间和精力才有所成就。当然对于国内的研究生来说,我倒是觉得在硕士阶段去 追求显著的创新是不切实际的(个人的一管之见),其实把第一步做好已经不错了。如果没有做好第一步,打好基础,就急于找些创新点,那么这些所谓的创新点常 常是毫无意义的,写出来的论文最终避免不了被扔到垃圾桶的命运(我以前写的一些论文也是如此)。大家常常说国内的研究论文质量很差,很大程度上也是源于我 们现在的教育制度,要求研究生毕业前必须在SCI、EI或核心期刊上发表若干篇论文,重量而不重质,造就了现在的核心期刊完全变成了完成毕业任务的自留地。
话题扯远了,回到你关心的问题-如何找创新点。必要的文献阅读是不可缺的,了解研究现状和背景,才可能发现创新点。如果你想这个阶段快一些的话,也有些捷径,比如你可以到一些研究单位或学者的站点上,察看他们目前的研究动态,一般来说他们正在研究的内容常常是目前还未解决的,这样你可以尽快找到创新点的主攻方向。
1数据挖掘人员从事的工作内容
是不是开发数据挖掘平台、为别的企业单位量身制作DM、DW系统?除了这些还能有些什么?
2读博深造的必要性
现在只是无指导的自学状态,能否在硕士毕业后胜任数据挖掘方面的工作呢?考取名校的博士进一步深入学习的必要性大不大?
3自学时的大方向
文本、Web等,读博时肯定就某种具体方向深入研究,现在是否应该也自己重点专注于一种方向,而不是仅泛泛的熟悉各个方面?
以下为blog主人的回复:
1.数据挖掘人员从事的工作和你所说的差不多,我认识的一些朋友大多在IT公司,为甲方实施DM、DW和BI等项目;还有一些是在甲方做分析人员,利用所掌握的数据挖掘知识来解决一些业务问题。
2.就以上的工作内容来说,我觉得硕士已经足以胜任,当然最重要的不是学位,而是运用你学到的知识来解决问题的能力。如果希望在理论研究上进一步发展,读博也不错,但发展方向会有所不同。
3.在硕士阶段,我觉得还是全面了解会更好一些。当然,因为数据挖掘涉及的内容较多,还是应该在一些方面有所侧重,比如那些得到广泛应用的算法及其应用上,包括决策树、聚类、回归、神经网络等等。这样即便你以后不去读博,对找工作也会有所帮助。
请问:现在数据挖掘开发主流平台和编程语言。那些更有优势呢?现在大都用什么呢 谢谢
以下为blog主人的回复:
现在一般应该是用Java开发的比较多,据我所知的,SAS Enterprise Miner客户端是用Java开发,开源的数据挖掘工具Weka也是用Java开发的。当然其后台服务器端的软件有部分可能会是C开发的,主要是出于性能的考虑。
如果你对数据挖掘平台开发有兴趣的话,建议你去开源代码网站SourceForge(http://sourceforge.net/)看看,可以找到相应的源代码,也可以参加到他们的开发团队中,共同开发。
请教: 1 为甲方做的针对行业的数据挖掘中,如果通过SAS等通用的软件,如何体现行业不同、部门不同的特色要求?为他建立预测模型的过程中会对SAS的功能进行插件式的扩展吗,还是SAS本身已经足够建立特定的模型?
也就是说所谓的量身定制,也就是使用同一个软件建立不同的模型,开发过程中不涉及软件的改造?
2 是否数据挖掘人员不必是一个程序员?日常的工作已经很少涉及编程?
以下为blog主人的回复:
1.SAS的Enterprise Miner是通用型的数据挖掘软件,所以要满足客户的特定分析需求,常常会采取两种方法实现:一是做项目,通过项目团队的开发和实施,来建立客户所需的应用;另一种是采用SAS的行业解决方案(是SAS通过多年来对行业需求及解决方案的总结,形成的完整的solution),然后进行客户化定制。
大多数情况下,不需要对SAS的功能进行扩展,而是用SAS的软件就可以解决业务问题。所以我们通常做的项目不是软件开发,而是项目实施。
2.如果单纯从建立挖掘模型的角度来说,挖掘人员的确不必是程序员,只要应用合适的挖掘算法,基于分析数据进行建模,并对模型进行调优就可以了。但实际上,挖掘人员并不只做这些,更多的时候是做数据准备和数据探索,其中就可能需要进行编程,当然这些程序通常用于数据处理、模型结果的发布等等。
就我个人的经验和了解,数据准备常常占一个数据挖掘项目工作量的60%~70%左右。
以下来自:http://blogger.org.cn/blog/more.asp?name=idmer&id=24891
张前辈:您好!
我是中国海洋大学一名研一生,专业是数据库。我想自己选择一门方向,认真的学习,作为终身职业。譬如 java程序员、数据挖掘人员、数据库管理人员等等。我比较喜欢数据挖掘,但是若干问题难以释惑。
问题1:现在选择数据挖掘作为终身职业是明智之举吗?
现在网上对数据挖掘的前景讨论的很厉害,褒贬不一。但是至少可以确定的是数据挖掘已经越来越被重视了。如你所言,大家看到的只是表面,许多成功的案例企业没有对外公开。但不可否认的是,数据挖掘在中国的应用有屠龙之技的嫌疑,广大的企业还没有重视起来。
总之,男怕投错行,这个问题总是敲击着我。如果我是您的弟弟,您会鼓励我走数据挖掘之路吗?还是推荐其他的IT职业?
IDMer:
就我个人的观点,数据挖掘的发展还是前途很广阔的。说白了,数据挖掘就是一种分析问题的手段,问题一直会有,解决问题的手段也就一直有存在的必要。也许你 听说过美国早期西部淘金热的时候,富起来的不是淘金者,而是为淘金者提供工具、水的人,甚至因为矿工需要结实耐磨的衣服,以致于牛仔裤风行起来并经久不 衰。
至于你提到“屠龙之技”之说,只是很多人因为不熟悉数据挖掘的内部技术而产生的莫测高深的感觉。其实,数据挖掘本身并不是新技术,它融合了来自于统计学、数据库和机器学习等多学科已经成熟的内容,冠上了一个看起来比较时髦的名字而已。
组成数据挖掘的这三门支柱学科都已经发展了多年,也已得到了广泛的应用。那么我们也有理由相信它们的融合,能帮助我们解决更多的分析方面的问题。何况,业界还是有很多的成功案例,体现出数据挖掘所带了独特优势,而这些,是传统的BI(报表、OLAP等)无法支持的。
以上说了不少数据挖掘的好话,下面再看看硬币的另一面。如果你是我的弟弟(呵呵,虽然我没有,但也和很多年轻的师弟师妹聊过择业的话题),我会建议你不做 IT业,哈哈,一句半真半假的玩笑。因为在IT这个行业看起来还是满辛苦的,而且在很多项目中,常常需要重复一些没什么技术含量的任务,消耗的精力不少, 获得的成就感却不多。
Anyway,我的建议,其实也是我原来给自己的一句座右铭:认为对的就去做。找到自己的兴趣所在,并且感觉也有发展,那就尽力去做好了。
问题2:如果我现在选择了数据挖掘,应该怎么做?
您曾经在博客上回复一位北邮同学,建议熟悉学习各种算法;建立模型,创新思路改进算法撰写论文。
我当前的计划是 学习各种算法的原理;学习java语言;研究weka源码,深入了解几种经典算法的步骤;学习了解ETL,数据仓库、OLAP等;通过使用的数据集建立挖掘模型;思考论文;有空的话 还得SPSS或其他一个流行软件的使用方法。其中,我觉得难点是对数据集的整理形成挖掘流程的输入。
其中,我也有若干疑惑:掌握一门数据库是很重要的,但是没有时间一一了解SQLServer、Oracle、DB2等,但是在求职时,又说不定单位要求会哪门数据库!?我想就SQL Server单独进行深入的学习,包括学习在SQL Server中数据仓库的建立和数据挖掘的应用,其他的也就不管了。不知我这个选一而弃其他的打算可取不可取?
IDMer:
从你的计划来看,还是对自己要掌握的知识和技能,划出了一个范围。看上去还不错,我只是从个人的经验出发,建议你不必苛求自己十八般武艺样样精通,很多方面只需基本了解,选择几个重点来练成自己的绝活。人的精力毕竟有限,目标越大就越难实现。
至于选择那些作为重点,就需要在广泛了解的基础上,结合自己的兴趣进行筛选了。
关于数据库的掌握,我觉得熟悉一种产品已经足够。SQL Server、Oracle、DB2都是关系数据库,在学生阶段把关系数据库的基础理论打牢,熟练运用SQL语句就可以了。这些主流数据库之间的差异,不 是遵循的标准不同,而是产品的特性有别,以及在性能调优时的技巧。
问题3:如何使学习阶段与行业应用靠拢?
有一位学长,建议我学技术的时候要和行业靠拢,否则,“没有行业背景的技术会很飘”。我觉得他说的有道理,技术是相当宽泛的,你不可能面面俱到;而且,当 你实际工作后,也就专于一个行业,技术的需要面也就变窄了。这样,有利于学习重点,不至于在学习时,面面俱到,没有突出。
但是,在数据挖掘方面,曾经请教过你,数据挖掘人员的工作性质。一种是在甲方做分析人员,利用所掌握的数据挖掘知识来解决一些业务问题。一种是在IT公司,为甲方实施DM、DW和BI等项目(前辈自己便属于此类?)。
在这里,我不太明白作为甲方,日常具体做些什么?难道是类似于网管性质的?那样不更倾向于数据库管理人员?他们还算是专业的数据挖掘人员吗,怎么觉得公司不大会安排这样的职位呢?
我比较倾向于做乙方,那样好像更专业似的。但是,乙方的话,都说数据挖掘在金融、电信、银行还是销售等方面主要应用。难道这意味着要学习或了解金融电信的背景、CRM、经济学、Excel……?
还有,您曾提到,毕业后也可以做研究工作,我觉得提供研究工作的岗位毕竟是少的。而且,那样挣钱多吗(流汗中)?
是否现在应该考虑以后进哪个(哪类)公司,现在根据它的要求来强化自己呢?
数据挖掘交流讨论(3,答Freshm 2008-12-9的留言)
博士你好: 从事数据挖掘应用,要打好那些基础,望结合您的经验给予详细指导,以及给一点应用于移动方面的实践案例。
我的回复:不好意思,我不是博士,请别叫我博士。非常高兴跟你交流数据挖掘的应用。数据挖掘因为是个综合性应用,涉及的专业知识很多(有数据仓库、统计专 业、编程能力、展示展现技术、挖掘技能、所具体应用的相关业务能力),但是真正从数据挖掘项目实践的角度讲,沟通能力和对挖掘的兴趣爱好是最重要的,有了 爱好才可以愿意钻研,有了不错的沟通能力,才可以正确理解业务问题,才能正确把业务问题转化成挖掘问题,才可以在相关不同专业人才之间清楚表达你的意图和 想法,取得他们的理解和支持。所以我认为沟通能力和兴趣爱好是个人的数据挖掘的核心竞争力,是很难学到的;而其他的相关专业知识谁都可以学,算不上个人发 展的核心竞争力。
除了最重要的沟通能力和兴趣爱好外,在专业能力培养中,如果你一定要排个先后次序的话, 一方面看你职业兴趣的侧重点,另一方面对于数据挖掘的应用来说,我觉得数据挖掘技能可能是相对而言最重要的, 因为数据挖掘作为一个典型的团队作业,一个人不可能完成所有相关专业的工作,而其中数据挖掘能力可能是挖掘实践中专业能力的核心,当然相关业务的能力同样 (甚至更)重要,比如做数据库营销时,你不但应该有好的挖掘技能,你更应该是个市场营销专家。所以国内外面临数据挖掘复合型人才缺乏时,一致公认的好的解 决办法是让业务人员学习挖掘技能(这比让挖掘技术人员学习业务技能更有效、更合理)。
说到这里可能很多数据仓库专家、程序员、统计师等等都要扔砖头了,对不起,我没有别的意思,你们的专业对于数据挖掘都很重要,大家本来就是一个整体的,但 是作为单独一个个体的人来说,精力有限,时间有限,不可能这些领域都能掌握,在这种情况下,选择最重要的核心,我想应该是数据挖掘技能和相关业务能力吧 (从另外的一个极端的例子,我们可以看, 比如一个迷你型的挖掘项目,一个懂得市场营销和数据挖掘技能的人应该可以胜任。这其中他虽然不懂数据仓库,但是简单的Excel就足以胜任高打6万个样本 的数据处理;他虽然不懂专业的展示展现技能,但是只要他自己看的懂就行了,这就无需什么展示展现;前面说过,统计技能是应该掌握的,这对一个人的迷你项目 很重要;他虽然不懂编程,但是专业挖掘工具和挖掘技能足够让他操练的;这样在迷你项目中,一个懂得挖掘技能和市场营销业务能力的人就可以圆满完成了,甚至 在一个数据源中根据业务需求可以无穷无尽的挖掘不同的项目思路,试问就是这个迷你项目,单纯的一 个数据仓库专家、单纯的一个程序员、单纯的一个展示展现技师、甚至单纯的一个挖掘技术专家,都是无法胜任的)。这从另一个方面也说明了为什么沟通能力的重 要,这些个完全不同的专业领域,想要有效有机地整合在一起进行数据挖掘项目实践,你说没有好的沟通能力行吗?
数据挖掘能力只能在项目实践的熔炉中提升、升华,所以跟着项目学挖掘是最有效的捷径。国外学习挖掘的人都是一开始跟着老板做项目,刚开始不懂不要紧,越不懂越知道应该学什么,才能学得越快越有效果。我不知道国内的数据挖掘学生是怎样学的,但是从网上的一些论坛看,很多都是纸上谈兵,这样很浪费时间,很没有效率。
另外现在国内关于数据挖掘的概念都很混乱,很多BI只是局限在报表的展示和简单的统计分析,却也号称是数据挖掘;另一方面,国内真正规模化实施数据挖掘的 行业是屈指可数(银行、保险公司、移动通讯),其他行业的应用就只能算是小规模的,比如很多大学都有些相关的挖掘课题、挖掘项目,但都比较分散,而且都是 处于摸索阶段,但是我相信数据挖掘在中国一定是好的前景,因为这是历史发展的必然,呵呵。
讲到移动方面的实践案例,如果你是来自移动的话,你一定知道国内有家叫华院分析的公司(申明,我跟这家公司没有任何关系,我只是站在数据挖掘者的角度分析 过中国大多数的号称数据挖掘服务公司,觉得华院还不错,比很多徒有虚名的大公司来得更实际),他们的业务现在已经覆盖了绝大多数中国省级移动公司的分析挖 掘项目,你上网搜索一下应该可以找到一些详细的资料吧。我对华院分析印象最深的一点就是2002 年这个公司白手起家,自己不懂不要紧,一边自学一边开始拓展客户,到现在在中国的移动通讯市场全面开花,的确佩服佩服呀。他们最开始都是用EXCEL处理 数据,用肉眼比较选择比较不同的模型,你可以想象这其中的艰难吧。这个故事其实也告诉我们,数据挖掘也是可以创造一些神奇的故事的,你说呢?
至于移动通讯的具体的数据挖掘的应用,那太多了,比如不同话费套餐的制订、客户流失模型、不同服务交叉销 售模型、不同客户对优惠的弹性分析、客户群体细分模型、不同客户生命周期模型、渠道选择模型、恶意欺诈预警模型,太多了,记住,从客户的需求出发,从实践 中的问题出发,移动中可以发现太多的挖掘项目。最后告诉你一个秘密,当你数据挖掘能力提升到一定程度时,你会发现无论什么行业,其实数据挖掘的应用有大部 分是重合的相似的,这样你会觉得更轻松。
以上是个人的浅见,仅供参考,祝挖掘快乐!
数据挖掘从业人员工作分析
1.数据挖掘从业人员的愿景:
数据挖掘就业的途径从我看来有以下几种,(注意:本文所说的数据挖掘不包括数据仓库或数据库管理员的角色)。
A:做科研(在高校、科研单位以及大型企业,主要研究算法、应用等)
B:做程序开发设计(在企业做数据挖掘及其相关程序算法的实现等)
C:数据分析师(在存在海量数据的企事业单位做咨询、分析等)
2.数据挖掘从业人员切入点:
根据上面的从业方向倒序并延伸来说说需要掌握的技能。
C,数据分析师:需要有深厚的数理统计基础,可以不知道人工智能和计算机编程等相关技术,但是需要熟练使用主流的数据挖掘(或统计分析)工具 。从这个方面切入数据挖掘领域的话你需要学习《数理统计》、《概率论》、《统计学习基础:数据挖掘、推理与预测 》、《金融数据挖掘》,《业务建模与数据挖掘》、《数据挖掘实践 》等,当然也少不了你使用的工具的对应说明书了,如SPSS、SAS等厂商的《SAS数据挖掘与分析》、《数据挖掘Clementine应用实务 》、《EXCEL 2007数据挖掘完全手册》等,如果多看一些如《中文版 数据挖掘原理》 等书籍那就更好了。
B,程序设计开发:主要是实现数据挖掘现有的算法和研发新的算法以及根据实际需要结合核心算法做一些程序开发实现工作。要想扮演好这个角色,你不但需要熟 悉至少一门编程语言如(C,C++,Java,Delphi等)和数据库原理和操作,对数据挖掘基础课程有所了解,读过《数据挖掘概念与技术》(韩家炜 著)、《人工智能及其应用》。有一点了解以后,如果对程序比较熟悉的话并且时间允许,可以寻找一些开源的数据挖掘软件研究分析,也可以参考如《数据挖掘: 实用机器学习技术及Java实现》等一些教程。
A.做科研:这里的科研相对来说比较概括,属于技术型的相对高级级别,也是B,C的归宿,那么相应的也就需要对B、C的必备基础知识了。
可能之后不会续写一篇《数据挖掘进阶》了,这边大概说一下B和C的进一步要求:
B当前主要包括如下方向:企业数据挖掘、Web数据挖掘、空间数据挖掘、多媒体数据挖掘等等;
C当前主要应用于:电信CRM、金融、咨询业等等;
最后说一下大家有必要熟悉数据挖掘工具:Google ,或许你也可以搜索到这篇文章,当然也可以搜索到人才招聘的相关职位需求以及其他资料,一如你当初搜索到 DMResearch 一样。