机器学习-- Logistic回归 Logistic Regression
转载自:http://blog.csdn.net/linuxcumt/article/details/8572746
1.假设随Tumor Size变化,预测病人的肿瘤是恶性(malignant)还是良性(benign)的情况。
给出8个数据如下:
2.假设进行linear regression得到的hypothesis线性方程如上图中粉线所示,则可以确定一个threshold:0.5进行predict
y=1, if h(x)>=0.5
y=0, if h(x)<0.5
即malignant=0.5的点投影下来,其右边的点预测y=1;左边预测y=0;则能够很好地进行分类。
那么,如果数据集是这样的呢?
这种情况下,假设linear regression预测为蓝线,那么由0.5的boundary得到的线性方程中,不能很好地进行分类(5,6个点均不能满足)。因为不满足
y=1, h(x)>0.5
y=0, h(x)<=0.5
============Hypothesis Representation==================
1.logistic regression model
注意:
========================Decision Boundary =================================
1.logistic regression model的深入解释
2.所谓Decision Boundary就是能够将所有数据点进行很好地分类的h(x)边界。
如下图所示,假设形如h(x)=g(θ0+θ1x1+θ2x2)的hypothesis参数θ=[-3,1,1]T,
则有
predict Y=1, if -3+x1+x2>=0
predict Y=0, if -3+x1+x2<0
刚好能够将图中所示数据集进行很好地分类
3.小问题,注意,所有逻辑回归都这么处理。参见(1.logistic regression model的深入解释)
4.除了线性boundary还有非线性decision boundaries,比如
。训练集的作用
就是找这些参数θ。但这个曲线该怎么找??由此可见,logistic
regression 的
boundary可以是任意的曲线。而所谓的线性可分、不可分实则指的就是
boundary是否为线性或非线性(参数),而不是logistic函数自身。下图中,
进行分类的decision boundary就是一个半径为1的圆,如图所示:
======================Cost Function=====================
1.问题提出,如何求参数θ?但这个曲线该怎么找??
2.对于logistic regression其COST函数不能像线性回归的最小二乘那样
选择。因为其 logistic是非线性函数。非要这样取的话,COST函数是非凸
函数,见下图。无法用梯度下降求极值。
3.logistic
regression其COST函数的定义。在给定了h(θ,x),y后,其COST函数
值即可确定。注意:h(θ,x)为logistic曲线,其取值范围在0-1之间。
4.当h(θ,x)接近1,而y=1,表明分类正确,故不“惩罚”,COST=0;
反之,h(θ,x)接近0,而y=1,,表明分类错误,故大大“惩罚”,COST=无限大;
同理对y=0
5.小题目
===========Simplified
Cost Function and Gradient Descent==============
1.求出最小J(θ)时的θ,然后计算h(θ,x),若其>=0.5(或θTx>=0),则y=1;否则y=0.
参考logistic regression model
2.不管h(x)的表达式是线性的还是logistic
regression model, 都能得到如下的参数更新过程。
写的详细些:
3.归一化(Feature scaling)同样会使得logistic regression 跑的更快。
=============Advanced Optimization ==================
1.除了gradient descent 方法之外,我们还有很多方法可以使用,如下图所示,
左边是另外三种方法,右边是这三种方法共同的优缺点,无需选择学习率α,更快,
但是更复杂。
2.代码小例
3.实际matlab中已经帮我们实现好了一些优化参数θ的方法,那么这里我们需要完成的事情
只是写好cost function,并告诉系统,要用哪个方法进行最优化参数。比如我们用‘GradObj’
, Use the GradObj option to specify that FUN also returns a second output argument
G that is the partial derivatives of the function df/dX, at the point X.
函数costFunction, 定义jVal=J(θ)和对两个θ的gradient:
- function [ jVal,gradient ] = costFunction( theta )
- %COSTFUNCTION Summary of this function goes here
- % Detailed explanation goes here
- jVal= (theta(1)-5)^2+(theta(2)-5)^2;
- gradient = zeros(2,1);
- %code to compute derivative to theta
- gradient(1) = 2 * (theta(1)-5);
- gradient(2) = 2 * (theta(2)-5);
- end
编写函数Gradient_descent,进行参数优化
- function [optTheta,functionVal,exitFlag]=Gradient_descent( )
- %GRADIENT_DESCENT Summary of this function goes here
- % Detailed explanation goes here
- options = optimset('GradObj','on','MaxIter',100);
- initialTheta = zeros(2,1)
- [optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options);
- end
matlab主窗口中调用,得到优化厚的参数(θ1,θ2)=(5,5),即hθ(x)=θ1x1+θ2x2=5*x1+5*x2
- [optTheta,functionVal,exitFlag] = Gradient_descent()
- initialTheta =
- 0
- 0
- Local minimum found.
- Optimization completed because the size of the gradient is less than
- the default value of the function tolerance.
- <stopping criteria details>
- optTheta =
- 5
- 5
- functionVal =
- 0
- exitFlag =
- 1
最后得到的结果显示出优化参数optTheta=[5,5], functionVal = costFunction(迭代后) = 0
===========Multiclass Classification: One-vs-all =================
1.所谓one-vs-all method就是将binary分类的方法应用到多类分类中。
比如我想分成K类,那么就将其中一类作为positive,另(k-1)合起来作为negative,
这样进行K个h(θ)的参数优化,每次得到的一个hθ(x)是指给定θ和x,它属于positive的
类的概率。按照上面这种方法,给定一个输入向量x,获得最大hθ(x)的类就是
x所分到的类。
机器学习-- Logistic回归 Logistic Regression的更多相关文章
- 【机器学习实战】第5章 Logistic回归
第5章 Logistic回归 Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 ...
- Logistic回归(逻辑回归)和softmax回归
一.Logistic回归 Logistic回归(Logistic Regression,简称LR)是一种常用的处理二类分类问题的模型. 在二类分类问题中,把因变量y可能属于的两个类分别称为负类和正类, ...
- Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率
(手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE 1.Logistic回归 Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种).如 ...
- Logistic回归模型和Python实现
回归分析是研究变量之间定量关系的一种统计学方法,具有广泛的应用. Logistic回归模型 线性回归 先从线性回归模型开始,线性回归是最基本的回归模型,它使用线性函数描述两个变量之间的关系,将连续或离 ...
- 《转》Logistic回归 多分类问题的推广算法--Softmax回归
转自http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 简介 在本节中,我们介绍Softmax回归模型,该模型是log ...
- 机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
- 机器学习入门11 - 逻辑回归 (Logistic Regression)
原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...
- Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!
原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...
- 机器学习 (三) 逻辑回归 Logistic Regression
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
随机推荐
- 百度站长针对SEO人员关系的问题的一些解答
自然排名是全部由机器完成还是存在人工干预? 夫唯:第一个就是说经常好不容易找到了一些新的想法,用我们这些草根的话讲找到了百度的漏洞,好不容易排名上去了,过两天就会波动.有些人就怀疑说在百度的整体算法里 ...
- vue学习--父子组件通讯
this.$parent // 子组件访问父组件 this.$root // 访问根实例 this.$children // 父组件的所有子元素 *一 ...
- scrapy--cnblogs
之前一直在学习关于滑块验证码的爬虫知识,最接近的当属于模拟人的行为进行鼠标移动,登录页面之后在获取了,由于一直找不到滑块验证码的原图,无法通过openCV获取当前滑块所需要移动的距离. 1.机智如我开 ...
- 微信小程序相关
https://www.cnblogs.com/shenzikun1314/p/7805168.html
- 使用selenium模拟登录知乎
网上流传着许多抓取知乎数据的代码,抓取它的数据有一个问题一定绕不过去,那就是模拟登录,今天我们就来聊聊知乎的模拟登录. 获取知乎内容的方法有两种,一种是使用request,想办法携带cookies等必 ...
- python flask学习第2天 URL中两种方式传参
新创建项目 自己写个url映射到自定义的视图函数 在url中传递参数 app.py from flask import Flask app = Flask(__name__) @app.route ...
- POJ:3045-Cow Acrobats
Cow Acrobats Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6253 Accepted: 2345 Descript ...
- Android面试收集录14 Android进程间通信方式
一.使用 Intent Activity,Service,Receiver 都支持在 Intent 中传递 Bundle 数据,而 Bundle 实现了 Parcelable 接口,可以在不同的进程间 ...
- svn git 导入本地文件到远程服务器 import
以前,想要把本地的一个文件上传到svn 或者git 服务器的时候,都要先把服务器上的文件夹down 下来,然后把要添加的文件添加进去,然后提交. 想想都麻烦. 现在我们用import 命令就可以做到, ...
- 解决 ld: library not found for -lPods的问题
现在打开有pods建好的workspace文件,尝试编译,会报ld: library not found for -lPods错误,原因就是工程里面的设置项覆盖了pods中xcconfig中的设置.解 ...