机器学习(Machine Learning) 介绍与决策树(Decision Tree)
机器学习入门系列 是 个人学习过程中的一些记录与心得。其主要以要点形式呈现,简洁明了。
1.什么是机器学习?
一个比较概括的理解是: 根据现有的数据,预测未来
2.核心思想 : Generalization
可以理解为,归纳、概括。就像是人的学习一样,找出一件事物与与一件事物的联系
3.归纳性的机器学习(Inductive machine learning)
其核心思想是使用训练数据,并从其中摸索出一套适用于现实中的公式 f。然后用这个公式来预测现实中的结果
其分为四种类型
- Regression 回归类型: 主要适用于预测真实数据
- Binary Classification : Yes 和 No 的分类问题
- Multiple Classification: 一对多的分类问题
- Ranking:相关性的排序问题
4.第一个模型:决策树
决策树的核心思路:divide and conquer。 相信大家在学习 递归编程(recursion)的时候已经很熟悉了这个概念了,那就是将问题拆分到足够简单,然后解决掉它。
为了将现实中的问题转化为我们可以使用的模型,在这里我们提出几个概念
feature(特性):每次决策树在做决定时要问的问题
feature value (特性值):简单理解为问题的回答
training data : 训练数据 > > 即有很多个例子的集合。每个例子 通常以 (x,y)形式形式出现,x 是输入数据,y是实际的结果
5.决策树的工作原理
例如下面的决策树虚拟代码取自《A Course in Machine Learning》(Hal)
其核心思路是,从剩余的feature 中选择一个最有用的来提问,如果答案可以直接决定最终结果那么,跳出递归。如果没有剩余的feature 来提问那么返回默认答案。否则将整个数据一分为二,分别是yes 组合 no 组,然后分成两个分支继续递归(16,17行)。
6.Loss Function,L(y , y*)
y 是真正的结果,y* 是机器预测的结果 L 代表 loss 函数。所以loss function 是用来量化错误的。
根据不同类型可以分为:
- Regression 回归类:
- Square loss: 平方损失: L(y , y*) = (y - y*)2
- Absolute loss: 绝对损失: L(y , y*) = |y - y*|
- Binary 是和否的问题 以及多组分类问题 :
- L(y , y*) = 0 , if y = y* (零损失)
- L(y , y*) = 1 , if y <> y*
7. 平均损失 Expected Loss
Expected loss = Sum(x,y)( D(x , y) * L(y , y*) )
D(x,y) 是 (x,y) 发生的概率分布,这里可以理解为(x,y)发生的概率。 所以就是期望值的一般算法, 把概率乘以损失 然后求和。
所以对于我们机器学习推导出来的方程式 f,需要Expected Loss 越低越好。
8.Inductive Bias 归纳偏见
不同的模型或者方法的选择会产生不同的偏见。例如决策树会比较擅长处理单独的一个一个的问题,但是对于几个feature相互作用的问题就收效甚微。
在后续文章会继续介绍不同模型的偏见,这里先提出来。
9. Shallow Decision Tree
即有最大深度的 决策树,我们可以用一个深度 d 来限制决策树的最深层数
10. Underfitting 和 Overfitting
这是两个非常重要的概念, Underfitting 是指的,学的不够多,例如学生什么都不学就去考试,自然不会考的好。
Overfitting 是指,学生学成了书呆子,只会死记硬背,考试的题目改几个数字就完全不会做了。
在决策树里面,如果一个feature 都不问,那么就是 underfitting ,什么都不学,每次只返回训练数据里面的多数答案。
如果问很多个feature 把 所有的feature都问一边就有可能 overfitting, 完全的照着训练数据在记忆而不是归纳学习。
11.数据分配
数据 | 说明 | 百分比 | |
Training Data 训练数据 | 学习并总结 方程式 f | 70% | |
Development Data 研发数据 | 调整超级参数(Hyperparameters) 来避免 underfitting 和 overfitting。 | 10% | |
Test Data 测试数据 | 用来评估最后的学习效果。永远不要偷看测试数据!偷看测试数据就好像偷看了考试答卷,只会导致程序有针对性的编程。但是一旦到了真正的运行环境,效果就会十万八千里。 | 20% |
超级参数(Hyperparameters) 是指的可以影响普通参数的参数。例如 刚刚最高询问深度 d,就是一个超级参数。
12.机器学习一般方法
- 将数据分成 70% 的训练数据,10% 研发数据, 20% 测试数据
- for loop 所有的 hyperparameter (超级参数)
- 使用训练数据,训练模型 f
- 使用 研发数据 计算 Expected Loss (平均损失)
- 从上面所有的 超级参数中,选择平均损失最低的那组作为最终模型
- 使用 测试数据对最终模型进行评估
Reference
Hal, Daumé III. A Course In Machine Learning. 2nd ed. Self-published, 2017. Print.