机器学习中的统计思维(Python实现)
上QQ阅读APP看书,第一时间看更新

1.4 损失最小化思想

既然模型好坏可以用损失大小来比较,人们就希望损失越小越好,这就是损失最小化的思想。无论是日常生活还是政府决策,都少不了这种思想的辅助。举个例子,小明有一大乐趣就是买鞋子。在一次大促销活动中,小明看到商场的满减活动,忍不住凑单买了3双鞋子,消费了1000元。可是,这3双鞋子中只有一双是最舒适合脚的,于是另外两双鞋子穿都没穿就被塞进柜子中。又有一次,小明的一双跑步鞋开裂了,就近来到一家鞋店,店中的鞋子都不便宜,小明千挑万选,挑中一双1000元的。小明对这双鞋子十分钟爱,使用率很高。如果从损失来看,第一种情形,虽然鞋子单价便宜,但是总体使用率低,可以认为未穿的两双鞋子的消费金额就是损失,而第二种情形,虽然鞋子单价贵一些,但使用率高,可以认为损失很小。按照损失最小化思想来看,当然应该选第二种。

再比如,2020年初武汉爆发新冠肺炎疫情,一方有难八方支援,即使有众多志愿者的无偿劳动,但据中国国务院新闻办公室发布的《抗击新冠肺炎疫情的中国行动》白皮书显示,我国确诊患者人均医疗费用约2.3万元,不提所需费用,仅是患者经受的病痛,人们产生的恐慌,大量的停工带来的经济损失,对我国来说损失是巨大的。2021年初全国开始大规模的接种新冠疫苗,与其他国家不同,我国接种新冠疫苗全部免费,虽然会增加政府的支出,但从长远来看,可以减小疫情带来的更大损失,这明显是我国政府根据损失最小化的思想做出的决策。

在机器学习中,到底应该最小化什么损失呢?模型是根据训练集训练出来的,希望模型具有良好的拟合能力。同时,模型归根结底是要拿来用的,要对未来决策有帮助才行,因此也希望模型具有良好的泛化能力。如何才可以两全其美,让模型既具有良好的拟合能力又具有良好的泛化能力呢?如果以训练误差度量拟合能力,以测试误差度量泛化能力,那么可以定义最小化的目标函数为总损失,

式中,第一项是训练误差;第二项是测试误差;λ称为调整参数(Tuning Parameter)或惩罚参数(Penalty Parameter),用以平衡训练误差和测试误差之间的关系,λ越大,表示越重视测试误差,一般λ=1,例如在做交叉验证时。

我们希望学习到的模型对应的损失越小越好,因此可基于最小化损失思想选择模型

除了总损失,还可以用结构风险平衡拟合能力和泛化能力。模型f的结构风险函数(Structural Risk Function)定义为

式中,第一项是经验风险;J(f)表示模型结构的复杂度,用以度量模型对未知数据的泛化能力,也称为正则化项;类似于式(1.4),惩罚参数λ用以平衡经验风险与模型复杂度之间的关系。我们希望学习到的模型结构风险越小越好,因此可基于损失最小化思想选择模型

这称为正则化方法。