精华内容
下载资源
问答
  • 为了理解RMSE首先介绍一些统计学的概念,然后介绍SLAM领域里面的计算精度ATE和RPE的用法。中位数一组数据按大小顺序排列,位于最中间的一个数据 (当有偶数个数据时,为最中间两个数据的平均数) 叫做这组数据的中位数...

    为了理解RMSE首先介绍一些统计学的概念,
    然后介绍SLAM领域里面的计算精度ATE和RPE的用法。

    中位数

    一组数据按大小顺序排列,位于最中间的一个数据 (当有偶数个数据时,为最中间两个数据的平均数) 叫做这组数据的中位数。

    用中位数作为一组数据的代表,可靠性不高,但受极端数据影响的可能性小一些,有利于表达这组数据的 “集中趋势”。

    众数

    几组数据中出现次数最多的那个数据,叫做这批数据的众数。

    用众数作为一组数据的代表,可靠性较差,但众数不受极端数据的影响,并且求法简便,当一组数据中个别数据变动较大时,适宜选择众数来表示这组数据的 “集中趋势”。

    平均数

    算数平均数是一组数据的和除以这组数据的个数所得的商、反映一组数的总体情况比中位数、众数更为可靠、稳定。

    582e9679626602785af276de9ef25817.png

    方差(variance)

    方差是各数据偏离平均值差值的平方和的平均数。
    方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。

    76c90540563256582b32d88c3146a2ea.png

    标准差\均方差(Standard Deviation)

    标准差(也称均方差)的平方就是方差。
    标准差能反映一个数据集的离散程度 (或理解为数据集的波动大小)。
    方差与我们要处理的数据的量纲是不一致的(单位不一致),虽然能很好的描述数据与均值的偏离程度,但是处理结果是不符合我们的直观思维的。

    9cec54584f931d32489d154f105f5135.png

    均方误差 MSE (mean squared error)

    总的来说,方差是数据序列与均值的关系,而均方误差是数据序列与真实值之间的关系,所以我们只需注意区分 真实值和均值 之间的关系就行了。均方误差(MSE)是各数据偏离真实值 差值的平方和 的平均数方差是平均值,均方误差是真实值。

    b432ca8e03ea3d7dce8104b1ef048c59.png

    均方根误差 RMSE(Root Mean Squard Error)

    均方根误差是均方误差的算术平方根亦称标准误差,
    均方误差是各数据偏离真实值差值的平方和的平均数,也就是误差平方和的平均数,均方根误差才和标准差形式上接近。

    e1db47618b02987212a4d87867c156f7.png

    举个例子:我们要测量房间里的温度,很遗憾我们的温度计精度不高,

    所以就需要测量5次,得到一组数据[x1,x2,x3,x4,x5],

    假设温度的真实值是x,数据与真实值的误差e=x-xi 。那么均方误差和均方根误差就可以求出来。总的来说,均方差(标准差)是数据序列与均值的关系,而均方根误差是数据序列与真实值之间的关系。因此,标准差是用来衡量一组数自身的离散程度,而均方根误差是用来衡量观测值同真值之间的偏差,它们的研究对象和研究目的不同,但是计算过程类似。

    协方差(Covariance)

    方差/ 标准差描述的是一维数据集合的离散程度, 但世界上现象普遍是多维数据描述的,那么很自然就会想到现象和数据的相关程度,以及各维度间相关程度。
    比如,一个产品卖的好不好有很多因素构成,比如产品质量,价格等。那么价格质量之间是否
    相关性呢?这个问题就可以用协方差来解决。

    b93b664975474ba2b9ad45ca4fb6414a.png

    向量的范数

    可以从函数、几何与矩阵的角度去理解范数。


    我们都知道,函数与几何图形往往是有对应关系的,这个很好想象,特别是在三维以下的空间内,函数是几何图像的数学概括,而几何图像是函数的高度形象化,比如一个函数对应几何空间上若干点组成的图形。


    但当函数与几何超出三维空间时,就难以获得较好的想象,于是就有了映射的概念,映射表达的就是一个集合通过某种关系转为另外一个集合。通常数学书是先说映射,然后再讨论函数,这是因为函数是映射的一个特例。


    为了更好的在数学上表达这种映射关系,(这里特指线性关系)于是就引进了矩阵。这里的矩阵就是表征上述空间映射的线性关系。而通过向量来表示上述映射中所说的这个集合,而我们通常所说的基,就是这个集合的最一般关系。

    于是,我们可以这样理解,一个集合(向量),通过一种映射关系(矩阵),得到另外一个集合(另外一个向量)。


    那么向量的范数表示这个原有集合的大小。
    矩阵的范数表示这个变化过程的大小的一个度量。


    简单说:

    0范数表示向量中非零元素的个数(即为其稀疏度)。

    1范数表示为,绝对值之和。而2范数则指模。

    经过前面的铺垫下面才是真正的大boos

    ATE:absolute trajectory error 绝对轨迹误差

    绝对轨迹误差直接计算相机位姿的真实值与SLAM系统的估计值之间的差,可以非常直观地反应算法精度和轨迹全局一致性。


    需要注意的是,估计位姿和groundtruth通常不在同一坐标系中,因此程序首先根据位姿的时间戳将真实值和估计值进行对齐, 然后计算每对位姿之间的差值, 并最终以图表的形式输出, 该标准非常适合于评估视觉 SLAM 系统的性能。


    对于双目SLAM和RGB-D SLAM, 尺度统一因此我们需要通过最小二乘法计算一个从估计位姿到真实位姿的转换矩阵SE3;
    对于单目相机,具有尺度不确定性,我们需要计算一个从估计位姿到真实位姿的相似转换矩阵sim3 。

    ATE-all RMSE

    ATE-all实际上是每个位姿李代数的均方根误差RMSE(Root Mean Squard Error)。这种误差可以刻画两条轨迹的旋转和平移误差。

    c9598a1d8e02cd7989c6daa22e07e5f1.png

    ATE-trans RMSE

    ATE-trans仅考虑平移误差的情况,trans表示取括号内部标量的平移部分,因为从整条轨迹上看,旋转出现误差后,随后的平移上会出现误差,所以这两种指标在实际中都适用。

    14c1c99cdf0cc808cdcf9893a5269f9f.png

    RPE:relative pose error 相对位姿误差

    相对位姿误差主要描述的是相隔固定时间差两帧位姿差的精度(相比真实位姿),相当于直接测量里程计的误差。

    当然也有人不用RMSE,直接使用平均值、甚至中位数来描述相对误差情况。

    需要注意的是,RPE包含两部分误差,分别是旋转误差和平移误差,通常使用平移误差进行评价已经足够,但是如果需要,旋转角的误差也可以使用相同的方法进行统计。

    RPE-all RMSE

    ac1c205e6fd39012761a60ef1a805ee1.png

    RPE-trans RMSE

    40429f2403280a06acc4d13e24fa76ee.png

    源码解读

    #include #include #include #include #include using namespace Sophus;using namespace std;// 更高精度的轨迹 作为你真实轨迹string groundtruth_file = "/home/projects/sophus/trajectoryError/groundtruth.txt";// 算法计算出来的轨迹string estimated_file = "/home/projects/sophus/trajectoryError/estimated.txt";// Twc 的平移部分构成了机器人的轨迹// aligned_allocator管理C++中的各种数据类型的内存方法是一样的// 在C++11标准中,一般情况下定义容器的元素都是C++中的类型,// 在Eigen管理内存和C++11中的方法不一样,需要单独强调元素的内存分配和管理typedef vector<:se3d eigen::aligned_allocator>> TrajectoryType;TrajectoryType ReadTrajectory(const string &path);void DrawTrajectory(const TrajectoryType &gt, const TrajectoryType &esti);int main(int argc, char **argv) {  TrajectoryType groundtruth = ReadTrajectory(groundtruth_file);  TrajectoryType estimated = ReadTrajectory(estimated_file);  assert(!groundtruth.empty() && !estimated.empty());  assert(groundtruth.size() == estimated.size());  // compute rmse 位姿的均方根误差  // ATE   double rmse = 0;  for (size_t i = 0; i < estimated.size(); i++) {    Sophus::SE3d p1 = estimated[i], p2 = groundtruth[i];    // 李群SE3的对数映射求李代数se3    // 对应视觉SLAM十四讲第二版p89 公式4.44    // .norm();代表二范数的计算过程    double error = (p2.inverse() * p1).log().norm();    rmse += error * error;  }  rmse = rmse / double(estimated.size());  rmse = sqrt(rmse);  cout << "RMSE = " << rmse << endl;  DrawTrajectory(groundtruth, estimated);  return 0;}TrajectoryType ReadTrajectory(const string &path) {  ifstream fin(path);  TrajectoryType trajectory;  if (!fin) {    cerr << "trajectory " << path << " not found." << endl;    return trajectory;  }  while (!fin.eof()) {    double time, tx, ty, tz, qx, qy, qz, qw;    // tx  ty  tz 为Twc的平移部分    // qx  qy  qz  qw 是四元数表示的 Twc的旋转部分 qw 是四元数的实部    fin >> time >> tx >> ty >> tz >> qx >> qy >> qz >> qw;      // 四元数和平移向量构造李群SE3变换矩阵    Sophus::SE3d p1(Eigen::Quaterniond(qw, qx, qy, qz), Eigen::Vector3d(tx, ty, tz));    trajectory.push_back(p1);  }  return trajectory;}void DrawTrajectory(const TrajectoryType &gt, const TrajectoryType &esti) {  // create pangolin window and plot the trajectory  pangolin::CreateWindowAndBind("Trajectory Viewer", 1024, 768);  glEnable(GL_DEPTH_TEST);  glEnable(GL_BLEND);  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);  pangolin::OpenGlRenderState s_cam(      pangolin::ProjectionMatrix(1024, 768, 500, 500, 512, 389, 0.1, 1000),      pangolin::ModelViewLookAt(0, -0.1, -1.8, 0, 0, 0, 0.0, -1.0, 0.0)  );  pangolin::View &d_cam = pangolin::CreateDisplay()      .SetBounds(0.0, 1.0, pangolin::Attach::Pix(175), 1.0, -1024.0f / 768.0f)      .SetHandler(new pangolin::Handler3D(s_cam));  while (pangolin::ShouldQuit() == false) {    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    d_cam.Activate(s_cam);    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);    glLineWidth(2);    for (size_t i = 0; i < gt.size() - 1; i++) {      glColor3f(0.0f, 0.0f, 1.0f);  // blue for ground truth      glBegin(GL_LINES);      // 轨迹就是平移向量      auto p1 = gt[i], p2 = gt[i + 1];      glVertex3d(p1.translation()[0], p1.translation()[1], p1.translation()[2]);      glVertex3d(p2.translation()[0], p2.translation()[1], p2.translation()[2]);      glEnd();    }    for (size_t i = 0; i < esti.size() - 1; i++) {      glColor3f(1.0f, 0.0f, 0.0f);  // red for estimated      glBegin(GL_LINES);      auto p1 = esti[i], p2 = esti[i + 1];      glVertex3d(p1.translation()[0], p1.translation()[1], p1.translation()[2]);      glVertex3d(p2.translation()[0], p2.translation()[1], p2.translation()[2]);      glEnd();    }    pangolin::FinishFrame();    usleep(5000);   // sleep 5 ms  }}

    交流答疑微信群

    f7f253871ba42c8b45b850156ea4bee6.png

    展开全文
  • MAE平均绝对误差和MSE均方误差

    千次阅读 2019-12-26 17:01:39
    MAE:Mean absolute error是绝对误差的平均值,能更好的反映预测值误差的实际情况 其中,f_i表示预测值,g_i表示真实值 缺点:若本身真实值就比较大,比如真实值1万,预测值9000,但mae=1000就会造成MAE是比较大...

    MAE:Mean absolute error是绝对误差的平均值,能更好的反映预测值误差的实际情况

    MAE=\frac{1}{N} \sum_{N}^{i=1}|f_i-g_i|

    其中,f_i表示预测值,g_i表示真实值

    缺点:若本身真实值就比较大,比如真实值1万,预测值9000,但mae=1000就会造成MAE是比较大的,

    如真实值10,预测值9,但mae=1,所以不能单独从MAE的值来说明网络预测能力的好坏。

    from sklearn.metrics import mean_squared_error,mean_absolute_error
    import numpy as np
    pred=np.array([10,11,12])
    gt=np.array([9,12,14])
    error=abs(pred-gt)
    print('error1',error)#[1 1 2]
    error=np.sum(error)
    print('error2',error)#4
    error=error/len(pred)
    print('error3',error)#1.3333333333333333
    mae = mean_absolute_error(pred,gt) #计算预测值与真实值之间的平均绝对误差,28.75667
    print(mae)#1.3333333333333333

    均方误差mean-square error,MSE

    反映预测值与真实值之间差异程度的一种度量,换句话说,预测值与真实值差的平方的期望值。MSE可以评价数据的变化程度,MSE的值越小,说明预测模型的预测能力越好。

    MSE=\frac{1}{N} \sum_{N}^{i=1}(f_i-g_i)^2

    from sklearn.metrics import mean_squared_error,mean_absolute_error
    import numpy as np
    pred=np.array([10,11,12])
    gt=np.array([9,12,14])
    error1=abs(pred-gt)
    error2=error1*error1 #[1 1 4]
    error3=np.sum(error2)
    print('error3',error3)#6
    mse2=error3/len(pred)
    print('mse2',mse2)#2.0
    mse=mean_squared_error(pred,gt)
    print('mse1',mse)#2.0

     

    展开全文
  • 残差、方差、偏差、MSE均方误差、Bagging、Boosting、过拟合欠拟合和交叉验证 文章目录 一、残差、方差、偏差1.1 残差统计概念1.2 方差、标准差1.3 偏差1.4 残差、方差、偏差总结1.5 MSE、RMSE、MAE1.6 代码实现 ...
    
    
    数据和模型 https://blog.csdn.net/u010986753/article/details/98526886

    一、残差、方差、偏差

    1.1 残差统计概念

      残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。“残差”蕴含了有关模型基本假设的重要信息。如果回归模型正确的话, 我们可以将残差看作误差的观测值。

      在回归分析中,测定值与按回归方程预测的值之差,以δ表示。残差δ遵从正态分布N(0,σ2)。(δ-残差的均值)/残差的标准差,称为标准化残差,以δ表示。δ遵从标准正态分布N(0,1)。实验点的标准化残差落在(-2,2)区间以外的概率≤0.05。若某一实验点的标准化残差落在(-2,2)区间以外,可在95%置信度将其判为异常实验点,不参与回归直线拟合。

      显然,有多少对数据,就有多少个残差。残差分析就是通过残差所提供的信息,分析出数据的可靠性、周期性或其它干扰。残差计算即是残差的平方和除以(残差个数-1)的平方根。

    1.2 方差、标准差

      Variance反映的是模型每一次输出结果与模型输出期望(即均值) 之间的误差,即模型的稳定性。

      概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。

      描述模型对于给定值的输出稳定性。 度量同样大小的训练集的变动所导致的学习性能的变化,刻画数据扰动所产生的影响

      1)方差:方差是在概率论和统计方差衡量随机变量或一组数据的离散程度的度量方式,方差越大,离散度越大。求解方式为,各随机变量与平均值差值的平方和的平均数(先求差,再平方,再平均)

      2)标准差:标准差就是方差的算术平方根,它反映组内个体间的离散程度。因此它的过程是与平均值之间进行差值计算。

    • 1、均方差就是标准差,标准差就是均方差
    • 2、均方误差不同于均方误差
    • 3、均方误差是各数据偏离真实值的距离平方和的平均数

    1.3 偏差

      首先error=bias+variance,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精确度。

      偏差又称为表观误差,是指个别测定值与测定的平均值之差,它可以用来衡量测定结果的精密度高低。在统计学中常用来判定测量值是否为坏值。精密度是指一样品多次平行测定结果之间的符合程度,用偏差表示。偏差越小,说明测定结果精密度越高。

      描述模型输出结果的期望与样本真实结果的偏离程度。

    • δ是均方根误差亦称标准误差

    1.4 残差、方差、偏差总结

    • 简单模型:偏差大,方差小(简单模型受样本值的影响较小,稳定性高),容易造成欠拟合
    • 复杂模型:偏差小,方差大,容易产生过拟合
    • 判断偏差大还是方差大:
      1)模型上的训练样本的真实值较少,则偏差大(欠拟合)
      2)在训练样本上样本拟合的较好,但在测试集上拟合较差,则方差大(过拟合Overfiting
      3)当偏差较大时,表示目标可能未在模型上(即未瞄准靶心),需要重新训练model(有可能未考虑其他因素对样本的影响,或者应让模型更复杂考虑更高次幂的情况)。增加网络层数,增加隐藏层神经元数量,增加算法迭代次数,或者用更好的优化算法。
      4)当方差较大时:增加更多的数据或正则化

    1.5 MSE、RMSE、MAE

      RMSE

    • Root Mean Square Error,均方根误差

    • 是观测值与真值偏差的平方和与观测次数m比值的平方根。

    • 是用来衡量观测值同真值之间的偏差
      MAE

    • Mean Absolute Error ,平均绝对误差

    • 是绝对误差的平均值

    • 能更好地反映预测值误差的实际情况.
      标准差

    • Standard Deviation ,标准差

    • 是方差的算数平方根

    • 是用来衡量一组数自身的离散程度

      总的来说,均方差是数据序列与均值的关系,而均方误差是数据序列与真实值之间的关系,所以我们只需要搞清楚真实值和均值之间的关系就行了。

    • RMSE与标准差对比:标准差是用来衡量一组数自身的离散程度,而均方根误差是用来衡量观测值同真值之间的偏差,它们的研究对象和研究目的不同,但是计算过程类似。

    • RMSE与MAE对比:RMSE相当于L2范数,MAE相当于L1范数。次数越高,计算结果就越与较大的值有关,而忽略较小的值,所以这就是为什么RMSE针对异常值更敏感的原因(即有一个预测值与真实值相差很大,那么RMSE就会很大)。

      MSE均方误差 mean-square error作为机器学习中常常用于损失函数的方法,均方误差频繁的出现在机器学习的各种算法中,但是由于是舶来品,又和其他的几个概念特别像,所以常常在跟他人描述的时候说成其他方法的名字。通过计算每个预测值和实际值之间的差值的平方和再求平均,机器学习中它经常被用于表示预测值和实际值相差的程度。
      均方误差的数学表达为

    y_preditc=reg.predict(x_test) #reg是训练好的模型 
    mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟数学公式一样的作者:skullfang
    

      4)RMSE:公式

    #RMSE实现
    rmse_test=mse_test ** 0.5
    

    1.6 代码实现

    • MAE
    mae_test=np.sum(np.absolute(y_preditc-y_test))/len(y_test)
    
    • R-square(确定系数)
        R Squared也就R方,其中分子是Residual Sum of Squares 分母是 Total Sum of Squares
      那就看公式吧
    mean_squared_error(y_test,y_preditc)/ np.var(y_test)
    
    • scikit-learn中的各种衡量指标
    from sklearn.metrics import mean_squared_error #均方误差
    from sklearn.metrics import mean_absolute_error #平方绝对误差
    from sklearn.metrics import r2_score#R square
    #调用
    mean_squared_error(y_test,y_predict)
    mean_absolute_error(y_test,y_predict)
    r2_score(y_test,y_predict)
    

    二、Bagging和Boosting的区别

    决策树Decision Tree 和随机森林RandomForest基本概念(一)https://blog.csdn.net/u010986753/article/details/100144214

    2.1 基本介绍

      Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。

    2.2 Bagging:

      Bagging即套袋法,其算法过程如下

      从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)

      每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)

      对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

    2.3 Boosting:

      AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)

      梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)

      梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。

    2.4 Bagging,Boosting二者之间的区别

    1)样本选择上:

      Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

      Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

    2)样例权重:

      Bagging:使用均匀取样,每个样例的权重相等

      Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

    3)预测函数:

      Bagging:所有预测函数的权重相等。

      Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

    4)并行计算:

      Bagging:各个预测函数可以并行生成

      Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

    5)bagging减少variance,而boosting是减少bias
      Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。另一方面,若各子模型独立,则有,此时可以显著降低variance。若各子模型完全相同,则此时不会降低variance。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。

      boosting是在sequential地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。

    三、过拟合欠拟合

    3.1 Underfit (欠拟合) high bias

      模型拟合不够,在训练集(training set)上表现效果差,没有充分的利用数据,预测的准确度低。

    3.1 Overfit(过拟合)high viarance

      模型过度拟合,在训练集(training set)上表现好,但是在测试集上效果差,也就是说在已知的数据集合中非常好,但是在添加一些新的数据进来训练效果就会差很多,造成这样的原因是考虑影响因素太多,超出自变量的维度过于多了。

    3.1 过拟合欠拟合总结

      如何防止过拟合(过拟合主要使有两个原因造成的:数据太少+模型太复杂。):

      ❶ 获取更多数据,这是解决过拟合最有效的方法,只要给足够多的数据,让模型[训练到]尽可能多的[例外情况],它就会不断修正自己,从而得到更好的结果。
      ❷ 减少特征变量,减少网络的层数、神经元的个数等均可以限制网络的拟合能力;
      ❸ 限制权值(正则化)
      ❹ 贝叶斯方法
      ❺ 结合多种模型

    四、交叉验证介绍

    数据集划分train_test_split\交叉验证Cross-validationhttps://blog.csdn.net/u010986753/article/details/98069124

      交叉验证用在数据不是很充足的时候。比如在我日常项目里面,对于普通适中问题,如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。

    • 训练集来训练模型
    • 验证集来评估模型预测的好坏和选择模型及其对应的参数
    • 测试集,把最终得到的模型再用于测试集,最终决定使用哪个模型以及对应参数。
    '''
    【干货来了|小麦苗IT资料分享】
    ★小麦苗DB职场干货:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w
    ★小麦苗数据库健康检查:https://share.weiyun.com/5lb2U2M
    ★小麦苗微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
    ★各种操作系统下的数据库安装文件(Linux、Windows、AIX等):链接:https://pan.baidu.com/s/19yJdUQhGz2hTgozb9ATdAw  提取码:4xpv
    ★小麦苗分享的资料:https://share.weiyun.com/57HUxNi
    ★小麦苗课堂资料:https://share.weiyun.com/5fAdN5m
    ★小麦苗课堂试听资料:https://share.weiyun.com/5HnQEuL
    ★小麦苗出版的相关书籍:https://share.weiyun.com/5sQBQpY
    ★小麦苗博客文章:https://share.weiyun.com/5ufi4Dx
    ★数据库系列(Oracle、MySQL、NoSQL):https://share.weiyun.com/5n1u8gv
    ★公开课录像文件:https://share.weiyun.com/5yd7ukG
    ★其它常用软件分享:https://share.weiyun.com/53BlaHX
    ★其它IT资料(OS、网络、存储等):https://share.weiyun.com/5Mn6ESi
    ★Python资料:https://share.weiyun.com/5iuQ2Fn
    ★已安装配置好的虚拟机:https://share.weiyun.com/5E8pxvT
    ★小麦苗腾讯课堂:https://lhr.ke.qq.com/
    ★小麦苗博客:http://blog.itpub.net/26736162/
    '''
    
    '''
    如需转发,请注明出处:小婷儿的博客python    https://blog.csdn.net/u010986753
    
      CSDN https://blog.csdn.net/u010986753
    
      博客园 https://www.cnblogs.com/xxtalhr/
    
    有问题请在博客下留言或加作者:
      微信:tinghai87605025 联系我加微信群
      QQ :87605025
      QQ交流群:py_data 483766429
      公众号:DB宝
    
    证书说明
      OCP证书说明连接 https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA
    
      OCM证书说明连接 https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA
    '''
    
    

    有趣的事,Python永远不会缺席

    欢迎关注小婷儿的博客

      文章内容来源于小婷儿的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解!!!

       小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。重要的事多说几遍。。。。。。

    展开全文
  • MSE均方误差(L2 loss) 1.代码展示MAE和MSE图片特性 import tensorflow as tf import matplotlib.pyplot as plt sess = tf.Session() x_val = tf.linspace(-1.,-1.,500) target = tf.constant(0....

    MSE均方误差(L2 loss)

    1.代码展示MAE和MSE图片特性
    import tensorflow as tf
    import matplotlib.pyplot as plt
    sess = tf.Session()
    x_val = tf.linspace(-1.,-1.,500)
    target = tf.constant(0.)
    
    #计算L2_loss
    l2_y_val = tf.square(target - x_val)
    l2_y_out = sess.run(l2_y_val)#用这个函数打开计算图
    
    #计算L1_loss
    l1_y_val = tf.abs(target - x_val)
    l1_y_out = sess.run(l1_y_val)#用这个函数打开计算图
    
    #打开计算图输出x_val,用来画图
    #用画图来体现损失函数的特点
    x_array = sess.run(x_val)
    plt.plot(x_array, l1_y_out, 'b--', lable = 'L1_loss')
    plt.plot(x_array, l2_y_out, 'r--', lable = 'L2_loss')
    

    这里写图片描述

    2.MSE公式及导数推导

    损失函数:

    以单个样本举例:
    [外链图片转存失败(img-PAQ9mnqd-1562394972088)(http://i.imgur.com/D4n2Dsz.jpg)] ,a=σ(z), where z=wx+b

    利用SGD算法优化损失函数,通过梯度下降法改变参数从而最小化损失函数:
    对两个参数权重和偏置进行求偏导(这个过程相对较容易):
    这里写图片描述

    参数更新:
    这边就说一种简单的更新策略(随机梯度下降):
    [外链图片转存失败(img-pTU7Q58r-1562394972090)(http://image107.360doc.com/DownloadImg/2017/06/1400/101675026_3)]

    3.分析L2 Loss的特点

    根据上面的损失函数对权重和偏置求导的公式我们发现:

    这里写图片描述

    其中,z表示神经元的输入,σ表示激活函数。从以上公式可以看出,w和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调整得越快,训练收敛得就越快。但是L2 Loss的这个特点存在的缺陷在于,对于我们常用的sigmoid激活函数来说,并不是很符合我们的实际需求。
    先介绍下sigmoid激活函数的特性:
    sigmoid函数就是损失函数的输入:a=σ(z) 中的σ()的一种。这是一个激活函数,该函数的公式,导数以及导数的分布图如下图所示:



    我们可以从sigmoid激活函数的导数特性图中发现,当激活值很大的时候,sigmoid的梯度(就是曲线的斜率)会比较小,权重更新的步幅会比较小,这时候网络正处在误差较大需要快速调整的阶段,而上述特性会导致网络收敛的会比较慢;而当激活值很小的时候,sigmoid的梯度会比较大,权重更新的步幅也会比较大,这时候网络的预测值正好在真实值的边缘,太大的步幅也会导致网络的震荡。这我们的期望不符,即:不能像人一样,错误越大,改正的幅度越大,从而学习得越快。而错误越小,改正的幅度小一点,从而稳定的越快。而交叉熵损失函数正好可以解决这个问题。

    展开全文
  • MSE(Mean Square Error)均方误差 MSE是真实值与预测值的差值的平方然后求和平均。 通过平方的形式便于求导,所以常被用作线性回归的损失函数。 MAE(Mean Absolute Error)平均绝对...
  • 自编R计算MSE均方误差

    千次阅读 2020-12-07 11:06:07
    基本原理 1.生成关于x1~N(5,3),x2~N(100,10),error~N(0,1) 2.自己定一个实际对线性...5.计算他的均方误差计算公式 代码 k = 100000 # 定义实验次数 beta_x1 = c() # 定义空列 beta_x2 = c() for (i in 1:k) {
  • MSE均方误差)函数和RMSE函数

    万次阅读 多人点赞 2019-01-17 16:26:40
  • Matlab 计算均方误差MSE的三种方法

    万次阅读 2020-11-02 23:26:34
    Matlab 计算均方误差MSE的三种方法 数据说明: ytest 测试集y,真实的y值,是一维数组; ytest_fit 基于测试集 x 预测的y值,是一维数组; test_error 是预测误差。 第一种方法 直接使用 matlab 中的mse函数,亲测...
  • 均方误差是指参数的估计值与参数的真实值之差的平方的期望. MSE可以评价数据的变化程度,MSE越小,说明模型的拟合实验数据能力强. (72)MSE=1N∑t=1N(predictedt−label)2" role="presentation" ...
  • 均方误差(MSE)

    万次阅读 多人点赞 2019-08-18 13:51:30
    均方误差单独扽概念是很简单的,这里只做介绍,更深一步的内容会在后面列出来。 SSE(和方差、误差平方和):The sum of ...数理统计中均方误差是指参数估计值与参数真值之差平方的期望值,记为MSEMSE是衡量“...
  • 计算均方误差MSE信噪比SNR峰值信噪比PSNR绝对平均误差的matlab函数 计算均方误差MSE信噪比SNR峰值信噪比PSNR绝对平均误差的matlab函数
  • 参数估计中均方误差是指参数估计值与参数真值之差平方的期望值,记为MSE MSE均方误差)在深度学习中主要用来求损失函数,既真实值和预测值之间的误差。 公式中的y是真实值,out是你计算出来的值,让它们求和累加...
  • 除了默认的mse均方误差)这个性能函数外,还有mae(平均绝对误差)、sae(绝对值和误差)、sse(平方和误差)、crossentropy(交叉熵)。  要调用其他性能函数,只需要加一行代码:net.performFcn = 'mae';。net...
  • 当损耗是均方误差(MSE)时,什么函数定义了Keras的准确度?当损失函数是均方误差时,如何定义准确度?是绝对百分比误差吗?我使用的模型具有输出激活线性和编译loss= mean_squared_errormodel.add(Dense(1))model.add...
  • 均方误差(mean-square error, MSE

    万次阅读 2019-03-05 19:33:17
    在统计学里,该参数计算的是拟合数据与原始数据对应点的误差的平方和,计算公式为: 其中是真实数据,是拟合数据,&gt;0,从这里可以看出SSE越接近于0,说明模型选择和拟合更好。 MSE(均方方差) 该统计参数是...
  • mse函数(均方误差函数)

    万次阅读 2015-07-26 21:21:37
    mse(a) ----------------------------函数...MSE是(神经)网络的均方误差,叫"Mean Square Error"。比如有n对输入输出数据,每对为[Pi,Ti],i=1,2,...,n.网络通过训练后有网络输出,记为Yi。那MSE=(求和(Ti-Yi)^2(i=1
  • 均方误差

    万次阅读 2018-09-24 17:27:55
    均方误差 一、均方误差的含义及公式 均方误差是衡量“平均误差”的一种较方便的方法,可以评价数据的变化程度。...均方误差公式MSE =。 二、均方误差的推导 均方误差可以通过平均误差来推导: 平...
  • MSE: Mean Squared Error 均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。MSE=1N∑t=1N(observedt−predictedt)2RMSE ...
  • 均方误差MSE计算公式: 代码实现: mse = sqrt(sum((YReal - YPred).^2))./2; 平均绝对误差(MAE) 计算公式: 代码实现: mae = mean(abs(YReal - YPred)); 平均绝对百分比误差(MAPE) 计算公式: 代码...
  • 在各种机器学习比赛中都会看到MSE和MAE这两个指标,算出...1. MSE(Mean Squared Error) 均方误差 MSE=1n∑i=1n(yi−yi′)2 MSE=\frac{1}{n} \sum_{i=1}^{n}\left(y_{i}-y_{i}^{\prime}\right)^{2} MSE=n1​i=1∑...
  • 经典损失函数——均方误差(MSE)

    万次阅读 2018-03-18 11:00:06
    mse=tf.reduce_mean(tf.square(y_-y))但在实际问题中往往均方误差并不能很好的表达问题,比如预测销量,卖衣服,货物成本一件100元,商品利润一件20。那此时多预测一个亏100,少预测一个少挣20。所以这里面有一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,349
精华内容 1,739
关键字:

mse均方误差计算公式