machinelearning之logisticregression

Echo Echo     2022-11-01     594

关键词:

整理自Adrew Ng 的 machine learning课程week3

 

目录:

  • 二分类问题
    • 模型表示
    • decision boundary
  • 损失函数
  • 多分类问题
  • 过拟合问题和正则化
    • 什么是过拟合
    • 如何解决过拟合
    • 正则化方法

 

1、二分类问题

什么是二分类问题?

  • 垃圾邮件 / 非垃圾邮件?
  • 诈骗网站 / 非诈骗网站?
  • 恶性肿瘤 / 非恶性肿瘤?

用表达式来表示:$y\\in\\left \\ 0,1 \\right \\$,

\\beginBmatrix
0& : & nagetive & class\\\\
1& : & positive & class
\\endBmatrix

 

可以用线性回归处理分类问题吗?

当用线性回归处理分类问题时,可以选取一个阈值,如图所示,比如说,当$h_\\theta(x) \\geq \\theta^Tx$,就预测$y=1$;当$h_\\theta(x) < \\theta^Tx$,就预测$y=0$;

 

当样本只有上下的8个红色叉叉时,玫红色的直线是线性回归的结果,当选取阈值为0.5时,根据玫红色的竖线,可以将正类和负类分开,没有问题;

但是,当添加一个样本,如图中的绿色叉叉,回归线就变成了绿色的直线,这时选取0.5为阈值时,会把上面的4个红色叉叉(正类)分到负类里面去,问题很大了;

此外,在二分类问题中,y=0或者y=1,而在线性回归中,$h_\\theta(x)$可以大于1,也可以小于0,这也不合理;(在逻辑回归中$0<h_\\theta(x)<1$);

通过上面的例子得出结论,用线性回归做分类问题是不合理的,结果不稳定。

 

logistic regression模型的表示

不用线性回归模型,用逻辑回归模型:

$g(z)=\\frac11+e^-z$;$0<g(z)<1$。sigmoid函数 / logistic函数,函数图像如下:

$h_\\theta(x)=\\frac11+e^-\\theta^Tx$

说明:$h_\\theta(x)=P(y=1|x;\\theta)$,代表估计y=1的概率;(Probability that y=1, given x, parameterized by $\\theta$)

 

线性的Decision Boundary

 将两个类分开的边界,如下图,design boundary就是$x_1+x_2=3$;

非线性的decision boundary

以下边界为,$x_1^2+x_2^2=1$

 

注意到,边界是在参数确定的时候才能画出来的,它是对应着指定的参数的。

 

 

2、损失函数

如何去求模型的参数呢?

如果考虑线性回归的情况,损失函数为平方损失,对于线性回归中的简单函数,这样子定义的损失函数是个凸函数,易求解;但是在逻辑回归中,模型是个复杂的非线性函数($g(z)=\\frac11+e^-z$),平方损失下的损失函数不是个凸函数,有非常多的local minimal,不好求解;所以对逻辑回归,需要换个损失函数。

 

逻辑回归损失函数 

 

$$cost(h_\\theta(x),y)=\\left\\\\beginmatrix
-log(h_\\theta(x)) & if \\; y=1 \\\\
-log(1-h_\\theta(x)) & if \\; y=0
\\endmatrix\\right.$$

当y=1时,函数图像如左图所示,当$h_\\theta(x)=1$时,cost=0;当$h_\\theta(x)=0$时,cost趋向于无穷大;符合逻辑;

当y=0时,函数图像如右图所示,当$h_\\theta(x)=0$时,cost=0;当$h_\\theta(x)=1$时,cost趋向于无穷大;符合逻辑;

                 

最重要的是,这个函数是凸的!

 

简化的损失函数和梯度下降

$cost(h_\\theta(x),y)=-ylog(h_\\theta(x))-(1-y)log(1-h_\\theta(x))$

逻辑回归的损失函数基本上用的都是这个,为什么用这个函数?

  • 可用极大似然估计求参数
  • 凸函数
  • 和上面的损失函数是等价的

故:

$J(\\theta)=-\\frac1m[\\sum_i=1^m y^(i)logh_\\theta(x^(i)) + (1-y^(i))log(1-h_\\theta(x(i)))]$

 

求参$\\theta$:$\\underset\\thetaminJ(\\theta)$

给定x,预测y:$h_\\theta(x)=\\frac11+e^-\\theta^Tx$

 

梯度下降

$\\theta_j=\\theta_j-\\alpha \\frac\\partial J(\\theta)\\partial \\theta_j=\\theta_j - \\alpha \\sum_i=1^m (h_\\theta(x^(i))-y^(i)) x_j^(i) $

这里的参数更新形式和线性回归中是一样的,但是注意到$h_\\theta(x)$是不一样的;

注意在逻辑分类模型中,feature scaling也是有用的;

 

高级优化方法

除了梯度下降算法,还有一些更加高级的、老练的、速度更快的优化方法:“Conjudge gradient、BFGS、L-BFGS”

 

 

3、多分类问题

邮件分类:朋友、家人、工作.......

天气:晴、多云、雨、雪.......

所分类问题的一个思路是:one-vs-all

如下,对于有3类的多分类问题,构造3个分类函数,每次只把一个类和其他的类区别开来,$h_\\theta^(i)(x);i=1,2,3$:

因此,每一个分类器都可以得到一个$y=i(i=1,2,3)$的概率,最大的概率的i就是类别结果,即预测为:$ \\underset imax h_\\theta^(i)(x);i=1,2,3$

 

 

4、过拟合问题和正则化

过拟合问题

如图所示,对于房价预测问题,有三个模型:

第一个模型很简单,拟合的不是很好,可以称之为“欠拟合”,有比较大的偏差(bias);

第二个模型比第一个模型复杂一点,拟合的不错,可以认为“拟合的刚刚好”;

第三个模型非常复杂,拟合的天衣无缝,可以称之为“过拟合”,又比较大的方差(variance);

过拟合说的就是第三幅图中的的问题,如果我们有很多的features,学习得到的模型可以对训练数据拟合的非常好($J(\\theta) \\approx 0$),但是在拟合新的数据的时候却做的不好,泛化能力弱;

类似的,在逻辑回归中:

 

如何解决过拟合问题?

  • 减少feature的数目
    • 可以手动的选择保留哪些feature
    • 一些自动的模型选择算法(model selection algorithm) 
  •  正则化
    • 保留所有的feature,但是reduce magnitude/values of parameters 
    • 当有很多的feature,每个都对预测有点贡献的时候,非常有用

 

正则化后的损失函数

如下图所示,逻辑上,当在原本的损失函数后加惩罚项的话,$\\theta_3$和$\\theta_4$就会变得十分的小,这样虽然模型复杂,但是高阶的部分其实非常小,就类似于低阶的函数;

正则化“简化”了模型,使得模型过拟合的倾向减小;

正则化线性回归:

$J(\\theta)=\\frac12m [\\sum_i=1^m (h_\\theta(x^(i))-y^(i))^2 + \\lambda \\sum_j=1^n \\theta_j^2]$

注意到,当$\\lambda$非常大的时候,可以会出现欠拟合的情况;

 此时的梯度下降算法的更新为:

$\\theta_0=\\theta_0-\\alpha  \\frac1m (h_\\theta(x^(i))-y^(i))x_0^(i) $

$\\theta_j=\\theta_j-\\alpha [ \\frac1m (h_\\theta(x^(i))-y^(i))x_j^(i) + \\frac\\lambdam\\theta_j] $;j=1,2,.....n;

注意:$\\theta_0$是不更新的

注意到:

$\\theta_j=\\theta_j(1 - \\alpha\\frac\\lambdam) - \\alpha \\frac1m (h_\\theta(x^(i))-y^(i))x_j^(i)  $

$1 - \\alpha\\frac\\lambdam$是个极其接近1的数字,可能是0.99,所以正则化后的更新策略和之前的对比,就是让$\\theta_j$更小了一些;

 

Normal Equation

 

$$\\theta=(x^Tx+\\lambda\\beginbmatrix
0 & & &\\\\ 
& 1 & & \\\\
& & 1 & \\\\
& & &...
\\endbmatrix))^-1x^Ty$$

在无正则化的线性回归问题中,Normal Equation存在一个不可逆的问题,但是可以证明$(x^Tx+\\lambda\\beginbmatrix
0 & & &\\\\ 
& 1 & & \\\\
& & 1 & \\\\
& & &...
\\endbmatrix))$是可逆的;

 

正则化的logistic regression

与线性回归的正则化一样,只要把模型函数($h_\\theta(x)$)换了即可

 

machinelearning之导论一元线性回归

整理自AndrewNg的machinelearnig课程week1 目录:什么是机器学习监督学习非监督学习一元线性回归模型表示损失函数梯度下降算法 1、什么是机器学习ArthurSamuel不是一个playingchecker的高手,但是他编了一个程序,每天和这个程序... 查看详情

machinelearning之logistic回归

一、概述 假设现在有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称为回归; 利用Logistic回归进行分类的主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分... 查看详情

另一种压缩图片的方法---machinelearning之pca(principlecomponentanalysis)

...。  具体方式以及原理在gitlab上,学习源来自stanford的machinelearning公开课。 查看详情

octavetutorial(《machinelearning》)之第四课《绘图数据》

