zoukankan      html  css  js  c++  java
  • 机器学习 之损失函数

    0、损失函数简介

    • 损失函数是用来估量你模型的预测值f(x)与真实值y之间的不一致程度,它是一个非负实值函数,通常使用L(y, f(x))来表示。损失函数越小,模型的鲁棒性就越好。

    • 损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型函数包括了经验风险项和正则项,表达公式为:

    [ heta ^{*} = argmin_{ heta} frac{1}{N} sum_{i=1}^{N} L(y_{i}, f(x_{i}; heta)) + lambda Phi ( heta) ]

    前面的均值函数表示的是经验风险函数,L表示损失函数,后面的(Phi)是正则化项或者惩罚项。可以是L1,也可以是L2。整个表达式就是使目标函数最小时的( heta)值。

    • 令数据集为{X,y},其中(X = {x_{1}, x_{2}, ... , x_{N}})(x_{i} = {x_{i}^{1},x_{i}^{2},,..., x_{i}^{M}}),N表示有N个样本,M表示每个样本有M个特征,y表示真实分类标签或者真实值。

    0.1 对数损失函数

    • 对数损失函数的表达式为:

      [L(y, P(y|X)) = -log P(y|X) ]

    损失函数L(y, P(y|X))表达的是样本X在分类y的情况下,使概率P(y|X)达到最大值。概率P越大,损失函数L越小。因此目标是最小化对数损失函数,从而使概率最大。

    0.2 平方损失函数

    • 平方损失函数的表达式为:

      [L(y, f(x)) = (y - f(x))^2 ]

    • 当样本个数为n时,此时的损失函数变为:

      [L(y, f(x)) = sum_{i=1}^{n} (y_{i} - f(x_{i}))^2 ]

    y-f(x)表示的是残差,整个式子表示的是残差的平方和。目标是最小化这个目标函数值,即最小化残差的平方和。实际应用中,会使用均方差MSE作为一项衡量指标,公式如下:

    $$ MSE = frac{1}{N} sum_{i=1}^{N} (	ilde{Y}_{i} - Y_{i})^2 $$
    

    MSE即Mean Squared Error,可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。均方根误差(RMSE = sqrt{MSE})

    0.3 指数损失函数??含义

    • 指数损失函数的表达式为:

      [L(y, f(x)) = exp[-y f(x)] ]

    • 在给定n个样本的情况下,Adaboost的指数损失函数为:

      [L(y, f(x)) = frac{1}{N} sum_{i=1}^{n} exp[-y_{i} f(x_{i})] ]

    如果是分类,yf(x)表示的是样本被正确分类,整个式子是被不正确分类的指数和,目标是最小化损失函数,即最小化被不正确分类的指数和。如果是回归,yf(x)表示的是真实值与预测值的乘积,整个式子是真实值与预测值乘积负方向的指数和,目标是最小损失函数,即最小化真实值与预测值乘积负方向的指数和。

    0.4 合页损失函数

    • 合页损失函数的表达式为:

      [L(y*(omega *x + b)) = [1 - y*(omega *x + b)]_{+} ]

    其中下表+表示取正值的函数,我们用括号z表示中括号中的部分:

    $$ [Z]_{+} = egin{cases} z, z>0\ 0,z<=0\ end{cases} $$
    

    即数据点如果被正确分类,则损失为y*(omega *x + b)>=1,即[1 - y*(omega *x + b)]<=0,则损失为0;如果没有被正确分类,损失为z。

    合页损失函数

    0.5 其他损失函数

    (1)0-1 损失函数

    • 0-1损失的表达式为:

      [L(y, f(X)) = egin{cases} 1, y eq f(X)\ 0, y=f(X) end{cases} ]

    • 在给定n个样本的情况下,损失函数变为:

      [L(y, f(x)) = sum_{i=1}^{n} L(y_{i}, f(x_{i})) ]

    损失函数表示的是预测值与真实值不等的数目。即预测值和真实值相等的越多,损失函数越小。目标是最小化目标损失函数,是真实值与预测值相等的情况更多。

    (2)绝对值损失函数

    • 绝对值损失函数的表达式为:

      [L(y, f(x)) = |y - f(X)| ]

    • 在给定n个样本的情况下,损失函数变为:

      [L(y, f(x)) = | y_{i} - f(x_{i}) | ]

    y - f(X)表示残差,整个式子表示的是残差的绝对值,即真实值与预测值的距离。目标是最小化目标损失函数,使预测值更加靠近真实值。

    1、KNN损失函数

    • KNN的损失函数是分类损失函数,即误分类率:

      [L = frac{1}{k} sumlimits_{x_{i} in N_{k}(x)} I(y_{i} e c_{j}) = 1 - frac{1}{k} sumlimits_{x_{i} in N_{k}(x)} I(y_{i} = c_{j}) ]

    其中I为指示函数,当(y_{i} = c_{i})时I为1,否则I为0。要使误分类率最小,即经验风险最小,就要使$sumlimits_{x_{i} in N_{k}(x)} I(y_{i} = c_{j}) $最大,所以多数表决规则等价于经验风险最小化。

    2、朴素贝叶斯

    • 朴素贝叶斯的损失函数(0-1损失后)为:

      [L(y, f(X)) = egin{cases} 1, y eq f(X)\ 0, y=f(X) end{cases} ]

    使期望风险函数最小,即让损失函数最小:
    $$R_{exp} (f) = E[L(Y, f(X))] = E_{X} sumlimits_{k=1}^{K} [L(c_{k}, f(X))] P(c_{k} | X)$$

    • 推导过程:

      [f(x) = argmin_{y in Upsilon} ]

    • 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。

    • 贝叶斯定理:P(A|B)=P(A)P(B|A) / P(B)

    • 特征条件独立假设:每一个类别特征中的数据或者与其他特征无关。

    3、决策树

    • 决策树的损失函数为:

      [C_{alpha}(T) = sum_{t=1}^{|T|} N_{t} H_{t}(T) + alpha |T| ]

    4、逻辑回归

    • 逻辑回归使用三对数损失函数:

      [J( heta) = - frac{1}{N} sum_{i=1}^{N} y^{(i)} log(h_{ heta} (x^{(i)})) + (1-y^{(i)}) log(1 - h_{ heta}(x^{(i)})) ]

    5、支持向量机

    • 支持向量机的损失函数为:

      [L(y, omega x + b) = sum_{i}^{N} [1 - y_{i} (omega * x_{i} + b)]_{+} + lambda ||omega||^2 ]

    6、Adaboost提升算法

    • Adaboost的损失函数为:

      [L(y, f(x)) = frac{1}{N} sum_{i=1}{n} exp[-y_{i} f(x_{i})] ]

    7、EM算法

    8、隐式马尔科夫模型

    9、条件随机场

    12、线性回归

    • 线性回归使用平方损失函数

      [L(y, f(X)) = sum_{i=1}^{n} (y - f(X))^2 ]

    10、XGBoost算法

    11、LightGBM算法三

    参考:https://www.jianshu.com/p/477a8c1cb05d

  • 相关阅读:
    2019年7月17日星期三(linux基础)
    2019年7月16日星期二(C语言)
    2019年7月15日星期一(C语言)
    java.util.ConcurrentModificationException 异常问题详解
    use h2database for unit testing
    db
    Things to learn everyday
    springcloud
    abstractMethodError
    java -jar & to backend run
  • 原文地址:https://www.cnblogs.com/hugechuanqi/p/11319780.html
Copyright © 2011-2022 走看看