【机器学习】线性回归和逻辑回归

回归模型可用于预测连续值,分类模型可用于预测离散值。
线性回归是一种回归模型,通过将特征之间进行线性组合,从而得到连续的输出。可用特征组合处理非线性规律。
逻辑回归是分类模型,可用于二分类也可用于多分类问题。是从线性回归中衍生出来的分类策略,通过将S型函数用于线性预测而得到分类任务中每个标签的概率。逻辑回归是一种极其高效的概率计算机制。

一、线性回归
线性回归用于预测连续值。
可用于处理线性问题,也可用于处理非线性问题。对于非线性问题,使用特征组合来解决。

y ′ = b + w 1 x 1 + w 2 x 2 + . . . . + w n x n y' = b + w_1x_1 + w_2x_2 + ....+w_nx_n y=b+w1x1+w2x2+....+wnxn
x i x_i xi 是输入的特征, w w w是权重, b b b是偏差
这里写图片描述

这里写图片描述

线性回归损失函数

均方误差 (MSE) 指的是每个样本的平均平方损失。要计算 MSE,请求出各个样本的所有平方损失之和,然后除以样本数量:
M S E = 1 N ∑ ( x , y ) ∈ D ( y − p r e d i c t i o n ( x ) ) 2 MSE = \frac{1}{N} \sum_{(x,y)\in D} (y - prediction(x))^2 MSE=N1(x,y)D(yprediction(x))2

二、逻辑回归

逻辑回归是一种高效的概率计算机制。
可用于二分类问题也可用于多分类问题,输出的结果为概率值。
逻辑回归通过S型函数将逻辑回归的输出固定在0~1之间。

