机器学习系统设计.

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/algorithmPro/article/details/80462304

前言:本文课件均来自Andrew Ng老师的machine learning公开课课程。

一、评价模型

    评价模型的一种标准方法是把数据集随机分为训练集和测试集,训练集和测试集的样本比例是7:3,下面举例线性回归和逻辑回归的训练/测试步骤:

1.1  线性回归模型构建步骤

(1)最小化训练损失函数模型来得到参数theta,损失函数模型采用均方差表达式。

(2)用训练得到的模型来计算测试样本的测试误差。

(1)

1.2  逻辑回归模型构建步骤

    步骤与线性回归模型一样,不一样的地方在于计算误差的函数表达式,该课件视频介绍了两种评估测试误差的函数表达式。

个人觉得计算误差的表达式有误,应该是如下表达式:

二、模型选择和数据集分类

    构建一系列模型,通过最小化损失函数来求模型参数θ,根据求解的模型θ来计算测试集的损失函数。

        根据测试集的损失函数来选择最优参数θ,但是问题在于该测试集的数据已经那来选择最优参数θ,因此测试模型的泛化能力需要未用过的数据集来评价。数据集分为:训练集、验证集、测试集,各数据集所占的比例为:0.6,0.2,0.2。

训练集、验证集、测试集的损失函数如下:

    模型选择步骤:(1)通过训练集构建模型,损失函数最小化对应的模型θ(2)通过验证集来选择模型,选择验证集损失函数最小对应的模型,(3)通过测试集来评估模型。

三、偏差和方差

    在进行更深入的建模之前,首先需要知道模型的问题所在,是处于高偏差问题还是处于高方差问题。

    高偏差是模型比较简单造成的损失函数较大,即欠拟合;高方差是模型比较复杂,训练函数误差小,但泛化能力差,即过拟合;

高偏差与高方差如下图:

四、学习曲线

        学习曲线判断某一学习算法是否处于偏差、方差问题、或两者皆有。学习曲线是绘制出训练集误差大小、交叉验证集误差大小同训练集样本数关系的曲线。

绘制出一个二次模型的训练集和测试集的损失函数:

4.1 高偏差的学习曲线

        高偏差是模型比较简单造成的误差,特点是训练集和验证集的误差都比较大。如果处于高偏差模型,那么增加训练样本量并不能改善模型。

4.2  高方差的学习曲线

        高方差是模型过于复杂导致的,即训练集误差小,验证集误差大,训练集误差和验证集误差有一段很大的差距。如果增大训练样本数,则训练集误差和验证集误差会逐渐的接近,即训练集误差逐渐增大,验证集误差逐渐减小。

四、模型问题分析

若模型的测试误差很大,有以下方法你可以尝试,每种方法解决高方差或高偏差问题。

一般来说,使用正则化的大型神经网络模型比使用小型神经网络效果更好,缺点是计算量较大。

六、误差分析

推荐的方法:(1)设计一个简单的学习模型,运用该模型来测试验证数据集;(2)画出学习曲线来判断算法是否有高偏差和高方差的问题,再来决定是否增加更多的特征或更多的训练数据;(3)人工检查算法分析错误的样本数据集,发现错误样本数据集存在的规律;

        课件举例了邮件分类问题的误差分析步骤,主要思想是对误分类的邮件进行分析,找到错误分类样本的共性问题,提取出该特征进行分类。

6.1 偏斜类的误差分析

对正负样本数量差别较大的测试样本来作误差分析,测试误差并不能评估模型的好坏,一般用查准率(precision)和召回率(recall)来度量误差值。

查准率和召回率的计算公式:

如果有高的查准率和高的召回率,我们可以说这个算法表现很好。

6.2  权衡查准率和召回率

每个学习算法有不同的查准率和召回率,因此衡量学习算法的好坏需要综合两者来看,一般采用F-score来评估模型:

互相交流学习微信群:

                                                                           

公众号:

                                                           

期待你的加入,砥砺前行,不忘初心!

猜你喜欢

转载自blog.csdn.net/algorithmPro/article/details/80462304