啃西瓜书(心得体会)
第一章 绪论
1.1 绪论的重点
“机器学习是一门学科,致力于研究如何通过计算的手段,利用经验来改善系统自身的性能”
Arthur Samuel described it as: “the field of study that gives computers the ability to learn without being explicitly programmed.”
Tom Mitchell provides a more modern definition: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.”
从这句话出发有几点思考如下:
(1)可以看出机器学习和计算机程序有很大关系,而人工智能的定义是“研究,开发用于模拟,延申,扩展人的智能的理论,方法,技术以及应用系统的一门技术科学。“(百度百科)可以发现人工智能的定义更加宽泛,对于延伸人的智能的技术包括例如演技增强机械手的承重能力的技术等,其中并不涉及"经验”的学习,甚至不涉及计算的手段。
(2)“经验”通常以“数据”形式存在。所以机器学习所研究的主要内容是从数据中产生“模型”(model)的算法,即“学习算法”。这句话可以理解为**机器学习所研究的内容={学习算法}**同时这句话中经验=数据。模型=从数据中学得得结果
1.2 基本术语的重点
{一组记录}=一个数据集
每条记录=对象/事件的描述=一个示例(instance)或样本(sample)
每条记录由性质的事项组成。
性质=属性/特征
属性张成的空间=属性空间/样本空间/输入空间
”训练过程中使用的数据称为训练数据,其中每一个样本称为训练样本(training sample),训练样本组成的集合称为训练集。“
这句话中没有说所有的训练样本组成的集合称为训练集,因为有时候我们会分出一部分作为验证集
可以理解为训练过程使用的训练数据会分为训练集和和验证集,所以这里没有说绝对的话。
模型(未学得的)=学习器=(学习算法在给定数据和参数空间上的实例化)???这里的参数空间指的是什么?
潜在真相=真实(ground-truth)
学得的模型(对应了某种潜在的规律)=假设
需要有标记的数据才能得到关于预测的模型。
样本空间到底是什么?
个人感觉样本空间就是输入样本的集合,而输出空间相对应的就是标签的集合。
1.3 假设空间
首先要知道什么决定了假设空间
如果假设了标签是由m个特征,每个特征有n种可能取值决定的,那么假设空间就包含假设的所有可能取值的组合形成。大小=(n+1)^m+1
为什么n+1 因为除了可能取值还有可能*=怎样取值都可以,还有一种怎么都不可以所以+1
什么是版本空间?
多个与训练集一致的假设组成的集合。
值得注意的一点是:
如果想要更快得到版本空间,可以暂时不同在所有的假设空间里面去选择,可以先把满足训练集的最具体的假设找出来,之后自底向上找寻,因为只有最底层(具体)的假设满足了才有可能上层也满足假设。
第二章 模型评估与选择
2.1:经验误差与过拟合
error rate 分类错误的样本数/样本总数 a/m
accuracy 精度 1-a/m
训练误差/经验误差(empirical error) 训练集上的误差
泛化误差 新样本上的误差
实际上想要做到最小化泛化误差,从训练数据中找到适用于所有潜在样本的普遍规律,在遇到新样本才能做出正确的判断。
过拟合是什么
学习器把训练样本学得太好了的时候,很可能把训练样本自身的特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。
过拟合和欠拟合
机器学习现象 | 导致原因 | 解决方法 |
---|---|---|
过拟合 | 最常见的情况是学习能力过于强大,以至于把训练样本包含的不太一般的特性都学到了。 | 很难解决。无法避免,只能缓解 |
欠拟合 | 通常是学习能力低下导致的。 | 决策树中扩展分支/神经网络中增加训练轮数等 |
模型选择
理想情况下:对候选模型(可能有不同的学习算法,不同的参数配置)的泛化误差进行评估,然后选择最小的那个模型。
事先不知道新样本是什么样的,如何都得到泛化误差?训练误差又可能会有过拟合现象,该怎么办呢?
2.2 评估方法
D=S+T 通常我们假设测试样本是从样本真实分布中独立同分布采样得来的。这里,为什么?!!
2.2.1 留出法
将数据集分为两个互斥的集合,其中一个集合作为训练集S,另一个作为T,在S上训练出模型后用T来评估测试误差,作为对泛化误差的估计。会给定比例(一般是2/3~4/5)
1.训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终的结果产生影响。
思考:如何影响?重点是如果破坏了训练集和D的分布一致性,那么训练集上训练的模型无法保证评估结果的保真性(fidelity)。
2.求平均更准确。
个人觉得这种方法就是想利用训练集来代替D来训练。
2.2.2 交叉验证法
D=D1…Dk互斥…说白了就是分成k个互斥的大小相似的集合,互相保持数据分布的一致性(分层采样)。每次用k-1个集合的并集合作为训练集,1个作为测试集。这样可以训练k次和测试k次。
2.2.3 自助法
bootstrap sampling 保证永远都有1/3的测试样本没有采样过。训练集合和数据集大小可以保持一致。这个方法和前两种方法的不同是没有保持分布的一致性,如果数据集太小无法区分训练集/测试集可能还能用,数据集太大会对结果有很大影响。
2.3性能度量
ROC F1等知道公式即可。
TPR=TP/TP+FN
FPR=FP/TN+FP
FN=False to negative actually true(可以这么记忆)
…其他可以类似记忆
之前说的错误率=判断错的数目/所有样本数
在这里等于FN+FP/TP+TN+FP+FN