首页 > 代码库 > 机器学习资料与攻略超强整理吐血推荐(二)

机器学习资料与攻略超强整理吐血推荐(二)

在前文《机器学习资料与攻略超强整理吐血推荐(一) 》中,我们讲到要进入人工智能的圈子,数学是不可逾越的第一关,然后我们又推荐了一些你必须掌握的数学方面的资料。接下来,在这一篇中,我们将介绍关于机器学习的理论与工具方面的资料。


二、工具篇


工欲善其事,必先利其器。大数据时代,人工智能的工具趋势是显而易见且确定无疑的。作为一名数据科学家,其实你可以选择的工具非常多,其实随着时代的发展和技术的演进,传统的SPSS、STATA和SAS等这些老牌数据分析工具都已经集成了机器学习和数据挖掘的模块。当然,这不是我们要推荐的重点。此处要谈的工具主要有四个:Matlab、R、Python 和 Weka。


1. Matlab


Matlab是一个非常成功的商业软件,做图像处理或信号处理的人对它一定不会陌生,它是在诸多领域进行学术研究的一大神器。现在随便什么人都知道AI时代已经开启,Matlab又岂能甘愿落于人后?为了提供对于各种领域应用的支持,Matlab中集成了为数众多的“工具箱(Toolbox)”,再加持到它原本就异常强大的矩阵计算能力上,其实用Matlab来做机器学习或者数据挖掘也是相当不错的选择。Matlab中可以进行数据挖掘或机器学习的工具箱有很多,例如神经网络工具箱,机器学习工具箱,甚至计量经济学工具箱也继承了很多数据挖掘功能。对于利用Matlab来进行机器学习或者数据挖掘的例子,你可以参考:

  • 在MATLAB中进行基于SVM的数据分析
  • 机器学习中的kNN算法及Matlab实例

遗憾的是,目前在市场上我们还没有看到特别好的(或者特别全面的)介绍利用Matlab进行数据挖掘或机器学习的教材或图书。但其实这又不算是一个什么问题。因为Matlab毕竟是一个收费软件,所以它的帮助系统其实是非常完善的,如果需要用Matlab来进行数据工作,其实只要勤查它的帮助就足够了!Matlab中提供的各种数据挖掘函数鲁棒性强,使用简便而且速度也很快,总之是相当不错的。


2. R


R是一个免费的、开源的,数据分析“系统”、“语言”和“环境”。它最初是以统计分析为目的而设计的,今天它仍然是进行统计分析的首选。加之它拥有非常非常强大的绘图功能,可以说是提供了从头到尾的完美服务。R的强大有赖于数以万计的社区开发者为它贡献的各种功能的“库”(library)或者包“package”。通常,用于实现数据挖掘与机器学习的函数,分散地存在于众多库中。例如,软件包mclust提供了利用高斯混合模型进行聚类分析的函数。对于利用R来进行机器学习或者数据挖掘的例子,你可以参考:

  • K-means算法原理与R语言实例
  • 在R中使用支持向量机(SVM)进行数据挖掘

如果你希望学习在R中进行机器学习和数据分析,那么有两本书可以推荐,首先是下面这本私货:

1)《R语言实战:机器学习与数据分析》,这本书最初1/3介绍了R语言的基本用法,中间1/3介绍了基于统计的数据分析,最后1/3介绍在R中进行机器学习的内容。既有完善的代码和实例演示,又包含有详细的理论推导(和数学公式证明)。非常适合想利用R语言进行数据分析和机器学习的初学者。

技术分享

2)第二本是由Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani共同编写的经典教材:

《统计学习导论:基于R应用》(An Introduction to Statistical Learning with Applications in R),这本书相比于上一本更加深入,比较适合对R语言已经比较熟悉的读者进行关于机器学习方面的深入学习。你可以从网站 http://www-bcf.usc.edu/~gareth/ISL/ 上下载到该书英文版的电子版,也可以通过网店购买本书的中文翻译版。

技术分享    技术分享


3. Python


