学习机器学习的好的初始实现是什么?
我发现学习新知识时,最有效的方法就是通过简单的代码实现来理解这个概念。这就是我学习遗传算法和遗传编程的方式。那么,有哪些适合初学者的程序可以写来入门机器学习呢?
最好提到的资源能够在网上找到,这样大家都能受益。
5 个回答
决策树。这是一种常用的分类工具,有很多不同的变种。汤姆·米切尔的书是实现它的一个很好的参考。
我觉得你可以写一个“朴素贝叶斯”分类器来过滤垃圾邮件。这个书里有很多有用的信息。
http://nlp.stanford.edu/IR-book/information-retrieval-book.html
你打算用什么语言来开发呢?如果你比较灵活的话,我推荐使用Matlab、Python和R,这些都是不错的选择。这些语言在开发和评估算法时比较常见,能够帮助你快速开发和评估算法,还能处理数据和进行可视化。大多数流行的机器学习算法也都有现成的库可以使用(包括源代码)。
我建议你先从R语言入手,专注于一些基本的分类或聚类练习。这样更容易理解,而且通常足够用来探索机器学习中的一些问题,比如风险、类别不平衡、标签噪声、在线训练和离线训练等。你可以从日常生活中创建一个数据集,或者选择一个你感兴趣的问题。也可以使用经典的数据集,比如鸢尾花数据集,这样你可以和已有的研究成果进行比较。你可以在以下链接找到鸢尾花数据集:
这个数据集的一个好处是,它有一个类别“setosa”,这个类别和其他类别之间的区分很简单。
一旦你选择了几个有趣的数据集,就可以开始实现一些标准的分类器,并检查它们的表现。以下是一些值得学习的分类器:
- k近邻算法
- 线性判别分析
- 决策树(比如C4.5)
- 支持向量机(例如使用LibSVM)
- 提升算法(使用桩)
- 朴素贝叶斯分类器
使用鸢尾花数据集和我提到的语言,你可以很快(几分钟到几小时,具体取决于你的速度)进行一个小型的研究。
补充:你可以在网上搜索“鸢尾花数据分类”,会找到很多例子。这里有一个Mathworks使用鸢尾花数据集的分类演示文档: