overfitting

机器学习的效果如何得看他的泛化能力咋样,学的不咋的,又可以分为:underfitting,即在看过的数据集上就没有做好,这时候可以增加hypothesis 模型复杂度,通过feature transform增加dvc。overfitting,即在看多的训练集上表现的很好,计算的hypothesis完全符合看过的数据点,但是Eout不好。与underfitting不同,overfitting的成因很多,因此可使用改进的方法也很多!
overfitting_第1张图片
一、overfitting 成因
先来看一个奇怪的现象:即便目标函数是高阶的,使用一个高阶的hypothesis学习效果却不如低阶hypothesis,这里的原因是数据点太少了,无法刻画出真实的hypothesis变化。数据集不够大,低阶的hypothesis反而更好!
overfitting_第2张图片
overfitting_第3张图片
假设数据通过目标函数和噪声产生,考虑噪声、目标函数复杂性、数据集大小对泛化能力影响:overfitting_第4张图片
选取二阶和十阶的hypothesis,先判断数据集大小和噪声强弱对泛化能力的影响,已知目标函数为20阶,衡量标准为10阶多项式和2阶多项式误差差值:
在这里插入图片描述
overfitting_第5张图片
判断目标函数的复杂度(样本数据跳跃性更大仿佛有噪声干扰)和数据集大小对泛化能力影响,这里的衡量标准依旧是标准为10阶多项式和2阶多项式误差差值:在最下面,此时目标函数的复杂性不高,但是使用10阶多项式易产生过拟合,与上面的分析类似,当数据量少,目标函数复杂度高时,均易产生过拟合:
在这里插入图片描述
overfitting_第6张图片
总结来说:数据量少,采取hypothesis模型复杂度过高,目标函数很复杂时,均易产生过拟合!

overfitting_第7张图片
deterministic Noise是最优hypothesis和target function之间的差距(图中灰色部分),determinstic Noise 总是存在的,因为hypothesis 不可能完美的拟合target function。为了缩小deterministic,当我们得知target不是那么复杂时,选用的hypothesis 也应该尽可能简单。
overfitting_第8张图片

二、如何解决overfitting
避免hypothesis set的vc dimension过大,那么从简单的hypothesis set开始做起!
避免Noise 的影响,对应就有data cleaning(修正错误数据点) 或是data pruning (剔除错误数据点)!比如可利用k-means方法,找出离群点,进一步修正或是剔除!
overfitting_第9张图片
避免数据量太少,可以做data hinting!利用已有的资料做一些变化(平移旋转),得到virtual example(与原有数据差别不要太大,防止破坏数据disturbtion) !
overfitting_第10张图片
当发现hypothesis 的复杂度已经过大时,可使用regularization!
以及使用validation 时刻关注拟合状况!
overfitting_第11张图片

总结:
overfitting_第12张图片

你可能感兴趣的:(机器学习)