001_wz_sf_逻辑回归(Logistic Regression)

1.什么是逻辑回归

逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。

:代价函数是衡量我们训练的模型的好坏程度,为了训练逻辑回归模型的参数w和参数b,我们需要一个代价函数,通过训练代价函数来得到参数 w w w b b b;要注意区别代价函数和损失函数,代价函数 J ( w , b ) J(w,b) J(w,b)是对于整个训练样本来说的,而损失函数 L ( y ^ , y ) L(\hat{y},y) L(y^,y)是对于单个的训练样本来说的。

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)

回归模型中,y是一个定性变量,比如 y y y=0或1,logistic方法主要应用于研究某些事件发生的概率

2.逻辑回归的优缺点

优点:

  1. 速度快,适合二分类问题
  2. 简单易于理解,直接看到各个特征的权重
  3. 能容易地更新模型吸收新的数据

缺点:

  • 对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

3.Regression的常规步骤

  1. 寻找 h h h函数(即预测函数)
  2. 构造 J J J函数(即损失函数)
  3. 想办法使得 J J J函数最小求得回归参数 θ \theta θ

4.构造预测函数 h ( x ) h(x) h(x)

LR逻辑回归是一种监督学习分类算法,其实现了给定数据集到0,1的一种映射。

给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})\} D={(x1,y1),(x2,y2),...,(xm,ym)}其中 ( x i , y i ) (x_{i},y_{i}) (xi,yi)表示第i个样本,其中 x i = ( x i 1 , x i 2 , . . . , x i n ) x_{i}=(x_{i_{1}},x_{i_{2}},...,x_{i_{n}}) xi=(xi1,xi2,...,xin),即每个数据有n个特征,类别 y = { 0 , 1 } y=\{0,1\} y={0,1},要求训练数据,将数据分成两类0或1。

假定 x i x_{i} xi的个特征为线性关系,即:
z = θ + b = θ 1 x 1 + θ 2 x 2 + . . . θ n x n + b z=\theta+b=\theta_{1}x_{1}+\theta_{2}x_{2}+...\theta_{n}x_{n}+b z=θ+b=θ1x1+θ2x2+...θnxn+b

现将数据样本 x i x_{i} xi添加一个特征 x 0 = 1 x_{0}=1 x0=1,将 b b b作为 θ 0 \theta_{0} θ0,有:
z = θ + b z=\theta+b z=θ+b = b ∗ 1 + θ 1 x 1 + θ 2 x 2 + . . . θ n x n =b*1+\theta_{1}x_{1}+\theta_{2}x_{2}+...\theta_{n}x_{n} =b1+θ1x1+θ2x2+...θnxn = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . θ n x n + b = θ T X =\theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...\theta_{n}x_{n}+b=\theta^TX =θ0x0+θ1x1+θ2x2+...θnxn+b=θTX

以上实现了用样本 x i x_{i} xi的n个特征来表示样本的表达式,现在需要寻找一个映射使得 z z z可以转换为0或1,这里选用Sigmoid函数,函数形式为:
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
在这里插入图片描述
当输入一个 z z z时, y y y输出一个0-1之间的数,假定y>0.5则最终结果判为1 ,y<0.5最终结果为0。当y=0.8时,最终结果为1,y=0.8也表征了此时输出为1的概率,令:
h θ ( x ) = 1 1 + e − θ T X h_\theta(x)=\frac{1}{1+e^{-\theta^TX}} hθ(x)=1+eθTX1
将样本特征线性表示,然后输入到Sigmoid函数,输出结果在0-1之间,并且输出结果表征了分类结果为类别1和类别0的概率,即:
P ( y = 1 │ x ; θ ) = h θ ( x ) P(y=1│x;θ)=h_\theta (x) P(y=1x;θ)=hθ(x) P ( y = 0 │ x ; θ ) = 1 − h θ ( x ) P(y=0│x;θ)=1-h_\theta(x) P(y=0x;θ)=1hθ(x)
h ( x ) h(x) h(x)输出刚好代表了结果为1的概率
现将两式合并为:
P ( y ∣ x ; θ ) = h θ ( x ) y ∗ ( 1 − h θ ( x ) ) 1 − y P(y|x;\theta)=h_\theta(x)^y*(1-h_\theta(x))^{1-y} P(yx;θ)=hθ(x)y(1hθ(x))1y
可以在y=0和y=1的情况下验证此式

5.构造损失函数 J J J(m个样本,每个样本具有n个特征)

