首页 > 其他分享 >机器学习(二)

机器学习(二)

时间:2022-09-03 10:56:11浏览次数:49  
标签:box 0s 机器 学习 amp em 0px border

当预测的变量y是一个离散值的情况下的分类问题

在分类问题中分为正类和负类,通常情况下认为没有某样东西是父类

二元分类算法及多元分类算法

使用线性回归算法对数据进行拟合,可能会得到一个假设,如果想要做出预测,对分类器输出的阈值设定,这里的阈值是一个纵坐标,分类问题可以设置一个阈值,当超过这个阈值的时候为1,低于这个阈值时为0

不推荐将线性回归用于分类问题

逻辑回归算法(分类算法的一种)

  希望分类器的输出值在0和1之间

假设这是使用线性回归时的假设形式

 

 

将h(x)转换为sigmoid函数为

 

 

 

 

 sigmoid函数(S型函数)

Sigmoid函数的数学形式是:

  <span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 6.773em; height: 0px; font-size: 19.2px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(0.68em, 1006.77em, 3.128em, -999.997em); top: -2.185em; left: 0em;"><span id="MathJax-Span-2" class="mrow" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span id="MathJax-Span-3" class="mi" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; font-family: MathJax_Math-italic;">f(x)=11+e−x

 

 

 

sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。Sigmoid函数的值域范围限制在(0,1)之间,可以和分类联系1起来

Sigmoid函数的导数是其本身的函数,即<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 9.794em; height: 0px; font-size: 19.2px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(1.253em, 1009.69em, 2.607em, -999.997em); top: -2.185em; left: 0em;"><span id="MathJax-Span-23" class="mrow" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span id="MathJax-Span-24" class="msup" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 0.888em; height: 0px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(3.128em, 1000.58em, 4.378em, -999.997em); top: -4.008em; left: 0em;"><span id="MathJax-Span-25" class="mi" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; font-family: MathJax_Math-italic;">f′(x)=f(x)(1−f(x))

<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 6.201em; height: 0px; font-size: 19.2px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(0.68em, 1006.2em, 3.232em, -999.997em); top: -2.185em; left: 0em;"><span id="MathJax-Span-481" class="mrow" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span id="MathJax-Span-482" class="mi" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; font-family: MathJax_Math-italic;">函数形式:p=11+e−η(θ)

    

Sigmoid函数的数学形式是:

 

 

如何拟合逻辑回归模型的参数θ(定义用来拟合参数的优化目标或者是代价函数)

 

