问:本人大学本科,对机器学习很感兴趣,想从事这方面的研究。在网上看到机器学习有一些经典书如Bishop的PRML, TomMitchell的machine learning,还有patternclassification,不知该如何入门?那本书比较容易理解?
答:最近在学teradata的aster数据挖掘工具,果然商业的框架跟hadoop的易学性易用性可拓展性都有天壤之别啊。建议有兴趣的同学自查资料,软件贵的惊人,但是对于自身维护团队水平一般的企业还是值得买的
-----------
不邀自来,结合我现在的工作以及当年机器学习的经验来讲一下自己的一些感受。
首先从机器学习的全流程说起。
输入:机器学习按输入数据分可以分结构化数据(表),半结构化数据(文本,日志等),非结构化数据(图片,录像),后两者对应的分支中比较出名分别是文本挖掘和图像挖掘,其实就是通过提取特征的方式 把半结构化数据 非结构化数据转化为结构化数据,然后进行机器学习。
按输入数据是否预测状态分,可以分为有监督学习数据及无监督学习数据,直接决定后续模型是使用分类模型还是聚类模型。
同时如果数据量到达了T级,就要考虑时候hadoop框架了,这里要说明的是,hadoop框架只是解决大数据处理效率瓶颈的工具,除非你志向是做架构师,不然不用深究,掌握hadoop家族的sql处理工具hive和机器学习工具mahout就可以了,需要掌握java和sql,这是基础。
下一步,数据清洗和数据降维,在数据清洗方面不是学术界研究的重点,清洗方法有很多,主要通过描述性统计量填补缺失值和极端值,数据降维方面有较多比较出名的算法,如主成分分析,lasso,LDA线性判别分析,变量聚类等,数据降维是重点,因为维度过大容易产生维度灾难和过度拟合问题。
然后是数据分区(有监督学习才需要做),分成训练集,验证集,测试集,分别用于训练模型,模型内修正,多模型效果对比用。不展开讨论。
接着建模,分为分类算法,聚类算法,规则关联算法,分类算法是大头,建议分别拜读支持向量机,概率图模型,神经网络(虽然我不喜欢但是google的深度学习就是用的神经网络),决策树(C4.5),逻辑回归(吐槽:线性回归什么的看不看得看个人水平),混合高斯模型等,聚类算法有KNN,LDA潜在迪力克雷分析(做文本挖掘效果一流),聚类算法研究不多,大多机器学习算法都是基于有监督学习的,即分类算法。规则关联算法有最简单的规则关联,路径关联分析,及协同过滤(推荐系统首选,输入数据量太大数据太稀疏跑数效率很低一般需要hadoop支持),模型是机器学习的核心,还有一些优化模型,如EM模型等,建议阅读增加知识广度,要求学习人员要懂以下课程:概率论,高数,线性优化,线性代数还有英文,也可以边看论文边学。书籍的话推荐数据挖掘十大算法作为入门索引,然后根据每章节的参考文献找原文阅读,记得把公式推导一遍。
结果评估:本来不应该是重点,但是从个人学习和工作经历发现,有很多人不是很会看模型结果,甚至包括一些专业人士。所以如果有志做机器学习的千万要学会看结果,不然就丢人丢大了。
最直接的两个指标准确度percision和召回度recall,分别描述模型的精度和泛化性的,模型结果应在两者取得均衡。最小平方误差也是描述准确度的,算法不一样,大家更喜欢用这个评估模型精度。还有一些K-S值,基尼值,ROC值也是描述准确度和拟合度的,不同的软件会使用不同的指标,注意一下。还有就是提升度,事件捕获率这些就是描述分类预测下前百分之几数据的预测准确性情况的,不展开讨论。最直接的学法就是认真读论文的实验部分,看看它的指标评价量。
最后是工具和语言,按现在数据挖掘与机器学习的趋势,必须掌握java,python,原因是hadoop是处理大数据的框架,已成趋势,hadoop是java写的,挖掘工具mahout是java写的。python的好处在于底层基于C,语法简单,效率高,而且有很多开源的算法可以直接用,支持mapreduce。可以选择掌握R,同python,但是R效率木有python高,如果是针对商业分析建议学习SAS,因为它集成了一套专业的数据可视化及数据分析方案,大大方便了数据展示功能,这是作为商业分析所必须的。
最后补充一点,很多做数据挖掘和机器学习的人最后都走火入魔执着技术忽略了业务的重要性,忽略了模型可解释性的重要性,埋头苦干做出业务人员不能理解的黑箱模型,无法说服业务使用,最终沦为鸡肋的存在,所以在学习过程中要时刻设想技术适应的业务场景,在算法效果接近时选择高可解释性算法,做好结果的图形化展示,让业务理解,这才是王道。
转自知乎「许靖」的回答
2016年,经管之家《机器学习》全国4月开课,详情请戳:http://www.peixun.net/view/558.html