小小考一下大家前两节的内容(坏笑)
我们如何评判一个机器学习模型的性能呢? 通常是判断它的泛化能力(对于未知数据的处理能力)
那么对于泛化能力是否有一个标准,比如在未知的1万个数据中,泛化能力 模型一90% > 模型二80% , 我们能说模型一就比模型二好吗? 根据NFL原则(没有绝对最好的),我们可以知道,刚刚那句话是不对的,比如对A来说,他需要前100个好就行,其他不重要,但B需要前10000个好,我们需要对他们进行定制不同的模型。
进入正题,我们手中没有没见过的数据(unseen instance),所以我们只能用已知的数据来调试模型参数,训练模型模型并模拟未知的数据来测试模型性能。
调试模型就是用验证集来调试参数(这个在这篇文章的后面讲)。
训练模型就是用训练集。
测试模型就是用测试集。
这个时候就会出现两个事情:过拟合和欠拟合。
过拟合:模型对于训练数据的特征进行过度解析,导致出现不符合该问题一般特征的判断。
欠拟合:模型对于训练数据的特征解析不够,导致没有全面了解该问题一般特征,无法做出正确判断。
下图可以很好地表现
上面是直观表示,两条线,一个是真实训练效果,这个是我们训练出来出来对于未来数据的效果,实际上是先欠拟合,之后越来越好,再之后过拟合。表面训练效果就是对于训练集表现出来的表面效果,是看起来越来越好的,但是实际后面已经出现过拟合了。
之后我们需要探讨一下模型选择方面的事,有三个问题
评估方法--如何获得评测结果,获得什么样的评测结果
性能度量--如何评估性能优劣,怎么判断需要什么性能
比较检验--如何判断实质差别,用什么标准比较模型的差别
OK,这节就这样