第四课 PlottingData 绘图数据t =[0,0.01,0.98];y1=sin(2*pi*4*t);y2=cos(2*pi*4*t);plot(t,y1);(绘制图1)holdon;(图1不消失)plot(t,y2,‘r‘);(用红色绘制图2)xlable(‘time‘)(横轴名称)ylable(‘value‘)(纵轴名称)legend(‘sin‘,‘cos 查看详情

一种压缩图片的方法---machinelearning之k-means

背景描述:  RGB编码:对于一个直接用24bit表示每一个而像素的图像来说,每一个pixel使用8-bit无符号整数(0-255)来表示红or绿or蓝。压缩目的:  将128x128大小的图片由原来的24bit表示-压缩成->16bit表示每一个像素的图像。压... 查看详情

machinelearning——unsupervisedlearning(机器学习之非监督学习)

  前面,我们提到了监督学习,在机器学习中,与之对应的是非监督学习。无监督学习的问题是,在未加标签的数据中,试图找到隐藏的结构。因为提供给学习者的实例是未标记的,因此没有错误或报酬信号来评估潜在的解决... 查看详情

machinelearning

EvolutionofmachinelearningBecauseofthenewest computingtechnologies,machineupbringingisnownothinglikethemechanicalresearchofthepast.Itcamefromthedefinitionofimagesandthedoctrinethatcomputershaveev 查看详情

machinelearning资料

Awesome系列AwesomeMachineLearningAwesomeDeepLearningAwesomeTensorFlowAwesomeTensorFlowImplementationsAwesomeTorchAwesomeComputerVisionAwesomeDeepVisionAwesomeRNNAwesomeNLPAwesomeAIAwesomeDeepLearningPap 查看详情

machinelearning

MachinelearningPrefaceDefinitionT:TaskE:ExperienceP:PerformanceSequence:T->E->PSupervisedlearningDefinitionGivetherightanswertoeachexampleofthedataset(calledtrainingdata).TypeRegression:gettheco 查看详情

elasticsearch之集群角色类型

...Node:数据节点CoordinatingNode:协调节点IngestNode:ingest节点machinelearning:机器学习节点MasterNode:主节点,该节点不和应用创建连接,每个节点都保存了集群状态,master节点不占用磁 查看详情

machinelearning-basics

  近几年来热门的神经网络(NeuralNetwork)和深度学习(DeepLearning)是机器学习(MachineLearning)的分支.在计算机科学的定义中,学习可以理解为:"Acomputerprogramissaidtolearnfrom experienceEwithrespecttosomeclassoftasksTandperformancemeasure  查看详情

machinelearning-第7周

SVMsareconsideredbymanytobethemostpowerful‘blackbox‘learningalgorithm,andbyposingacleverly-chosenoptimizationobjective,oneofthemostwidelyusedlearningalgorithmstoday.SupportVectorMachinesLargeMarginCla 查看详情

machinelearning第十一周笔记:photoocr

...Marcovaldo’sblog(http://marcovaldong.github.io/)刚刚完毕了Cousera上MachineLearning的最后一周课程。这周介绍了machinelearning的一个应用:photoOCR(optimalcharacterrecognition,光学字符识别),以下将笔记整理在以下。PhotoOCRProblemDescriptiona 查看详情

machinelearning(带修莫队)(代码片段)

MachineLearning区间出现次数的mex用桶暴力求mex#pragmaGCCoptimize(2)#pragmaGCCoptimize(3,"Ofast","inline")#include<bits/stdc++.h>#defineintlonglong#definefifirst#definesesecond#definep 查看详情

noteforcoursera《machinelearning》1|whatismachinelearning?

WhatisMachineLearning?TwodefinitionsofMachineLearningareoffered.ArthurSamueldescribeditas:"thefieldofstudythatgivescomputerstheabilitytolearnwithoutbeingexplicitlyprogrammed."Thisisanolder,informaldef 查看详情

跟google学machinelearning[1]

时至今日,我才发现machineLearning的应用门槛已经被降到了这么低,简直唾手可得。我实在找不到任何理由不对它进入深入了解。如标题,感谢Google为这项技术发展作出的贡献。当然,可能其他人做了99%,Google只做了1%,我想说,真... 查看详情

machinelearning学习笔记———modelandcostfunction

ModelandCostFunctionModelRepresentation|模型表示Toestablishnotationforfutureuse,we’lluse(x^{(i)})todenotethe“input”variables(livingareainthisexample),alsocalledinputfeatures,and(y^{(i)})todenotethe“ou 查看详情

导航-机器学习(machinelearning)

1逻辑回归2决策树3支持向量机4提升方法5聚类准备在近期复习巩固一下基本机器学期算法的原理和实现,写一些笔记,方便以后自己回顾。1逻辑回归(1)理论推导(2)python实现 查看详情