前言:

本节来练习下logistic regression相关内容,参考的资料为网页:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex4/ex4.html。这里给出的训练样本的特征为80个学生的两门功课的分数,样本值为对应的同学是否允许被上大学,如果是允许的话则用’1’表示,否则不允许就用’0’表示,这是一个典型的二分类问题。在此问题中,给出的80个样本中正负样本各占40个。而这节采用的是logistic regression来求解,该求解后的结果其实是一个概率值,当然通过与0.5比较就可以变成一个二分类问题了。

实验基础:

在logistic regression问题中,logistic函数表达式如下:

这样做的好处是可以把输出结果压缩到0~1之间。而在logistic回归问题中的损失函数与线性回归中的损失函数不同,这里定义的为:

如果采用牛顿法来求解回归方程中的参数,则参数的迭代公式为:

其中一阶导函数和hessian矩阵表达式如下:

当然了,在编程的时候为了避免使用for循环,而应该直接使用这些公式的矢量表达式(具体的见程序内容)。

一些matlab函数:

find:

是找到的一个向量,其结果是find函数括号值为真时的值的下标编号。

inline:

构造一个内嵌的函数,很类似于我们在草稿纸上写的数学推导公式一样。参数一般用单引号弄起来,里面就是函数的表达式,如果有多个参数,则后面用单引号隔开一一说明。比如:g = inline('sin(alpha*x)','x','alpha'),则该二元函数是g(x,alpha) = sin(alpha*x)。

实验结果:

训练样本的分布图以及所学习到的分类界面曲线:

损失函数值和迭代次数之间的曲线:

最终输出的结果:

可以看出当一个小孩的第一门功课为20分,第二门功课为80分时,这个小孩不允许上大学的概率为0.6680,因此如果作为二分类的话,就说明该小孩不会被允许上大学。

实验代码(原网页提供):

  1. % Exercise 4 -- Logistic Regression
  2.  
  3. clear all; close all; clc
  4.  
  5. x = load('ex4x.dat');
  6. y = load('ex4y.dat');
  7.  
  8. [m, n] = size(x);
  9.  
  10. % Add intercept term to x
  11. x = [ones(m, 1), x];
  12.  
  13. % Plot the training data
  14. % Use different markers for positives and negatives
  15. figure
  16. pos = find(y); neg = find(y == 0);%find是找到的一个向量,其结果是find函数括号值为真时的值的编号
  17. plot(x(pos, 2), x(pos,3), '+')
  18. hold on
  19. plot(x(neg, 2), x(neg, 3), 'o')
  20. hold on
  21. xlabel('Exam 1 score')
  22. ylabel('Exam 2 score')
  23.  
  24. % Initialize fitting parameters
  25. theta = zeros(n+1, 1);
  26.  
  27. % Define the sigmoid function
  28. g = inline('1.0 ./ (1.0 + exp(-z))');
  29.  
  30. % Newton's method
  31. MAX_ITR = 7;
  32. J = zeros(MAX_ITR, 1);
  33.  
  34. for i = 1:MAX_ITR
  35. % Calculate the hypothesis function
  36. z = x * theta;
  37. h = g(z);%转换成logistic函数
  38.  
  39. % Calculate gradient and hessian.
  40. % The formulas below are equivalent to the summation formulas
  41. % given in the lecture videos.
  42. grad = (1/m).*x' * (h-y);%梯度的矢量表示法
  43. H = (1/m).*x' * diag(h) * diag(1-h) * x;%hessian矩阵的矢量表示法
  44.  
  45. % Calculate J (for testing convergence)
  46. J(i) =(1/m)*sum(-y.*log(h) - (1-y).*log(1-h));%损失函数的矢量表示法
  47.  
  48. theta = theta - H\grad;%是这样子的吗?
  49. end
  50. % Display theta
  51. theta
  52.  
  53. % Calculate the probability that a student with
  54. % Score 20 on exam 1 and score 80 on exam 2
  55. % will not be admitted
  56. prob = 1 - g([1, 20, 80]*theta)
  57.  
  58. %画出分界面
  59. % Plot Newton's method result
  60. % Only need 2 points to define a line, so choose two endpoints
  61. plot_x = [min(x(:,2))-2, max(x(:,2))+2];
  62. % Calculate the decision boundary lineplot_y的计算公式见博客下面的评论。
  63. plot_y = (-1./theta(3)).*(theta(2).*plot_x +theta(1));
  64. plot(plot_x, plot_y)
  65. legend('Admitted', 'Not admitted', 'Decision Boundary')
  66. hold off
  67.  
  68. % Plot J
  69. figure
  70. plot(0:MAX_ITR-1, J, 'o--', 'MarkerFaceColor', 'r', 'MarkerSize', 8)
  71. xlabel('Iteration'); ylabel('J')
  72. % Display J
  73. J

