5.1 学习算法
学习算法有三要素: T (task), P(performance), E(experence):
任务T :这个算法是做什么的
· 基于监督学习: 分类,回归预测,结构化输出(输出有很多数据的数据结构并且数据与数据间有关系)
· 基于无监督学习:转录,机器翻译,异常检测,合成采样(生成一些训练数据),缺失值填补,去噪,密度估计
性能度量P:度量这个算法的准确率,时间等,相当于给算法评分
经验E:学习算法用了什么方法:
·监督学习:监督学习实际上就是计算训练数据点等于测试数据点的概率大小,概率大就认为是,概率小就认为不是
·无监督学习:观察向量x,猜测数据点在的概率分布
5.2 容量、过拟合、欠拟合
一个模型会有两种主要的误差:训练时候的训练误差,泛化数据(测试数据)时的泛化误差,一般来说泛化误差要大于训练误差。衡量这些误差主要是通过计算MSE(mean squared error)。
要做出一个好的学习算法,主要从两个方面入手:
·降低训练误差(训练误差过高会导致欠拟合)
·缩小泛化误差与训练误差的差距(泛化误差与训练误差差距过大会导致过拟合)
模型泛化函数的能力叫模型的容量,要调整模型的容量通常会选择改变假设空间:
改变假设空间: 其实际意义就是通过改变输入特征的数目和加入这些特征对应的参数,改变模型的容量,常见方法是提高特征x的次数
·改变输入特征的数目:提高特征x的次数,又y = b + wx 变为 y = b + w1x1 + w2(x1^2),增加了x1的数目
·加入这些特征对应的参数:提高特征x的次数,又y = b + wx 变为 y = b + w1x1 + w2(x1^2),增加了一个w2
上述的是参数模型,下面说的是非参数模型,
非参数模型没有固定数目的w和x,这里引入一个概念:贝叶斯误差:
贝叶斯误差:预先知道数据真实分布,如果预测的数据的分布真的好像预先知道的那样,那贝叶斯误差=0但因为所有东西都有误差,����预先知道的数据发挥到极致的时候的误差是数据的固有属性(比如缺少一些feature而导致的,这是不能被优化的),这个固有的误差就是贝叶斯误差
线性回归的时候最好使用线性函数,但有时候要用非线性函数的时候性能会不好改善这种情况有两种方式去控制算法的性能:
·允许使用的函数种类
·这些函数的数量
当我们在代价函数后面加一个正则项作为惩罚,来起到权重衰减的作用可以使其降低泛化误差。
5.3 超参数和验证集
超参数:设置来控制算法行为,超参数的值不是通过学习算法本身学习出来的,是通过设置、更新得出来的
验证集:从训练数据中构建验证集,比如一个固定数目的训练集中,80%作为训练集,20%作为验证集。验证集用于估计训练中或者训练后的泛化误差,更新超参数。
当训练集很小的时候,容易欠拟合,这时候可以运用k-折交叉验证过程解决问题:
折交叉验证过程:将数据集分成 k 个不重合的子集。测试误差可以估计为 k 次计算后的平均测试误差。在第 i 次测试时,数据的第 i 个子集用于测试集,其他的数据用于训练集。 把一个训练集重复使用k次,让他看起来好像很多数据的样子。
网友评论