代价函数(成本(cost)函数)h和 J J J函数如下,它们是基于最大似然估计推导得到的:
c o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) , y = 1 − l o g ( 1 − h θ ( x ) ) , y = 0 cost(h_\theta(x),y)=\left\{\begin{matrix} -log(h_\theta(x)),y=1\\ -log(1-h_\theta(x)),y=0\\ \end{matrix}\right. cost(hθ(x),y)={log(hθ(x)),y=1log(1hθ(x)),y=0 J ( θ ) = 1 m ∑ i = 1 m c o s t ( h θ ( x i ) , y i ) = − 1 m [ ∑ i = 1 i = m ( y i ∗ l o g h θ ( x i ) + ( 1 − y i ) ∗ l o g ( 1 − h θ ( x i ) ) ) ] J(\theta)= \frac{1}{m}\sum{^m_{i=1}}cost(h_\theta(x_i),y_i)=-\frac{1}{m} \begin{bmatrix} \sum{^{i=m}_{i=1}}(y_i*logh_\theta(x_i)+(1-y_i)*log(1-h_\theta(x_i))) \end{bmatrix} J(θ)=m1i=1mcost(hθ(xi),yi)=m1[i=1i=m(yiloghθ(xi)+(1yi)log(1hθ(xi)))]

6.推导损失函数的过程

假设每个样本均独立同分布,则根据最大似然估计有:
L ( θ ) = ∏ i = 1 i = m P ( y i ∣ x i ; θ ) = ∏ i = 1 i = m h θ ( x i ) y i ∗ ( 1 − h θ ( x i ) ) 1 − y i L(\theta)=\prod^{i=m}_{i=1}P(y_i|x_i;\theta)=\prod^{i=m}_{i=1}h_\theta(x_i)^{y_i}*(1-h_\theta(x_i))^{1-y_i} L(θ)=i=1i=mP(yixi;θ)=i=1i=mhθ(xi)yi(1hθ(xi))1yi
进而求最大对数似然估计:
l ( θ ) = l o g L ( θ ) l(\theta)=logL(\theta) l(θ)=logL(θ) = ∑ i = 1 i = m ( y i ∗ l o g h ( x i ) + ( 1 − y i ) ∗ l o g ( 1 − h ( x i ) ) ) =\sum{^{i=m}_{i=1}}(y_i*logh(x_i)+(1-y_i)*log(1-h(x_i))) =i=1i=m(yilogh(xi)+(1yi)log(1h(xi)))
最大似然估计就是求使得 l ( θ ) l(\theta) l(θ)取最大值时的 θ \theta θ
记损失函数为:
J ( θ ) = − 1 m l ( θ ) J(\theta)=-\frac{1}{m}l(\theta) J(θ)=m1l(θ) = − 1 m ∑ i = 1 m ( y i ∗ l o g h θ ( x i ) + ( 1 − y i ) ∗ l o g ( 1 − h θ ( x i ) ) ) =-\frac{1}{m}\sum{^{m}_{i=1}}(y_i*logh_\theta(x_i)+(1-y_i)*log(1-h_\theta(x_i))) =m1i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi)))
损失函数表征预测值与真实值之间的差异程度,如果预测值与真实值越接近则损失函数应该越小,在此损失函数可以取为最大似然估计函数的相反数,其次除以m这一因子并不改变最终求导极值结果,通过除以m可以得到平均损失值,避免样本数量对于损失值的影响。
接下来采取梯度下降法,让损失函数 J J J对于 θ \theta θ求偏导:
在这里插入图片描述
得到 θ j \theta_j θj的迭代式:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j , j = 0 , 1 , 2 , . . . , n \theta_j:=\theta_j-\alpha\frac{1}{m}\sum{^m_{i=1}}(h_\theta(x_i)-y_i)x_{i_j},j=0,1,2,...,n θj:=θjαm1i=1m(hθ(xi)yi)xij,j=0,1,2,...,n

7.向量化

向量化(Vectorization)是使用矩阵计算来代替for循环,以简化计算过程,提高效率。
向量化过程:
约定训练数据的矩阵形式如下,x的每一行为一条训练样本,而每一列为不同的特称取值:
在这里插入图片描述
g ( A ) g(A) g(A)的参数 A A A为一列向量,所以实现 g g g函数时要支持列向量作为参数,并返回列向量。
θ \theta θ迭代式可以改为:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j = θ j − α 1 m ∑ i = 1 m e i x i j = θ j − α 1 m x T E ; i = 1 , 2 , . . . , m , j = 0 , 1 , 2 , . . . , n \theta_j:=\theta_j-\alpha\frac{1}{m}\sum{^m_{i=1}}(h_\theta(x_i)-y_i)x_{i_j}=\theta_j-\alpha\frac{1}{m}\sum{^m_{i=1}}e_ix_{i_j}=\theta_j-\alpha\frac{1}{m}x^TE;i=1,2,...,m,j=0,1,2,...,n θj:=θjαm1i=1m(hθ(xi)yi)xij=θjαm1i=1meixij=θjαm1xTE;i=1,2,...,m,j=0,1,2,...,n
综上所述,Vectorization后θ更新的步骤如下:

  1. A = x ∗ θ A=x*\theta A=xθ
  2. E = g ( A ) − y E=g(A)-y E=g(A)y
  3. θ = θ j − α 1 m x T E \theta=\theta_j-\alpha\frac{1}{m}x^TE θ=θjαm1xTE

8.正则化

暂时未学到,后面补充

参考文章:

机器学习算法–逻辑回归原理介绍
机器学习–LR逻辑回归与损失函数理解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值