IDMer:本帖中包含了数据挖掘初学者常见的问题,DMFighter对我以前回复的一些问题进行了精心的整理,在此也感谢他的辛勤工作。本文内容涵盖以下几个部分:
请问:现在数据挖掘开发主流平台和编程语言。那些更有优势呢?现在大都用什么呢 问题1:现在选择数据挖掘作为终身职业是明智之举吗? 问题2:如果我现在选择了数据挖掘,应该怎么做? 问题3:如何使学习阶段与行业应用靠拢? 对不同算法的性能效果进行评估比较,总结各种算法的特点及适用范围。当然,如果能对算法做些有益的改进更好,可以让论文的学术性更强。最后,描述出应用了关联分析的结果能带来什么效益(比如对货架位置的调整、对客户的交叉销售等到)。 一位数据挖掘成功人士 给 数据挖掘在读研究生 的建议: 关于数据挖掘方面的研究,我原来也走过一些弯路。其实从数据挖掘的起源可以发现,它并不是一门崭新的科学,而是综合了统计分析、机器学习、人工智能、数据库等诸多方面的研究成果而成,同时与专家系统、知识管理等研究方向不同的是,数据挖掘更侧重于应用的层面。 因此来说,数据挖掘融合了相当多的内容,试图全面了解所有的细节会花费很长的时间。因此我建议你的第一步是用大概三个月的时间了解数据挖掘的几个常用技术:分类、聚类、预测、关联分析、孤立点分析等等。这种了解是比较粗的,目标是明白这些技术是用来干什么的,典型的算法大致是怎样的,以及在什么情况下应该选用什么样的技术和算法。 经过初步了解之后,就要进入选题的阶段,选择自己感兴趣的某个具体方向,然后通读该方向的经典论文(综述、主要发展方向、应用成果)。选题阶段可能会花费较长的时间,比如一年。此时,要逐渐明确突破点,也就是将来你论文的创新点。创新对于研究来说非常重要,一方面该创新的确比原来的方法要好,另一方面该创新的确具有实用的价值。 随后,就要来实现自己的想法。通常对于硕士论文来说,需要建立原型系统,进行试验,并用试验结果来支持自己的论文主题。原型系统就是对自己创新点的实现,需要很好地设计和开发。需要注意的是,原型系统的建立和开发商用系统不同,需要体现比较好的理论基础。也就是说,原型系统并不是简单地用于实现功能,而是将你的一整套理论付诸实现。这种理论基础也将会包含在你的论文中,以体现论文的理论高度。 原型系统的搭建以及产生令人信服试验结果,这个过程一般需要至少一年的时间。所以要集中精力于核心部分(体现论文创新点的部分),外围的界面等等不应投入太多的精力,以免进度失控。 最后是论文的整理和写作了。建议你在之前的阶段中逐步先写出一些篇幅较短的论文(用于发在期刊、会议上),比如综述、体系框架、算法内核、应用等等。这样在最后写毕业论文时就有了足够多的内容,会写得更好更快一些。 以上只是泛泛而谈。其实我觉得其中的关键点在于选题,而选题的好坏取决于你对数据挖掘研究现状的了解、你的兴趣和专长、以及该方向在应用上的意义。建议你和导师、同行多交流,能够让自己的方向更清晰。 至于数据挖掘领域的就业,应该来说还是前景不错的。如果你对研究有兴趣,象微软研究院、Google、高校研究所都是不错的地方;如果你对实际应用有兴趣,很多大的公司包括IBM、Accenture、亚信等等都有相应的人力需求,当然一些甲方的单位比如证券、保险、金融等等单位也都需要分析人才。 关于论文如何创新“创新”是个很尖锐的问题。以前我帮导师审论文时,给论文评分包括几个要素,分别是理论基础是否坚实、研究问题的重要性、研究成果的创新性等。 所谓创新,就是你解决问题的方法是否和其他人的解决方法有所不同,而这种不同又是否更有利于解决问题。因此,要发现创新点,实际上需要充分的准备和深入的研究。 ①充分的准备:既然创新是找出解决问题的更好方法,那么首先你就要发现问题,而且要发现有价值的问题。当找到这种问题时,再去查找有没有人提出了解决这个问题的方法,他们的方法是怎样的,还存在什么不足之处。 这个阶段需要做大量的调查搜集的工作,也是做研究的准备阶段,常常需要通读相关研究领域的经典文献以及最新进展,写读书笔记予以总结。 ②深入的研究:当你发现了值得研究的问题,并且知道在这个问题上还没有很好的解决方法时,你就有了创新的机会。找出现有解决方法的不足之处,提出自己的解决思路,并予以验证,通过试验或者推理证明你的方法是有效的,创新点也就产生了。说起来容易做起来难,就象酝酿一个新发明一样,常常会需要大量的试验和周密的思考,而且也有可能忙了很久而一无所获。 希望说到这里没有让你心生惧怕,但我见过的一些认真做研究的人的确投入了很多的时间和精力才有所成就。当然对于国内的研究生来说,我倒是觉得在硕士阶段去追求显著的创新是不切实际的(个人的一管之见),其实把第一步做好已经不错了。如果没有做好第一步,打好基础,就急于找些创新点,那么这些所谓的创新点常常是毫无意义的,写出来的论文最终避免不了被扔到垃圾桶的命运(我以前写的一些论文也是如此)。大家常常说国内的研究论文质量很差,很大程度上也是源于我们现在的教育制度,要求研究生毕业前必须在SCI、EI或核心期刊上发表若干篇论文,重量而不重质,造就了现在的核心期刊完全变成了完成毕业任务的自留地。 话题扯远了,回到你关心的问题-如何找创新点。必要的文献阅读是不可缺的,了解研究现状和背景,才可能发现创新点。如果你想这个阶段快一些的话,也有些捷径,比如你可以到一些研究单位或学者的站点上,察看他们目前的研究动态,一般来说他们正在研究的内容常常是目前还未解决的,这样你可以尽快找到创新点的主攻方向。 数据挖掘人员从事的工作内容? 是不是开发数据挖掘平台、为别的企业单位量身制作DM、DW系统?除了这些还能有些什么? 读博深造的必要性 现在只是无指导的自学状态,能否在硕士毕业后胜任数据挖掘方面的工作呢?考取名校的博士进一步深入学习的必要性大不大? 自学时的大方向 文本、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%左右。 另外几个问题: 我是中国海洋大学一名研一生,专业是数据库。我想自己选择一门方向,认真的学习,作为终身职业。譬如 java程序员、数据挖掘人员、数据库管理人员等等。我比较喜欢数据挖掘,但是若干问题难以释惑。 问题1:现在选择数据挖掘作为终身职业是明智之举吗? 现在网上对数据挖掘的前景讨论的很厉害,褒贬不一。但是至少可以确定的是数据挖掘已经越来越被重视了。如你所言,大家看到的只是表面,许多成功的案例企业没有对外公开。但不可否认的是,数据挖掘在中国的应用有屠龙之技的嫌疑,广大的企业还没有重视起来。 总之,男怕投错行,这个问题总是敲击着我。如果我是您的弟弟,您会鼓励我走数据挖掘之路吗?还是推荐其他的IT职业? IDMer: 就我个人的观点,数据挖掘的发展还是前途很广阔的。说白了,数据挖掘就是一种分析问题的手段,问题一直会有,解决问题的手段也就一直有存在的必要。也许你听说过美国早期西部淘金热的时候,富起来的不是淘金者,而是为淘金者提供工具、水的人,甚至因为矿工需要结实耐磨的衣服,以致于牛仔裤风行起来并经久不衰。 至于你提到“屠龙之技”之说,只是很多人因为不熟悉数据挖掘的内部技术而产生的莫测高深的感觉。其实,数据挖掘本身并不是新技术,它融合了来自于统计学、数据库和机器学习等多学科已经成熟的内容,冠上了一个看起来比较时髦的名字而已。 组成数据挖掘的这三门支柱学科都已经发展了多年,也已得到了广泛的应用。那么我们也有理由相信它们的融合,能帮助我们解决更多的分析方面的问题。何况,业界还是有很多的成功案例,体现出数据挖掘所带了独特优势,而这些,是传统的BI(报表、OLAP等)无法支持的。 以上说了不少数据挖掘的好话,下面再看看硬币的另一面。如果你是我的弟弟(呵呵,虽然我没有,但也和很多年轻的师弟师妹聊过择业的话题),我会建议你不做IT业,哈哈,一句半真半假的玩笑。因为在IT这个行业看起来还是满辛苦的,而且在很多项目中,常常需要重复一些没什么技术含量的任务,消耗的精力不少,获得的成就感却不多。 Anyway,我的建议,其实也是我原来给自己的一句座右铭:认为对的就去做。找到自己的兴趣所在,并且感觉也有发展,那就尽力去做好了。 问题2:如果我现在选择了数据挖掘,应该怎么做? 您曾经在博客上回复一位北邮同学,建议熟悉学习各种算法;建立模型,创新思路改进算法撰写论文。 我当前的计划是 学习各种算法的原理;学习java语言;研究weka源码,深入了解几种经典算法的步骤;学习了解ETL,数据仓库、OLAP等;通过使用的数据集建立挖掘模型;思考论文;有空的话 还得SPSS或其他一个流行软件的使用方法。其中,我觉得难点是对数据集的整理形成挖掘流程的输入。 其中,我也有若干疑惑:掌握一门数据库是很重要的,但是没有时间一一了解SQL Server、Oracle、DB2等,但是在求职时,又说不定单位要求会哪门数据库!?我想就SQL Server单独进行深入的学习,包括学习在SQL Server中数据仓库的建立和数据挖掘的应用,其他的也就不管了。不知我这个选一而弃其他的打算可取不可取? IDMer: 从你的计划来看,还是对自己要掌握的知识和技能,划出了一个范围。看上去还不错,我只是从个人的经验出发,建议你不必苛求自己十八般武艺样样精通,很多方面只需基本了解,选择几个重点来练成自己的绝活。人的精力毕竟有限,目标越大就越难实现。 至于选择那些作为重点,就需要在广泛了解的基础上,结合自己的兴趣进行筛选了。 关于数据库的掌握,我觉得熟悉一种产品已经足够。SQL Server、Oracle、DB2都是关系数据库,在学生阶段把关系数据库的基础理论打牢,熟练运用SQL语句就可以了。这些主流数据库之间的差异,不是遵循的标准不同,而是产品的特性有别,以及在性能调优时的技巧。 问题3:如何使学习阶段与行业应用靠拢? 有一位学长,建议我学技术的时候要和行业靠拢,否则,“没有行业背景的技术会很飘”。我觉得他说的有道理,技术是相当宽泛的,你不可能面面俱到;而且,当你实际工作后,也就专于一个行业,技术的需要面也就变窄了。这样,有利于学习重点,不至于在学习时,面面俱到,没有突出。 但是,在数据挖掘方面,曾经请教过你,数据挖掘人员的工作性质。一种是在甲方做分析人员,利用所掌握的数据挖掘知识来解决一些业务问题。一种是在IT公司,为甲方实施DM、DW和BI等项目(前辈自己便属于此类?)。 在这里,我不太明白作为甲方,日常具体做些什么?难道是类似于网管性质的?那样不更倾向于数据库管理人员?他们还算是专业的数据挖掘人员吗,怎么觉得公司不大会安排这样的职位呢? 我比较倾向于做乙方,那样好像更专业似的。但是,乙方的话,都说数据挖掘在金融、电信、银行还是销售等方面主要应用。难道这意味着要学习或了解金融电信的背景、CRM、经济学、Excel……? 还有,您曾提到,毕业后也可以做研究工作,我觉得提供研究工作的岗位毕竟是少的。而且,那样挣钱多吗(流汗中)? 是否现在应该考虑以后进哪个(哪类)公司,现在根据它的要求来强化自己呢? IDMer: 你这位学长说得没错,脱离实际的纯理论大多会消散于无形。至于甲乙方的区别,实际上也没有想像中那么大,特别是对于刚刚参加工作的基层员工来说,可能差不多。 先在乙方历练几年,然后跳到甲方,这种状况我看到不少。也许是因为在乙方接受的锻炼和学习到新知识经验的机会更多些吧,可以在年轻时有更多的积累。当然,如果有很好的在甲方工作的机会,也是不错的选择。 到乙方工作,特别是对一直待在校园里的应届生来说,招聘方重点考察的大多是你的知识是否扎实、性格是否有利于融入团队等方面。至于对行业的了解,一般很少有过多的期望,除非你有多年在相关行业做项目的经验。 国内的研究机构还是以科研院所和高校为主,待遇一般要比公司低,但也有很多人,包括我的师兄师姐以及同学,选择了继续做研究,因为他们会从研究中获得很多乐趣。另外一些研究机构是企业特别是外企的研究院,待遇也很好,但就要求你很出色才有机会加入。做研究还有一个很好的地方,就是国外的院校或研究所。 后记:觉得自己的提问没有意义,好像有些是明摆着的问题,又抑或是些不值得回答的问题似的。前辈若有时间,还望指点一二。我不急,若忙的话,啥时候回复都可以。 |