转载自: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:

[plain] view
plain
copy

  1. function [ jVal,gradient ] = costFunction( theta )
  2. %COSTFUNCTION Summary of this function goes here
  3. %   Detailed explanation goes here
  4. jVal= (theta(1)-5)^2+(theta(2)-5)^2;
  5. gradient = zeros(2,1);
  6. %code to compute derivative to theta
  7. gradient(1) = 2 * (theta(1)-5);
  8. gradient(2) = 2 * (theta(2)-5);
  9. end

编写函数Gradient_descent,进行参数优化

[plain] view
plain
copy

  1. function [optTheta,functionVal,exitFlag]=Gradient_descent( )
  2. %GRADIENT_DESCENT Summary of this function goes here
  3. %   Detailed explanation goes here
  4. options = optimset('GradObj','on','MaxIter',100);
  5. initialTheta = zeros(2,1)
  6. [optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options);
  7. end

matlab主窗口中调用,得到优化厚的参数(θ1,θ2)=(5,5),即hθ(x)=θ1x1+θ2x2=5*x1+5*x2

[plain] view
plain
copy

  1. [optTheta,functionVal,exitFlag] = Gradient_descent()
  2. initialTheta =
  3. 0
  4. 0
  5. Local minimum found.
  6. Optimization completed because the size of the gradient is less than
  7. the default value of the function tolerance.
  8. <stopping criteria details>
  9. optTheta =
  10. 5
  11. 5
  12. functionVal =
  13. 0
  14. exitFlag =
  15. 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的更多相关文章

  1. 【机器学习实战】第5章 Logistic回归

    第5章 Logistic回归 Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 ...

  2. Logistic回归(逻辑回归)和softmax回归

    一.Logistic回归 Logistic回归(Logistic Regression,简称LR)是一种常用的处理二类分类问题的模型. 在二类分类问题中,把因变量y可能属于的两个类分别称为负类和正类, ...

  3. Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率

    (手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE 1.Logistic回归 Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种).如 ...

  4. Logistic回归模型和Python实现

    回归分析是研究变量之间定量关系的一种统计学方法,具有广泛的应用. Logistic回归模型 线性回归 先从线性回归模型开始,线性回归是最基本的回归模型,它使用线性函数描述两个变量之间的关系,将连续或离 ...

  5. 《转》Logistic回归 多分类问题的推广算法--Softmax回归

    转自http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 简介 在本节中,我们介绍Softmax回归模型,该模型是log ...

  6. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  7. 机器学习入门11 - 逻辑回归 (Logistic Regression)

    原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...

  8. 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 ...

  9. 机器学习 (三) 逻辑回归 Logistic Regression

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

随机推荐

  1. 百度站长针对SEO人员关系的问题的一些解答

    自然排名是全部由机器完成还是存在人工干预? 夫唯:第一个就是说经常好不容易找到了一些新的想法,用我们这些草根的话讲找到了百度的漏洞,好不容易排名上去了,过两天就会波动.有些人就怀疑说在百度的整体算法里 ...

  2. vue学习--父子组件通讯

    this.$parent        // 子组件访问父组件 this.$root            // 访问根实例 this.$children        // 父组件的所有子元素 *一 ...

  3. scrapy--cnblogs

    之前一直在学习关于滑块验证码的爬虫知识,最接近的当属于模拟人的行为进行鼠标移动,登录页面之后在获取了,由于一直找不到滑块验证码的原图,无法通过openCV获取当前滑块所需要移动的距离. 1.机智如我开 ...

  4. 微信小程序相关

    https://www.cnblogs.com/shenzikun1314/p/7805168.html

  5. 使用selenium模拟登录知乎

    网上流传着许多抓取知乎数据的代码,抓取它的数据有一个问题一定绕不过去,那就是模拟登录,今天我们就来聊聊知乎的模拟登录. 获取知乎内容的方法有两种,一种是使用request,想办法携带cookies等必 ...

  6. python flask学习第2天 URL中两种方式传参

    新创建项目   自己写个url映射到自定义的视图函数 在url中传递参数 app.py from flask import Flask app = Flask(__name__) @app.route ...

  7. POJ:3045-Cow Acrobats

    Cow Acrobats Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6253 Accepted: 2345 Descript ...

  8. Android面试收集录14 Android进程间通信方式

    一.使用 Intent Activity,Service,Receiver 都支持在 Intent 中传递 Bundle 数据,而 Bundle 实现了 Parcelable 接口,可以在不同的进程间 ...

  9. svn git 导入本地文件到远程服务器 import

    以前,想要把本地的一个文件上传到svn 或者git 服务器的时候,都要先把服务器上的文件夹down 下来,然后把要添加的文件添加进去,然后提交. 想想都麻烦. 现在我们用import 命令就可以做到, ...

  10. 解决 ld: library not found for -lPods的问题

    现在打开有pods建好的workspace文件,尝试编译,会报ld: library not found for -lPods错误,原因就是工程里面的设置项覆盖了pods中xcconfig中的设置.解 ...