写在前面: 本博客系列是关于《机器学习实战》一书的学习笔记系列,与隔壁吴恩达的视频笔记相互配合,希望能学得更好一些(不知道,试试吧)。
第一章 机器学习基础
什么是机器学习
- 机器学习就是把海量无序的数据转换成有用的信息。机器学习需要用到统计学知识。
- 训练集:用于训练机器学习算法的数据样本集合。
- 特征/属性:训练样本集的列,独立测量得到的结果。多个特征联系在一起共同组成一个训练样本。
- 目标变量:机器学习算法的预测结果
- 为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。
- 知识表示:某程序/机器通过满足精度的测试。其可以采用规则集、概率分布、或者训练样本集中的一个实例表示。
机器学习的主要任务
- 机器学习的主要任务是分类和回归。
- 回归:主要用于预测数值型数据,比如数据拟合曲线(通过给定数据点的最优拟合曲线)。
- 监督学习:分类和回归属于监督学习。这类算法必须知道预测什么,即目标变量的分类信息。
- 无监督学习:数据没有类别信息,也不会给定目标值。其可以减少数据特征的维度,以便可以使用二维或三维图形更加直观地展示数据信息。
- 聚类:将数据集合分成由类似的对象组成的多个类的过程。
- 密度估计:寻找描述数据统计值的过程。
用于执行分类、回归、聚类和密度估计的机器学习算法
| 监督学习的用途 | 无监督学习的用途 |
|---|---|
| k-近邻算法 | K-均值 |
| 朴素贝叶斯算法 | DBSCAN |
| 支持向量机 | 最大期望算法 |
| 决策树 | Parzen窗设计 |
| 线性回归 | - |
| 局部加权线性回归 | - |
| Ridge回归 | - |
| Lasso最小回归系数估计 | - |
如何选择合适的算法
-
首先考虑使用机器学习算法的目的
-
若要预测目标变量的值,可以选择监督学习算法,并进一步确定目标变量的值。
- 离散型用分类算法:是/否、1/2/3、A/B/C、红/黄/蓝
- 连续型用回归算法:0.0-100.00、-999-999
-
无监督学习。
- 聚类算法:唯一需求是要将数据划分为离散的组。
- 密度估计算法:除了分组还需要估计数据与每个分组的相似程度。
-
-
还应该了解数据的以下特征:
- 特征值是离散型变量还是连续型变量
- 特征值中是否存在确实的值,何种原因造成的
- 数据中是否有异常值
- 某个特征值发生的频率如何
- …
开发机器学习应用程序的步骤
- 1 收集样本数据:可使用公开的数据源,也可制作网络爬虫从网站上抽取数据、从RSS反馈或者API中得到消息…
- 2 准备输入数据:数据格式要符合要求。书中用的是Python语言的List。
- 3 分析输入数据:人工分析或通过123维图形展示数据(多维也可压缩成123维),且必须保证数据集中没有垃圾数据。
- 4 训练算法:机器学习算法(步骤4+5是算法核心)是从这一步开始学的。 (若使用无监督算法,无需目标变量值故不需要训练算法,则所有与算法相关的步骤都集中在第五步)
- 5 测试算法:实际使用第四步机器学习得到的知识信息。评估算法精度。
- 6 使用算法:将机器学习算法转换成应用程序,检验是否可在实际环境中操作。
Python语言的优势与劣势
- 优势
- python语法清晰
- 易于操作纯文本文件
- 使用广泛,存在大量开发文档
- 劣势
- 运行效率不如java和c。
- 解决办法
- C代码替换核心代码,如C++Boost库
- Cython和PyPy等工具来编写强类型的Python代码来进一步改进性能
NumPy函数库基础
- 用书上的例子验证是否正确安装了函数库
- NumPy函数库中有两种完全不同的数据类型(矩阵matrix和数组array)都可以处理行列表示的数字元素。在这两个数据类型上执行相同的数学运算可能得到不同的结果。