Python是当前非常流行的一门计算机语言,同时利用它进行数据分析也是非常流行的。在Python进行数据挖掘和机器学习方面的应用,主要是以使用scikit-learn这个函数库来实现的。你可以在网站http://scikit-learn.org/ 上了解到更多关于该库的例子和文档。当然,在Python中进行数据分析,还依赖于其他的库,例如用于绘图的matplotlib等,这里我们不逐一详述。对于利用Python来进行机器学习或者数据挖掘的例子,你可以参考:

  • Python机器学习之Logistic回归

学习如何在Python中进行机器学习和数据挖掘,你可以参考下面这本非常流行的教材:

1)《机器学习实战》,作者是Peter Harrington,中文翻译版由人民邮电出版社出版。

技术分享

4. WEKA


WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它是由新西兰怀卡托大学开发的一款基于Java的免费的、开源的数据挖掘工具。它在国外无论是学术界还是产业界都有非常成功的应用案例。2005年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的WEKA团队荣获了数据挖掘和知识探索领域的最高服务奖,WEKA系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最为完备的数据挖掘工具之一。WEKA的使用非常简单,通过图形用户界面,你只需要单击几下鼠标(而无需编写代码或调用函数),就能完成各种非常复杂的数据挖掘任务。对于利用WEKA来进行机器学习或者数据挖掘的例子,你可以参考:

  • 数据挖掘十大算法之决策树详解

目前,如果你希望学习如何在WEKA中进行机器学习和数据挖掘,那么下面这本教材应该是你的首先:

1)《数据挖掘:实用机器学习工具与技术》(Data Mining, Fourth Edition: Practical Machine Learning Tools and Techniques),作者是威滕 (Ian H.Witten) 和弗兰克 (Eibe Frank)等。

技术分享 技术分享


三、理论学习篇


1、书籍


上面的一些结合工具来讲解机器学习的教材中也蕴含了理论推导方面的介绍。但是如果你希望从纯粹的理论角度去学习数据挖掘和机器学习(即不涉及工具的使用),那么你可以参考下面这些经典教材。首先是中国人编写的两本教材。

1)《统计学习方法》,李航,清华大学出版社。国内很多高校把它选作相关课程的教材。这本书的特点是简明扼要(全书比较薄),选取了一些比较常用的机器学习方法,逐个进行介绍。适合入门,能在短期内形成某些特定的技术的认识(一些具体的计算例子非常好,但是我发现很多例子跟wiki百科上的如出一辙,我不能确定谁先谁后,出于严谨的考虑可能作者加一些引用比较妥当)。但由于比较初步,我个人认为不太强调建立学习脉络和对机器学习全局的视角。

技术分享

2)《机器学习》,周志华,机器学习。周志华老师是国内研究机器学习方向的顶级学者,集各种fellow与一身。借助他个人很大的名气,这本书一经出版就攀上各大畅销书排行榜。书中的例子主要围绕一个买西瓜的情景展开,所有很多人又称这本书是“西瓜书”。这本书非常非常理论,我个人建议对于绝对的初学者并不是很好的选择,如果有人讲解可能更好,毕竟它本身就是一本机器学习的教材。

技术分享

下面是外国学者编写的经典书籍。

3)《数据挖掘导论》(Introduction to Data Mining),作者Pang-Ning Tan、Michael Steinbach和Vipin Kumar。该书围绕数据挖掘这个话题,涵盖了五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都有两章:前一章涵盖基本概念、代表性算法和评估技术,而后一章讨论高级概念和算法。这是数据挖掘领域相当系统相当全面的一部书,但是难度并不大,对数学的要求要低于后面的两本。

技术分享


4)《模式识别与机器学习》(Pattern Recognition and Machine Learning),简称PRML,作者是微软公司的资深研究科学家Christoper Bishop。这部书(和后面那本)难度都比较大,但是如果能啃下来的化,机器学习方面的功力会大增。应该是每位学者或者教授在讲授机器学习时的切入点都各不相同,尽管他们所讲到的具体模型或算法会有较大面积的重叠,但是由于切入点不同,所以行文脉络也大相径庭。这一点要在你读书的时候自己细细去体会。

技术分享


5)《统计学习精要》(The Elements of Statistical Learning: Data Mining, Inference, and Prediction),图书作者中的Robert Tibshirani和Trevor Hastie还是前面介绍的《统计学习导论:基于R应用》一书的合作者。正如前面所说的,在介绍机器学习时,不同学者的思路是有很大差别的。有人会写那种根据机器学习目的不同而分门别类并行而进的书(例如回归、分类、聚类、关联关系等等)。有人会从监督学习、非监督学习、半监督学习的角度去介绍。还有的人会从Generative模型 v.s. Discriminative模型的角度来介绍。 下面这部书的切入点,其实是从“统计学”过渡而来的,所以在线性回归、多元回归、改进的回归(LASSO或岭回归)等方面着墨颇多,这也是本书的一个特色。

技术分享


2、免费的在线课程


最后,网上还有很多关于机器学习和数据挖掘的公开课。如果你想一点一点系统的学习,那么这些资源你都不应该错过。下面推荐的这些课程在互联网上可以说是尽人皆知、有口皆碑了。


1)斯坦福大学的公开课——机器学习 ,由Andrew Ng主讲。我相信JerryLead 的EM博文就参考了Andrew Ng的授课内容。这个课程是英文授课,国内网站的视频上还配了中文字幕,如果你有毅力和决心,那么啃这个课程是很不错的选择。国内可以访问网易公开课来学习,地址如下http://open.163.com/special/opencourse/machinelearning.html


2)如果你还是觉得听英语很别扭,那么由台湾大学林轩田教授录制的中文Coursera课程(也就是传说中的MOOC)——机器学习系列就是一个绝佳的资源。该课程分上下两个部分:

  • “机器学习基石”课程(http://c.open.163.com/coursera/courseIntro.htm?cid=938),尽管它声称是基础部分,但其实起点一点也不低,这一点应当注意。可是前半段的理论推导部分其实门槛很高,要彻底吃透很不容易。
  • “机器学习技法”课程http://c.open.163.com/coursera/courseIntro.htm?cid=1664),如果你想学习进阶内容(当然,前提是基石部分的知识你已经统统掌握了),那么你便可以选择林教授的这一门MOOC课程,它对应了第二学期的内容。


3)由悉尼科技大学徐亦达博士录制的中文机器学习系列视频(http://v.youku.com/v_show/id_XMTM1MzQ1NDk5Ng==.html?from=y1.7-1.2)。这个课程也不错,讲解很细致,但是我必须说,你可以选一些自己感兴趣的专题去听。但如果你是小白,这个课程覆盖面可能相当窄小,很多重要且基础的机器学习内容,这个课程都不涉及。


其他一些值得看的博客,你还可以参考《机器学习与数据挖掘网上资源搜罗》中的推荐链接。

在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( top 10 data mining algorithms )。本博客已经介绍过的位列十大算法之中的算法中的八个,如果你对其中的某个感兴趣,不妨参考一下:

  • [1] k-means算法(http://blog.csdn.net/baimafujinji/article/details/50570824)
  • [2] 支持向量机SVM(http://blog.csdn.net/baimafujinji/article/details/49885481)
  • [3] EM算法(http://blog.csdn.net/baimafujinji/article/details/50626088)
  • [4] 朴素贝叶斯算法(http://blog.csdn.net/baimafujinji/article/details/50441927)
  • [5] kNN算法(http://blog.csdn.net/baimafujinji/article/details/6496222)
  • [6] C4.5决策树算法(http://blog.csdn.net/baimafujinji/article/details/53239581)
  • [7] CART算法(http://blog.csdn.net/baimafujinji/article/details/53269040)
  • [8] Apriori详解 (http://blog.csdn.net/baimafujinji/article/details/53456931)

(本文完)

??

VIEWER DISCRETION IS ADVISED !!!

如果你有什么好的建议或者资料补充,也欢迎在博客下方留言发表见解!
??

机器学习资料与攻略超强整理吐血推荐(二)