在机器学习中,逻辑斯谛回归(Logistic regression)是经典的用线性回归做二分类的模型。通过样本数据建立模型,对新样本发生的概率进行预测。
Logistic回归初识
在上一篇博客中,总结了线性回归模型可以用来可以解决回归问题,线性模型能否用来做分类呢?答案是肯定的。怎么做分类呢?我们知道将样本数据加权求和得到的是一个连续的数据,针对二分类的问题,判断是或否的问题,说到这,不得不引出一个函数sigmoid函数,sigmoid函数可以将样本数据映射成概率,所以,sigmoid函数取值介于0-1之间。
sigmoid函数的推导
先占坑,后期补上。
sigmoid函数
sigmoid函数表达式可以表示为:
sigmoid函数的导数为:
逻辑回归模型
逻辑回归主要是将输入的样本数据映射成概率,使得分类结果尽可能地接近真实值。逻辑回归建模后得到的分类结果用数学表达式表示为:
目标函数
参数估计
假定:
将这个分段函数合并,得到:
根据最大似然估计,似然函数为:
对数似然函数为:
对对数似然函数求偏导:
将$h_{\theta}(x)=s(\theta^Tx)$带入上式,得:
求对数似然函数最大值,就是沿着梯度的方向,不断寻找最大值。Logistic回归参数的学习规则:
损失函数
真实值$y_i$为0或1,假设预测值$y_i$输出概率如下:
似然函数可以表示为:
则对数似然函数表示为:
令$p_i=\frac{1}{1+e^{-f_i}}$,对数似然函数表示为:
取对数似然函数的最大值,即求$loss(y_i,\hat y_i)=-l(\theta)$的最小值。
目标函数:
将真实值$y_i$的取值映射到-1,1,可得:
似然函数可以表示为:
则对数似然函数表示为:
令$p_i=\frac{1}{1+e^{-f_i}}$,对数似然函数表示为:
取对数似然函数的最大值,即求$loss(y_i,\hat y_i)=-l(\theta)$的最小值,最终目的还是为了得到损失函数取最小的时候参数的取值。
目标函数:
简化一下可得:
发生比
一个事件的发生比(odds)是指该事件发生的概率与该事件不发生概率的比值。如果事件发生的概率为$p$,则该事件不发生的概率为$1-p$,那么该事件的发生比为$\frac{p}{1-p}$,该事件的对数发生比,或logit函数是:
Softmax回归
Softmax回归适用于多分类的情形。Softmax是将K个类别的分类结果进行one-hot编码,假设第K个类别的参数为$\vec\theta_k$,则组成的参数矩阵应该为$\theta_{k×n}$。
目标函数
Softmax回归中事情发生的概率,可以表示为:
则似然函数可以表示为:
则对数似然函数可以表示为:
目标函数则是求对数似然函数的最大值。
Logistic应用代码
1 | import numpy as np |