博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习之逻辑回归
阅读量:4679 次
发布时间:2019-06-09

本文共 1496 字,大约阅读时间需要 4 分钟。

一句话:逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降求解参数,来达到将数据二分类的目的

假设函数

逻辑回归算法是将线性函数的结果映射到 sigmoid 函数中:

\[ h_{\theta}{(x)}=\frac{1}{1+e^{-z}}=\frac{1}{1+e^{\theta^{T}x}} \]

函数的形式如下:

uploading-image-440521.png

因此对于输入 x 分类结果为类别 1 和类别 0 的概率分别为:

\[ \begin{align} P(y=1|x;\theta)&=h_{\theta}{(x)}\\ P(y=0|x;\theta)&=1-h_{\theta}(x) \end{align} \]

极大似然估计

利用极大似然估计的方法求解损失函数,首先得到概率函数为:

\[ P(y|x;\theta)=(h_{\theta}(x))^y*(1-h_{\theta}{(x)})^{1-y} \]

因为样本数据互相独立,所以它们的联合分布可以表示为各边际分布的乘积,取似然函数为:

\[ \begin{align} L(\theta)&=\prod_{i=1}^{m}{P(y^{(i)}|x^{(i)};\theta)}\\ &=\prod_{i=1}^{m}{(h_{\theta}(x^{(i)}))^{y^{(i)}}*(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}})} \end{align} \]

取对数似然函数:

\[ l(\theta)=\log(L(\theta))=\sum_{i=1}^{m}{(y^{(i)}\log{(h_{\theta}(x^{(i)}))}+(1-y^{(i)})\log({1-h_{\theta}{(x^{(i)})}}))} \]

最大似然估计就是要求得使 \(l(\theta)\) 取最大值时的 \(\theta\) ,为了应用梯度下降法。我们稍微变换一下:

\[ J(\theta)=-\frac{1}{m}l(\theta) \]

为什么使用极大似然函数来作为损失函数?

  • 对损失函数求负梯度之后,参数的更新只与 \(x_j^i\)\(y^i\) 相关,和 sigmoid 函数本身的梯度是无关的;
  • 从损失函数的函数图形来分析:

对于单个样本来讲,\(J(\theta)\) 所对应的 \(C(\theta)\) 为:

\[ C(\theta)=-[y\log{h_{\theta}(x)}+(1-y)\log{(1-h_{\theta}(x))}] \]

\(y=1\) 时:\(C(\theta)=-\log{h_{\theta}(x)}\)

其函数图像为:

uploading-image-476071.png

从图中可以看出,对于正类 \(y=1\),当预测值 \(h_{\theta}(x)=1\) 时,损失函数 \(C(\theta)\) 的值为 0,这正是我们希望得到的。反之,则会给学习算法较大的惩罚。

\(y=0\) 时:\(C(\theta)=-\log{(1-h_{\theta}(x))}\)

其函数图像为:

uploading-image-224135.png

分析同上。


存在的缺点

  • 准确率不是很高,因为形式比较简单,很难去拟合数据的真实分布;
  • 很难处理数据不平衡的问题,比如正负样本比为 10000:1 时,把所有的样本都预测为正,也能使损失函数的值比较小;
  • 处理非线性数据较麻烦
  • 逻辑回归本身无法筛选特征。有时候用 GBDT 来筛选特征,然后再用逻辑回归。

转载于:https://www.cnblogs.com/ydcode/p/11195964.html

你可能感兴趣的文章
[C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
查看>>
让历史告诉我们未来
查看>>
L2-005. 集合相似度
查看>>
java大数据处理-千万级数据写xml
查看>>
神经网络(13)--具体实现:random initialization
查看>>
静态路由作用和添加删除命令
查看>>
CodeForces-4C Registration system
查看>>
关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
查看>>
UVa540 Team Queue
查看>>
android 练习之路 (八)
查看>>
hdu 1709
查看>>
【腾讯IMWeb前端训练营】 Vuejs todoList demo
查看>>
C语言博客作业04--数组
查看>>
postEvent() @ triggerEvent
查看>>
js数组操作
查看>>
FlexSlider是一个非常出色的jQuery滑动切换插件
查看>>
mysql插入中文报错
查看>>
tp5 中 model 的聚合查询
查看>>
android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications...
查看>>
几种内核对象的受信与非受信状态
查看>>