(1)S型函数
y = 1 1 + e − z y = \frac{1}{1 + e^{-z}} y=1+ez1
z z z 表示逻辑回归模型线性层的输出,$z = b + w_1x_1 + w_2x_2 + …+w_nx_n $。
y ′ y^{'} y 是逻辑回归模型针对特定样本 x x x的输出。

S型函数图像如下:
这里写图片描述

(2)逻辑回归损失函数

逻辑回归的损失函数是对数损失函数,定义如下:
L o g L o s s = ∑ ( x , y ) ∈ D − y l o g ( y ′ ) − ( 1 − y ) l o g ( 1 − y ′ ) Log Loss = \sum_{(x,y)\in D} -ylog(y') - (1 - y)log(1 - y') LogLoss=(x,y)Dylog(y)(1y)log(1y)
y y y”是有标签样本中的标签。由于这是逻辑回归,因此“ y y y”的每个值必须是 0 或 1。
y ′ y^{'} y”是对于特征集“ x x x”的预测值(介于 0 和 1 之间)。

对数损失函数是似然函数的负对数(假设“ y y y”属于伯努利分布即两点分布)
使用最大似然估计求逻辑回归中的一系列参数(权重和偏差)

似然函数

似然函数是一种关于统计模型中参数的函数,在参数估计方法中具有重要作用,表示模型参数的似然性。
概率用于在已知一些参数的情况下,预测接下来的观测所得到的结果,而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。

似然函数也是一种条件概率函数,似然函数取得最大值表示相应的参数能够使得统计模型最为合理。

回归模型损失函数的选择

三、有关Logloss的推导:

1、S型函数的由来
推导过程中会用到贝叶斯分类的知识,有关内容请点击:贝叶斯分类

面对二分类问题,贝叶斯公式可以写为如下形式:
P ( 类 别 1 ∣ 特 征 ) = P ( 特 征 ∣ 类 别 1 ) P ( 类 别 1 ) P ( 特 征 ∣ 类 别 1 ) P ( 类 别 1 ) + P ( 特 征 ∣ 类 别 2 ) P ( 类 别 2 ) P(类别1|特征)= \frac{P(特征|类别1) P(类别1)}{P(特征|类别1) P(类别1)+P(特征|类别2) P(类别2)} P(1=P(1)P(1)+P(2)P(2)P(1)P(1)
P ( c 1 ∣ x ) = P ( x ∣ c 1 ) P ( c 1 ) P ( x ∣ c 1 ) P ( c 1 ) + P ( x ∣ c 2 ) P ( c 2 ) P(c1|x)= \frac{P(x|c1) P(c1)}{P(x|c1) P(c1)+P(x|c2) P(c2)} P(c1x=P(xc1)P(c1)+P(xc2)P(c2)P(xc1)P(c1)
P ( c 1 ∣ x ) = 1 1 + P ( x ∣ c 2 ) P ( c 2 ) P ( x ∣ c 1 ) P ( c 1 ) P(c1|x)= \frac{1}{1+\frac{P(x|c2) P(c2)}{P(x|c1) P(c1)}} P(c1x=1+P(xc1)P(c1)P(xc2)P(c2)1
P ( c 1 ∣ x ) = 1 1 + e − z P(c1|x)= \frac{1}{1+{e^{-z}}} P(c1x=1+ez1
其中: z = l n ( P ( x ∣ c 1 ) P ( c 1 ) P ( x ∣ c 2 ) P ( c 2 ) ) z=ln(\frac{P(x|c1) P(c1)}{P(x|c2) P(c2)}) z=ln(P(xc2)P(c2)P(xc1)P(c1)),即:
σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+{e^{-z}}} σ(z)=1+ez1

2、LogLoss推导
y ′ = 1 1 + e − z y ^{'}= \frac{1}{1 + e^{-z}} y=1+ez1
z z z 表示逻辑回归中模型线性层的输出,$z = b + w_1x_1 + w_2x_2 + …+w_nx_n $;
y ′ y^{'} y 是逻辑回归模型针对特定样本 x x x的输出(某一类别的概率)。

在输入特定样本 x x x后,样本为1类的概率为 y ′ y^{'} y:
P ( y = 1 ∣ x ) = y ′ P(y=1|x)=y^{'} P(y=1x)=y
所以有:
P ( y ∣ x ) = { y ′ y = 1 1 − y ′ y = 0 P(y|x)= \left\{\begin{matrix} y^{'} & y=1\\ 1-y^{'}& y=0 \end{matrix}\right. P(yx)={y1yy=1y=0

综合上式,可以得到:
P ( y ∣ x ) = y ′ y ⋅ ( 1 − y ′ ) ( 1 − y ) P(y|x)=y^{' y}\cdot(1-y^{'})^{(1-y)} P(yx)=yy(1y)(1y)

− l n P ( y ∣ x ) = ∑ ( x , y ) ∈ D − y l o g ( y ′ ) − ( 1 − y ) l o g ( 1 − y ′ ) -ln P(y|x) = \sum_{(x,y)\in D} -ylog(y') - (1 - y)log(1 - y') lnP(yx)=(x,y)Dylog(y)(1y)log(1y)
故逻辑回归的似然函数为:

L o g l o s s = ∑ ( x , y ) ∈ D − y l o g ( y ′ ) − ( 1 − y ) l o g ( 1 − y ′ ) Logloss= \sum_{(x,y)\in D} -ylog(y') - (1 - y)log(1 - y') Logloss=(x,y)Dylog(y)(1y)log(1y)

四、softmax
公式如下:

y i ^ = p ( y = i ∣ x ) = e ( w i T x + b i ) ∑ j = 1 n e ( w j T x + b j ) \hat{y_{i}}=p(y = i|\textbf{x}) = \frac{e^{(\textbf{w}_i^{T}\textbf{x} + b_i)}}{\sum_{j=1}^{n} {e^{(\textbf{w}_j^{T}\textbf{x} + b_j)}} } yi^=p(y=ix)=j=1ne(wjTx+bj)e(wiTx+bi)
其中n代表类别总数,也是最后一层神经元的数目,P代表i类的概率
请注意,此公式本质上是将逻辑回归公式延伸到了多类别。

softmax loss函数
l ( y , y ~ ) = ∑ i = 1 n y i l o g y i ^ l(y,\tilde{y})=\sum_{i=1}^{n}{y_{i}log \hat{y_{i}}} l(y,y~)=i=1nyilogyi^

其中, y y y 为真实值,是一个one_hot编码 y i ^ \hat{y_{i}} yi^ 为预测值(softmax的输出结果)。

one_hot编码:如果样例 x 是类别 i,则 y 的第 i 维的值为 1,其余维的值为 0(例如,x 是类别 2, 共 4 类,则 y 的 值为 [0, 1, 0, 0])

cross entropy交叉熵:
l ( y , y ~ ) = ∑ i = 1 n y i l o g p i ^ l(y,\tilde{y})=\sum_{i=1}^{n}{y_{i}log \hat{p_{i}}} l(y,y~)=i=1nyilogpi^

当交叉熵损失函数中的 ** p i ^ \hat{p_{i}} pi^ 为softmax的输出 y i ^ \hat{y_{i}} yi^ **时,两者完全相同。

#logits为最后一层的输出
losses = tf.nn.softmax_cross_entropy_with_logits(
    labels=tf.one_hot(labels_placeholder, num_classes),
    logits=logits
)

有关cost function导数推导过程请参考:Softmax 函数与交叉熵

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值