Logistic Regression

简单易懂的笔记 by hch

首先要搞懂干什么:

x 特征值1 特征值2 特征值n y
x1 1 0 1 0
x2 0 1 1 1
xm 1 0 1 0

xj表示第j个样本,共有m个样本
xji表示第j个样本的第i维特征值
yj表示第j个样本的tag,即结果
我们试图通过已知tag的数据去训练模型,从而预测未知tag的数据
(下面数学公式有哪里不懂了,记得回来看这里的定义)

形象理解参数与预测

借用二维(假设只有两个特征)图像,我们可以把样本表示到二维图上

我们查看此图会发现,线段很好地分割了样本点 该线段函数为

y=axy=ax y=ax
我们换种表达方式

Q=w1x+w2yQ=w_1x+w_2y Q=w1​x+w2​y
点处于线段时,Q=0
点处于线段上方时,Q>0
点处于线段下方时,Q<0
也就如图中所显示的那样,我们通过这条线便可分出点的类别
那么开始延伸,预测xj样本,它有n维向量,表达式即为

Q=w1xj1+w2xj2+w3xj3+...+wnxjnQ= w_1x_{j1}+w_2x_{j2}+w_3x_{j3}+...+w_nx_{jn} Q=w1​xj1​+w2​xj2​+w3​xj3​+...+wn​xjn​
我们的问题也就演变成了如何求参(w1,w2,w3,…,wn)

sigmod函数


即大于0时其趋近于1,小于0时其趋近于0,我们可以得到表达式

hθ(xj)=sigmoid(w1xj1+w2xj2+w3xj3+...+wnxjn)h_\theta(x_j)=sigmoid(w_1x_{j1}+w_2x_{j2}+w_3x_{j3}+...+w_nx_{jn}) hθ​(xj​)=sigmoid(w1​xj1​+w2​xj2​+w3​xj3​+...+wn​xjn​)
当y=1时,我们希望h(xj)预测也为1
当y=0时,我们希望h(xj)预测也为0

合二为一

观察下面这个式子

p(yj∣xj)=hθ(xj)yj∗(1−hθ(xj))1−yjp(y_j|x_{j})= h_\theta(x_j)^{y_j}*(1-h_\theta(x_j))^{1-y_j} p(yj​∣xj​)=hθ​(xj​)yj​∗(1−hθ​(xj​))1−yj​
当yj=1时,p(yj|xj)=1
当yj=0时,p(yj|xj)=1
我们只要希望这个函数输出1就好了

损失函数

(习惯于损失函数越小越好,所以加了负号)

loss=−ln(∏j=1mp(yj∣xj))=∑j=1m−yjlnhθ(xj)−(1−yj)ln(1−hθ(xj))loss=-ln(\prod_{j=1}^mp(y_j|x_{j}))=\sum_{j=1}^m-y_jlnh_\theta(x_j)-(1-y_j)ln(1-h_\theta(x_j)) loss=−ln(j=1∏m​p(yj​∣xj​))=j=1∑m​−yj​lnhθ​(xj​)−(1−yj​)ln(1−hθ​(xj​))

梯度下降法

我们想要求上面那个函数的极大值点,第一想法是求导,然后让导数等于0,且得到的该点代入二阶导后小于0,就得到极大值点了,即

f′(x0)=0f^{'}(x_0)=0 f′(x0​)=0

f′′(x0)<0f^{''}(x_0)<0 f′′(x0​)<0
即x0为极大值点。 但这是求一个自变量的函数极值的方法,我们有n个wi是未知的,也就是有n个自变量,这种方法自然是不管用了。那么是否仍然有特定的算数方法得到极大值呢?想必考过研的同学都知道二元是怎么求的,十分麻烦的方法,这时计算机提出了它自己的方法,我们依旧先用二维来理解。

y=−x2+6xy=-x^2+6x y=−x2+6x

导数的真正意义—方向

观察绿点(1,5),其导数为4
观察绿点(5,5),其导数为-4
导数的本质为“方向”
在(1,5)点x要往左移一些
在(5,5)点x要往右移一些

x1=x0+α∗δyδxx_1=x_0+\alpha*\frac{\delta y}{\delta x} x1​=x0​+α∗δxδy​

计算机在(1,5)点,以α的学习速率向左移动x,一步步移动,最后会收敛到极大值点。拓展:针对我们的loss函数,我们对每一个自变量wi求导,并以α的学习速率更新wi。

δlossδwi=∑j=1mδlossδhθ(xj)∗δlossδw∗δwδwi\frac{\delta loss}{\delta w_i}=\sum_{j=1}^{m}\frac{\delta loss}{\delta h_\theta(x_j)}*\frac{\delta loss}{\delta w}*\frac{\delta w}{\delta w_i} δwi​δloss​=j=1∑m​δhθ​(xj​)δloss​∗δwδloss​∗δwi​δw​

δlossδhθ(xj)=−yihθ(xj)+1−yi1−hθ(xj)\frac{\delta loss}{\delta h_\theta(x_j)}= -\frac{y_i}{ h_{\theta}(x_j)}+\frac{1-y_i}{1-h_{\theta}(x_j)} δhθ​(xj​)δloss​=−hθ​(xj​)yi​​+1−hθ​(xj​)1−yi​​

sigmoid(x)=11−e−xsigmoid(x)=\frac{1}{1-e^{-x}} sigmoid(x)=1−e−x1​

(sigmoid(x))′=sigmoid(x)∗(1−sigmoid(x))(sigmoid(x))^{'}=sigmoid(x)*(1-sigmoid(x)) (sigmoid(x))′=sigmoid(x)∗(1−sigmoid(x))

δhθ(xj)δw=(1−sigmoid(hθ(xj))sigmoid(hθ(xj))\frac{\delta h_{\theta}(x_j)}{\delta w}=(1-sigmoid(h_\theta(x_j))sigmoid(h_\theta(x_j)) δwδhθ​(xj​)​=(1−sigmoid(hθ​(xj​))sigmoid(hθ​(xj​))

w=w1∗xj1+w1∗xj2+w1∗xj3+....+w1∗xjnw=w_1*x_{j1}+w_1*x_{j2}+w_1*x_{j3}+....+w_1*x_{jn} w=w1​∗xj1​+w1​∗xj2​+w1​∗xj3​+....+w1​∗xjn​

δwδwi=xji\frac{\delta w}{\delta w_i}=x_{ji} δwi​δw​=xji​

wi=wi+α∗δlossδwiw_i=w_i+\alpha*\frac{\delta loss}{\delta w_i}wi​=wi​+α∗δwi​δloss​

以上收敛到wi即可,我们即求参完成,预测模型也完成了。

正则化

欠拟合与过拟合


你觉得哪个图像能描绘这些点的走向最好?
一图完全是没描 这叫“欠拟合” 也就是模型没训练好
二图虽然描的简单,但形象地表现了数据的大体走向,这叫“适当容量”,训练的不错
三图每个点都描上了,但描“过了”,用马克思原理来说,把“偶然性”表现在了我们追求的“必然性”之中,这叫“过拟合”

奥卡姆剃刀

对于组织在目标设置与执行过程中因上述种种原因而出现的目标曲解与置换,有一个根本的解决之道,即“无情地剔除所有累赘”,这也正是“奥卡姆剃刀”所倡导的“简化”法则:保持事物的简单化是对付复杂与繁琐的最有效方式。

简单来说:我们追求简单且能表现规律的模型,图二,就决定是你了。

正则化解决过拟合

L1范式:

new_loss=loss+α∗∑i=1n∣wi∣new\_loss=loss+\alpha*\sum_{i=1}^{n}|w_i|new_loss=loss+α∗i=1∑n​∣wi​∣

L2范式:

new_loss=loss+12∗α∗∑i=1n∣wi∣2new\_loss=loss+\frac{1}{2}*\alpha*\sum_{i=1}^{n}|w_i|^2new_loss=loss+21​∗α∗i=1∑n​∣wi​∣2

它们的原理:

我们使用梯度下降法是为了使loss函数寻找到极小值,那么也就使属于new_loss变到最小,也就是使一些很小的wi变成0,这样的意义会使一些对应的不重要的特征无效化,从而简化模型,寻找数据的必然性。

两者的区别:

L1范数是指向量中各个元素绝对值之和

L2范数是指向量各元素的平方和然后求平方根

L1范数可以进行特征选择,即让特征的系数变为0.

L2范数可以防止过拟合,提升模型的泛化能力,有助于处理 condition number不好下的矩阵(数据变化很小矩阵求解后结果变化很大)

(核心:L2对大数,对outlier离群点更敏感!)

下降速度:最小化权值参数L1比L2变化的快

模型空间的限制:L1会产生稀疏 L2不会。

L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。

Logistic Regression 逻辑回归 简单易懂的笔记 by hch相关推荐

  1. 【李宏毅机器学习】Logistic Regression 逻辑回归(p11) 学习笔记

    李宏毅机器学习学习笔记汇总 课程链接 文章目录 Logistic Regression Step 1: Function Set Step 2: Goodness of a Function Step ...

  2. Logistic Regression逻辑回归的损失函数与梯度下降训练

    有一篇博文提到logistic regression的简单理解(Logistic Regression逻辑回归的简单解释).逻辑回归实际上是odds取对数后的反函数,其函数形式也称为sigmoid f ...

  3. 【机器学习】Logistic Regression逻辑回归原理与java实现

    [机器学习]Logistic Regression逻辑回归原理与java实现 1.基于概率的机器学习算法 2.逻辑回归算法原理 2.1.分离超平面 2.2.阈值函数 2.3.样本概率 2.4.损失函数 ...

  4. Tensorflow【实战Google深度学习框架】—Logistic regression逻辑回归模型实例讲解

    文章目录 1.前言 2.程序详细讲解 环境设定 数据读取 准备好placeholder,开好容器来装数据 准备好参数/权重 拿到每个类别的score 计算多分类softmax的loss functio ...

  5. Logistic Regression逻辑回归

    参考自: http://blog.sina.com.cn/s/blog_74cf26810100ypzf.html http://blog.sina.com.cn/s/blog_64ecfc2f010 ...

  6. Logistic Regression逻辑回归的简单解释

    Logistic Regression也叫Logit Regression,在机器学习中属于参数估计的模型.逻辑回归与普通线性回归(Linear Regression)有很大的关系.在应用上,它们有所 ...

  7. Logistic Regression 逻辑回归数学原理、python代码实现、实际应用

    说在前面 第一次写博客,主要目的是再梳理一下学到东西的逻辑,如果可以帮助到其他在学习的人就更好啦.本篇主要参考的:<机器学习>西瓜书.博主文章:文章链接.以及知乎.百度等大神们的解惑文章 ...

  8. Logistic Regression(逻辑回归) +python3.6(pycharm)实现

    数学基础知识略过,可自行查询探究. 遇到的bugs: 1.AttributeError: module 'scipy' has no attribute '__version__' 解决办法:inst ...

  9. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 6_Logistic Regression 逻辑回归

    Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification 6.2 假设表示 Hypothesis Representation 6.3 决策边 ...

  10. 机器学习-非线性回归( Unlinear Regression) -逻辑回归(Logistic Regression)算法

    学习彭亮<深度学习基础介绍:机器学习>课程 概率 定义 概率(Probability): 对一件事情发生的可能性的衡量 范围 0 <= P <= 1 计算方法 根据个人置信 根 ...

最新文章

  1. 面试者面试官,双向角度的程序员面试指南!
  2. svn 不支持http 客户端_Xversion for mac(SVN客户端)
  3. 技术详解:基于人脸识别的 AI 弹幕
  4. 329例精选matlab算法原理及源码详解——老生谈算法
  5. Egg中使用DiyUpload实现图片批量上传
  6. mac java 更新命令行_Java 8 Update 71正在尝试安装新的帮助程序工具。 (在Mac上)...
  7. python中eval和ast.literal_eval的区别
  8. autoCAD 向图形中添加文字
  9. ORacle异常:ORA-00980:同义词转换不再有效
  10. 软件腐化的七个特征之复杂性、重复性、晦涩性(设计模式原则的反面) (《敏捷软件开发》读书总结第三篇)
  11. 图解HTTP(读书笔记01)
  12. creo中公制单位的设定问题(永久设定)
  13. 无法连接到internet 小黄叹号长时间不消失的问题
  14. 利用谷歌语法查找网站后台和数据库
  15. 二次规划问题的KKT 条件求解方法
  16. LumaQQ启动脚本
  17. (休息几天)读曼昆之微观经济学——供求关系
  18. Warning: masked_scatter_ received a mask with dtype torch.uint8, this behavior is now deprecated,ple
  19. 震网(Stuxnet)病毒深度解析:首个攻击真实世界基础设施的病毒
  20. Windows AIK+Imagex+DISM+U盘PE+U盘安装win7+PE

热门文章

  1. 火狐配置 about:config介绍:
  2. CPU,缓存,内存,外存概念挖掘
  3. 《打造高可用监控系统》之——Prometheus使用TIKV进行远程读(remote_read)和远程写(remote_write)
  4. c语言运行环境的熟悉实验报告,c语言实验报告
  5. obj[key].obj['key'],obj.key的区别
  6. 五线谱如何快速修改谱号,Overture这个小技巧必须要掌握!
  7. java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation问题解决
  8. php形状特征提取方法,LowB沙箱-PHP动态特征提取
  9. 基因组科学数据的安全管理与应用
  10. Linux使用cp命令报cp:omitting directory错误