机器学习——逻辑回归(Logistic Regression)

逻辑回归(Logistic Regression)是一种经典的二分类算法,虽然被称为回归,但其实际上是分类模型,并常用于二分类。

1、逻辑回归(Logistic Regression)算法详解
sigmoid函数

g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
自变量取值为任意数,值域为[0,1]
解释:将任意的输入映射到[0,1]的区间,将在线性回归中得到的预测值映射到sigmoid函数中,实现由值到概率的转换,从而完成分类任务。

实际上,sigmoid函数是由对数几率(属于正类可能性与负类可能性的比值的对数)
p ( y = 1 ∣ x ; θ ) = g ( θ T x ) = 1 1 + e − θ T x p(y=1|x;\theta)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}} p(y=1x;θ)=g(θTx)=1+eθTx1
ln ⁡ ( p ( y = 1 ∣ x ; θ ) p ( y = 0 ∣ x ; θ ) ) = θ 0 + θ 1 x 1 + ⋯ + θ n x n \ln(\frac{p(y=1|x;\theta)}{p(y=0|x;\theta)})=\theta_0+\theta_1x_1+\cdots+\theta_nx_n ln(p(y=0x;θ)p(y=1x;θ))=θ0+θ1x1++θnxn

预测函数

h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=g(θTx)=1+eθTx1
其中 θ T x = ∑ i = 1 n θ i x i = θ 0 + θ 1 x 1 + ⋯ + θ n x n \theta^Tx=\displaystyle\sum_{i=1}^n\theta_ix_i=\theta_0+\theta_1x_1+\cdots+\theta_nx_n θTx=i=1nθixi=θ0+θ1x1++θnxn
分类任务:
p ( y = 1 ∣ x ; θ ) = h θ ( x ) p(y=1|x;\theta)=h_\theta(x) p(y=1x;θ)=hθ(x)
p ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) p(y=0|x;\theta)=1-h_\theta(x) p(y=0x;θ)=1hθ(x)
整合有: 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

似然函数

L ( θ ) = ∏ i = 1 m p ( y ∣ x ; θ ) = ∏ i = 1 m ( h θ ( x i ) ) y i ( 1 − ( h θ ( x i ) ) 1 − y i L(\theta)=\displaystyle\prod_{i=1}^mp(y|x;\theta)=\displaystyle\prod_{i=1}^m(h_\theta(x_i))^{y_i}(1-(h_\theta(xi))^{1-y_i} L(θ)=i=1mp(yx;θ)=i=1m(hθ(xi))yi(1(hθ(xi))1yi
当似然函数取值最大时,数据的预测值恰好是真实值得概率最大

似然函数公式化简

由于似然函数包含累乘算术,将累乘变成累加有利于计算
根据 log ⁡ A ∗ B = log ⁡ A + log ⁡ B \log A*B=\log A +\log B logAB=logA+logB则有
对数似然函数:
log ⁡ L ( θ ) = log ⁡ ∏ i = 1 m ( h θ ( x i ) ) y i ( 1 − ( h θ ( x i ) ) 1 − y i \log L(\theta)=\log \displaystyle\prod_{i=1}^m(h_\theta(x_i))^{y_i}(1-(h_\theta(xi))^{1-y_i} logL(θ)=logi=1m(hθ(xi))yi(1(hθ(xi))1yi
展开化简:
∑ i = 1 m log ⁡ ( h θ ( x i ) ) y i ( 1 − h θ ( x i ) ) 1 − y i \displaystyle\sum_{i=1}^m\log(h_\theta(x_i))^{y_i}(1-h_\theta(x_i))^{1-y_i} i=1mlog(hθ(xi))yi(1hθ(xi))1yi
= ∑ i = 1 m ( y i log ⁡ ( h θ ( x i ) ) + ( 1 − y i ) log ⁡ ( 1 − h θ ( x i ) ) ) =\displaystyle\sum_{i=1}^m(y_i\log(h_\theta(x_i))+(1-y_i)\log(1-h_\theta(x_i))) =i=1m(yilog(hθ(xi))+(1yi)log(1hθ(xi)))
对似然函数求最大值,引入目标函数 J ( θ ) = − 1 m log ⁡ L ( θ ) J(\theta)=-\frac{1}{m}\log L(\theta) J(θ)=m1logL(θ),转换成求目标函数最小值。

目标函数

J ( θ ) = − 1 m log ⁡ L ( θ ) J(\theta)=-\frac{1}{m}\log L(\theta) J(θ)=m1logL(θ)

2、优化求解
梯度下降(gradient descent)

θ \theta θ求偏导,得 ∂ ∂ θ i J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j \frac{\partial}{ \partial\theta_i}J(\theta)=\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x_i)-y_i)x_i^j θiJ(θ)=m1i=1m(hθ(xi)yi)xij
x i j x_i^j xij:代表第 i i i个样本的第 j j j个特征
根据梯度下降算法,有:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j \theta_j:=\theta_j-\alpha\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x_i)-y_i)x_i^j θj:=θjαm1i=1m(hθ(xi)yi)xij
参数α叫学习率,代表每一步的步长,这个参数很关键,不能过大也不能过小。

随机梯度下降SGD (stochastic gradient descent)

梯度下降算法每次更新回归系数时都需要遍历整个数据集,当数据量很大的时候,该算法较为耗时,随机梯度下降算法的更新点在于:
每次只使用一个样本来更新回归系数,当新的样本到来时,分类器可以进行增量的更新。

改进的随机梯度下降

随机梯度下降会产生目标函数收敛速度慢,随机波动等问题。产生这个现象的原因是存在一些无法正确分类的样本点,也就是我们的数据集并非线性可分,logistic regression是线性分类模型,对非线性可分情况无能为力。然而我们的优化程序并没能意识到这些不正常的样本点,还一视同仁的对待,调整系数去减少对这些样本的分类误差,从而导致了在每次迭代时引发系数的剧烈改变。
对此,改进的随机梯度下降有以下优化点:

  • 每次迭代时,调整更新步长 α \alpha α的值。随着迭代的进行, α \alpha α越来越小
  • 随机选择样本更新回归系数
3、样本不均衡的解决方案

对于二分类数据样本,若正类样本数据量与负类样本数据量差距很大,会产生样本极度不均衡的现象,处理策略有:

  • 下采样策略
    目标:使得正类样本和负类样本数量一样少
    从正类中随机选择一定数量(和负类样本数量相当)的样本,可使用numpy.random.choice方法实现
  • 过采样策略
    目标:使得负类样本的数量和正类样本数据一样多
    方法:可采用SMOTE样本生成策略,构建新的样本
    步骤:
    ①对于少数类中的每个样本 x x x,以欧式距离为标准计算其到少数类样本集中所有样本的距离,得到其K近邻
    ②根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每个少数类样本 x x x,从其K近邻中随机N个距离
    ③对于每个随机选出的距离,分别与原样本按照公式构建新的样本
    x n e w = x + r a n d ( 0 , 1 ) ∗ d i x_{new}=x+rand(0,1)*d_i xnew=x+rand(0,1)di
    d i d_i di:对于每个样本而言,随机选中的距离
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值