参考资料:

http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex4/ex4.html

作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 欢迎转载或分享,但请务必声明文章出处。

转载 Deep learning:四(logistic regression练习)的更多相关文章

  1. 转载 Deep learning:三(Multivariance Linear Regression练习)

    前言: 本文主要是来练习多变量线性回归问题(其实本文也就3个变量),参考资料见网页:http://openclassroom.stanford.edu/MainFolder/DocumentPage. ...

  2. 转载 Deep learning:六(regularized logistic回归练习)

    前言: 在上一讲Deep learning:五(regularized线性回归练习)中已经介绍了regularization项在线性回归问题中的应用,这节主要是练习regularization项在lo ...

  3. [转载]Deep Learning(深度学习)学习笔记整理

    转载自:http://blog.csdn.net/zouxy09/article/details/8775360 感谢原作者:zouxy09@qq.com 八.Deep learning训练过程 8. ...

  4. 转载 deep learning:八(SparseCoding稀疏编码)

    转载 http://blog.sina.com.cn/s/blog_4a1853330102v0mr.html Sparse coding: 本节将简单介绍下sparse coding(稀疏编码),因 ...

  5. machine learning 之 logistic regression

    整理自Adrew Ng 的 machine learning课程week3 目录: 二分类问题 模型表示 decision boundary 损失函数 多分类问题 过拟合问题和正则化 什么是过拟合 如 ...

  6. CheeseZH: Stanford University: Machine Learning Ex2:Logistic Regression

    1. Sigmoid Function In Logisttic Regression, the hypothesis is defined as: where function g is the s ...

  7. (四)Logistic Regression

    1 线性回归 回归就是对已知公式的未知参数进行估计.线性回归就是对于多维空间中的样本点,用特征的线性组合去拟合空间中点的分布和轨迹,比如已知公式是y=a∗x+b,未知参数是a和b,利用多真实的(x,y ...

  8. 转载 Deep learning:二(linear regression练习)

    前言 本文是多元线性回归的练习,这里练习的是最简单的二元线性回归,参考斯坦福大学的教学网http://openclassroom.stanford.edu/MainFolder/DocumentPag ...

  9. 转载 Deep learning:一(基础知识_1)

    前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下m ...

随机推荐

  1. LeetCode OJ 59. Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  2. table边框1px

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. vc中主线程等待子线程退出的方法

    VC线程同步,在子线程中等待另一子线程结束,通过WaitForSingleObject可以实现,但是如果在主线程中等待子线程结束,这个函数是无法完成要求的,因为它会造成主线程挂起,导致程序死掉.我们可 ...

  4. 安装 sublime package control

    import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_p ...

  5. NOIP2005-普及组复赛-第一题-陶陶摘苹果

    题目描述 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...

  6. javascript动画效果之多物体透明度

    html和css 仅为布局,需要注意的是filter对应的是老版本的ie浏览器透明度,而opacity对应的其他浏览器的透明度 filter: alpha(opacity: 50); opacity: ...

  7. 练习3:修改withdraw 方法

    练习目标-使用有返回值的方法:在本练习里,将修改withdraw方法以返回一个布尔值来指示交易是否成功. 任务 1.修改Account类 a.修改deposit 方法返回true(意味所有存款是成功的 ...

  8. 虚拟机装的XP,无法上网,因为没有安装网卡驱动,怎么解决

    本帖可以解决2个问题: 问题1. 虚拟机装的XP,无法上网,因为没有安装网卡驱动,怎么解决 问题2. 怎么往Oracle VM VirtualBox里传输文件??????? 步骤: 一.在虚拟机的左上 ...

  9. 判断pc浏览器和手机浏览器方法

    一 //平台.设备和操作系统        var system = {            win: false,            mac: false,            xll: f ...

  10. mongoDB4--mongoDB的增删改查

    MongoDb基本操作之增删改查我们知道传统关系型数据库的最常用操作就是"增加/删除/修改/查询",也就是传说中的CRUD(create/remove/updte/delete). ...