对于给定的训练集如何选择或者如何拟合参数θ,之前建立线性回归模型时,使用了这个代价函数,把这个写成不同的形式

 

 ,将其替换成其他的形式,如果将上标去掉的话,可以看到这个地方是相当于1/2的平方误差,输出是预测值h(x),实际标签是y的情况下的误差的平方。使用这个代价函数,会变成参数θ的非凸函数

 

 因为h(x)=1/(1+e^(-θ^Tx)是很非线性的函数,所以显示出来的函数图像有很多的局部最优解,如果使用梯度下降法寻找最优解的话会很麻烦,这样是一个非凸函数,我们想要的是一个凸函数,可以保证梯度下降法可以收敛到该函数的全局最小值,我们需要寻找一个其他的代价函数使得可以是凸函数

 

 这个是用在逻辑回归上的

 

 

 

y轴相当于是cost值

 可以看到y=1时,预测的h(x)的值也为1,那么代价值就为0,当h(x)趋向于0时,代价函数就会激增,这就相当于我们对病人说,你有一个恶性肿瘤的概率是0,但是如果这个人本身的结果确定为恶性肿瘤,那么我们会用非常大的代价惩罚这个算法;

当y=0时,预测的h(x)为1是同样会付出很大的代价

 cost是用来衡量模型和实际的偏差,所选的代价函数会给我们一个凸优化问题整体的代价函数,没有局部最优值(凸函数其实在国内的定义时凹函数)

 

将单训练集的代价函数的理念发展,变为整个训练集的代价函数的定义

 

 

 逻辑回归的代价函数,J(θ是整体的代价函数),将cost函数的两个式子合并为一个等式

cost(h(x),y)= -ylogh(x)-(1-y)log(1-h(x))

y只有两个结果0或者1,在不同的结果下所得到的的cost的值也是不一样的,正好可以对应上方的结果

用它自己减去

 

 找出让J(θ)取得最小值的参数θ(可能会得到某组参数θ),之后为了得到一个预测可以给我们一个新的x,可以用拟合训练样本的参数θ输出预测的值

 

 如果想要最小化J(θ)的话,我们可以使用梯度下降法,去反复更新每一个参数

 

这里还有一个1/m在α前面

 

 如果有n个特征就有一个θ的向量组θ1,θ2,。。。。θn,同时更新所有θ的值,这里和线性回归的梯度下降法一样,那么逻辑回归和梯度下降法的区别在于,在逻辑回归中这个式子的定义发生了变化h(x)是不同的

在线性回归中提到了监控梯度下降法以确保其收敛,将其同样用在逻辑回归中,监测梯度下降使用向量化或者for循环,逐步更新θ=θ0.。。θn的值

同样的特征缩放也一样适用于逻辑回归算法

 

 

 

使用逻辑回归解决多类别分类问题(‘一对多’的分类算法)

多类别分类:邮件的tag。家人,朋友,工作或者兴趣,这样的话y=1,或y=2,或y=3进行类别分类表示

 

 

 

包含三个类别,转换为三个独立的二元分类问题

先从三角形代表的类别1开始,创建一个新的伪训练集,类别2和类别3设定为一样的负类,类别1设定为正类,拟合一个分类器h^1(x),将三角形的值认定为1,圆形认定为0,训练一个标准的逻辑回归分类器,我们可以根据这个得到一个判定边界,其他的做同样的处理

也就是我们做出三个分类器,让i,=1,2,3,

 

 拟合出h^i(x),给定x和θ时,估计出y=i的概率,h(x)估计出的是一个概率,然后选择最大的h(x),也就是可行度最高的,我们预测y就是那个值

 

标签:box,0s,机器,学习,amp,em,0px,border
From: https://www.cnblogs.com/xxsadd/p/16641364.html

相关文章

  • springboot学习
    springboot学习官方文档:https://spring.io/projects/spring-boot1、简介1.1、什么是spirngboot?springboot在spring的基础之上,搭建起来的框架,能够帮助我们整合市面上......
  • 2022-2023-1 20211319蓝宇 《信息安全专业导论》第一周学习总结
    作业信息|这个作业属于哪个课程|2020-2021-1信息安全专业导论(https://edu.cnblogs.com/campus/besti/2020-2021-1fois))||这个作业要求在哪里|[2020-2021-1信息安全专业......
  • 2022-2023-1 20221304 《计算机基础与程序设计》第一周学习总结
    作业信息班级:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01作业目标:快速浏览教材作业正文:ht......
  • Electron学习(一)
    1.什么是Electron:Electron是使用HTML、JavaScript和CSS构建的跨平台桌面应用程序。2.特点及优势:web技术:基于Chromium、Node.js跨平台:Electron兼容Mac、Windows和L......
  • 【基础整理】Mapping representation 机器人所用地图种类及相关介绍
    参考与前言本文主要介绍建图Mapping方面的一些基础知识介绍与相关下游任务使用涉及知识较为基础,SLAM大佬们可以提前退出了主要针对应用为移动机器人与物流无人驾驶......
  • 2022-2023-1 20221304《计算机基础与程序设计》第一周学习总结
    2022-2023-120221304《计算机基础与程序设计》第一周学习总结作业信息班级:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/......
  • JavaScript学习
    一、什么是JavaScriptJavaScript世界上最流行的脚本语言一个合格的后端人员,必须精通JavaScript二、快速入门2.1、引入JavaScript内部引入<!DOCTYPEhtml><htmlla......
  • Dubbo学习
    Dubbo前言1.1大型互联网项目架构目标1.2集群和分布式概念集群:很多“人”一起,干一样的事。一个业务模块,部署在多台服务器上。分布式:很多“人”一起,干不一......
  • Flask 学习-41.Flask-RESTPlus 入门到放弃
    前言Flask-restfull是flask框架开发接口的一个框架,Flask-RESTPlus是Flask-restfull升级版,功能做了一些优化,主要是可以生成swagger在线文档了。环境准备先安装Flask......
  • 2022-08-31 卢睿 学习心得
    目录1.JSPJSP表达式JSP声明片段JSP的指令标识JSP标签内置标签JSTL标签自定义标签JSP的作用域2.EL表达式EL表达式的内置作用域对象EL表达式的缺陷面试题JSP和Servlet的区别i......