美文网首页
Machine Learning (2)

Machine Learning (2)

作者: DejavuMoments | 来源:发表于2019-05-17 21:39 被阅读0次

    理解偏差和方差

    • 学习误差为什么是偏差和方差而产生的,并且推导数学公式
    • 过拟合,欠拟合,分别对应 bias 和 variance 什么情况
      学习鞍点,复习上次任务学习的全局最优和局部最优
      解决办法有哪些
      梯度下降
      学习 Mini-Batch 与 SGD
      学习 Batch 与 Mini-Batch,SGD梯度下降的区别
      如何根据样本大小选择哪个梯度下降(批量梯度下降,Mini-Batch)
      写出 SGD 和 Mini-Batch 的代码
      学习交叉验证
      学习归一化
      学习回归模型评价指标

    Error 的来源:Bias 和 Variance

    理解偏差与方差

    在有监督学习中,模型的泛化误差来源于两个方面:「偏差」 和 「方差」。

    偏差(bias):偏差衡量了模型的预测值与实际值之间的偏离关系。通常在深度学习中,我们每一次训练迭代出来的新模型,都会拿训练数据进行预测,偏差就反应在预测值与实际值匹配度上,比如通常在 keras 运行中看到的准确度为96%,则说明是低偏差;反之,如果准确度只有70%,则说明是高偏差。

    方差(variance):方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)。从数学角度看,可以理解为每个预测值与预测均值差的平方和的再求平均数。通常在深度学习训练中,初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。

    y = \frac{fx} + b

    这是一张常见的靶心图。可以想象红色靶心表示为实际值,蓝色点集为预测值。在模型不断地训练迭代过程中,我们能碰到四种情况:

    bias 大? variance 大?

    欠拟合 bias 大

    过拟合 variance大

    Gradient Descend

    交叉验证 Cross Validation

    N-Fold Cross Validation

    Normalization 归一化

    回归模型评价指标

    1.均方误差:MSE(Mean Squared Error)

    MSE = \frac{1}{m} \sum_{i=1}^{m}(y_i - \hat{y})^2

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

    RMSE = \sqrt{\frac{1}{m} \sum_{i=1}^{m}(y_i - \hat{y})^2} = \sqrt{MSE}

    3.平均绝对误差:MAE(Mean Absolute Error)

    MAE = \frac{1}{m} \sum_{i=1}^m{|y_i - \hat{y_i}|}

    1. R^2(R-Square)

    R^2 = 1 - \frac{\sum_{i}{(\hat{y_i} - y_i)^2}}{\sum{(\bar{y} - y_i)^2}}
    其中,分子部分表示真实值与预测值的平方差之和,类似于均方差 MSE;分母部分表示真实值与均值的平方差之和,类似于方差 Var。

    根据 R-Squared 的取值,来判断模型的好坏,其取值范围为[0,1]:

    如果结果是 0,说明模型拟合效果很差;

    如果结果是 1,说明模型无错误。

    一般来说,R-Squared 越大,表示模型拟合效果越好。R-Squared 反映的是大概有多准,因为,随着样本数量的增加,R-Square必然增加,无法真正定量说明准确程度,只能大概定量。

    1. Adjusted R-Square

    R^2_{adj} = 1 - \frac{(1 - R^2)(n-1)}{n - p - 1}

    其中,n 是样本数量,p 是特征数量。Adjusted R-Square 抵消样本数量对 R-Square 的影响,做到了真正的 0~1,越大越好

    #均方误差
    from sklearn.metrics import mean_squared_error 
    #平方绝对误差
    from sklearn.metrics import mean_absolute_error
    # R square
    from sklearn.metrics import r2_score
    # 调用
    MSE:mean_squared_error(y_test,y_predict)
    RMSE:np.sqrt(mean_squared_error(y_test,y_predict))
    MAE:mean_absolute_error(y_test,y_predict)
    R2:r2_score(y_test,y_predict)
    Adjusted_R2::1-((1-r2_score(y_test,y_predict))*(n-1))/(n-p-1)
    

    参考文献

    https://www.cnblogs.com/hutao722/p/9921788.html
    https://blog.csdn.net/u012735708/article/details/84337262

    相关文章

      网友评论

          本文标题:Machine Learning (2)

          本文链接:https://www.haomeiwen.com/subject/zilyaqtx.html