监督学习(supervised learning)

假设我们有一个数据集(dataset),给出居住面积和房价的关系如下:

我们以居住面积为横坐标,房价为纵坐标,组成数据点,如(2104, 400),并把这些数据点描到坐标系中,如下:

由这些数据,我们怎么才能预测(predict)其他房价呢?其中房价作为居住面积的函数。

为了方便描述,我们用x(i)表示输入变量(即居住面积),也叫做输入特征(features);同时,用y(i)表示输出(即房价),也叫做目标(target)变量。有序对   (x(i), y(i))叫做一个训练样本点(training example);我们用来学习(learn)的数据集,包含m个样本点,也叫做训练集(training set),表示为{(x(i), y(i)); i=1,...,m}。其中上标(i)表示样本点在训练集中的索引,跟指数没关系。另外,我们用X表示输入变量的取值空间,Y表示输出的取值空间,在本文中,X=Y=R。

我们的目的就是学习出一个函数h: X->Y,使得h(x)能够很好的预测y,即|h(x)-y|越小越好。由于历史原因,函数h也叫做假设(hypothesis)。整个流程形象化描述下:

当我们想要预测的目标变量是连续的(continuous),这种学习问题被称之为回归(regression);而离散(discrete)时,则叫做分类(classification)。

线性回归(linear regression)

为了让上面的问题更加一般化,假设我们除了居住面积和房价,还知道房间个数,如下:

这样,x就是2维空间R2中的向量。x1(i)表示训练集中第i个房子的居住面积,而x2(i)就是它的房间个数。

学习之前,我们需要先决定函数h的表达式。最原始的想法就是,用x的线性函数来拟合(approximate)y。如下:

其中,θ是参数,也叫权值(weight)。在不会引起误解的情况下,我们通常把hθ(x)中的下标θ去掉,简单表示为h(x)。进一步地,我们令x0=1(即截距),使得:

上式中,我们把θ和x都看做向量,这里其实是行向量,θT是θ的转置(即对应的列向量)。这里之所以要转成列向量,是因为要把两个向量的数量积看做是两个矩阵相乘。

有了函数表达式,接下来就是要利用训练集把参数θ学习出来。为此,我们定义代价函数(cost function)如下:

为什么这样定义代价函数呢?如果以前看过最小二乘法(least-squres),就会很熟悉上式。

LMS(Least Mean Square,最小均方)算法

我们需要找出使得代价J(θ)最小的θ。为此,我们估算一个θ的初始值,并不断改变它使得J(θ)更小,直到J(θ)不能再小。具体做法是利用梯度下降(gradient descent)算法,给θ赋一个初始值,然后按照如下表达式不断更新:

上式更新对θ向量的每个分量θj(j=0,...,n)是同时进行的,其中α叫做学习率(learning rate)。 接下来,我们需要解出右边的偏导(partial derivative),不失一般性地,先假设训练集中只有一个样本(x, y),这样,我们就可以忽略J(θ)中的累加运算,得到如下计算过程,这里需要熟悉导数运算法则,另外,求导的关键在于,对谁求导,谁就是变量,其他都是常量:

把计算后的偏导代回原式,就可以得到如下更新规则(即LMS更新规则),也叫Widrow-Hoff学习规则:

从上式更新规则可以看出,θj的更新增量α(y(i)-hθ(x(i)))xj(i)跟y(i)-hθ(x(i))成正比。通俗来讲就是,当预测值hθ(x(i))接近真实值y(i),即误差(error)越小时,参数θj需要做出的更新越小,反之同理。上述更新规则是通过一个样本计算出来的,推广到m个样本呢?有两种方法,第一种就是把之前的累加运算补回来(因为和的导数等于导数的和),如下:

批量梯度下降(batch gradient descent)。

标准方程(normal equations)

矩阵微分(matrix derivatives)

分类和逻辑回归

接下来,我们看看二元分类(binary classification)问题,即预测值y=0或1。0也叫负类(negative class),1则叫正类(positive class)。二元分类中用到的原理同样适用于多元分类。另外,样本(x(i), y(i))中的y(i)也叫做类标(label)。

sigmoid函数

广义线性模型(generalized linear models)

softmax回归

参数拟合(parameter fitting),对数似然(log-likelihood)

原文链接:

http://cs229.stanford.edu/notes/cs229-notes1.pdf

吴恩达机器学习CS229课程笔记学习的更多相关文章

  1. ML:吴恩达 机器学习 课程笔记(Week1~2)

    吴恩达(Andrew Ng)机器学习课程:课程主页 由于博客编辑器有些不顺手,所有的课程笔记将全部以手写照片形式上传.有机会将在之后上传课程中各个ML算法实现的Octave版本. Linear Reg ...

  2. [吴恩达机器学习笔记]12支持向量机5SVM参数细节

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...

  3. [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...

  4. [吴恩达机器学习笔记]12支持向量机2 SVM的正则化参数和决策间距

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.2 大间距的直观理解- Large Margin I ...

  5. [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...

  6. [吴恩达机器学习笔记]11机器学习系统设计3-4/查全率/查准率/F1分数

    11. 机器学习系统的设计 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 11.3 偏斜类的误差度量 Error Metr ...

  7. 吴恩达机器学习笔记22-正则化逻辑回归模型(Regularized Logistic Regression)

    针对逻辑回归问题,我们在之前的课程已经学习过两种优化算法:我们首先学习了使用梯度下降法来优化代价函数

  8. Coursera 吴恩达 机器学习 学习笔记

    Week 1 机器学习笔记(一)基本概念与单变量线性回归 Week 2   机器学习笔记(二)多元线性回归 机器学习作业(一)线性回归——Matlab实现 机器学习作业(一)线性回归——Python( ...

  9. ML:吴恩达 机器学习 课程笔记(Week7~8)

    Support Vector Machines Unsupervised Learning Dimensionality Reduction

随机推荐

  1. Linux下编译、链接和装载

    ——<程序员的自我修养>读书笔记 编译过程 在Linux下使用GCC将源码编译成可执行文件的过程可以分解为4个步骤,分别是预处理(Prepressing).编译(Compilation). ...

  2. java中int和Integer比较大小

    Integer是int的封装对象,两个对象==比较的是栈的值 Integer a = new Integer(1); Integer b = new Integer(1); a与b存的是Integer ...

  3. [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)

    [js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...

  4. 【读书笔记】iOS-应用内购买

    Store Kit框架是一个应用内支付引擎.通过这个框架,付费应用可以实现用户付费购买内容的功能(比如为了获取额外的内容) 如果你发现Store Kit框架很难用,而且应用内付款不需要服务器端的支持, ...

  5. 用PRODUCT_COPY_FILES拷贝文件夹

    拷贝文件PRODUCT_COPY_FILES += device/qcom/msm8909/media/media_profiles_8909.xml:system/etc/media_profile ...

  6. drupal 2006 mysql server has gone away

    在开发一个cms drupal网站时遇到了如上图的错误,几经百度谷歌,都一致说需要修改mysql的配置 max_allowed_packet参数,但是由于我买的是虚拟主机,并没有权限修改. 本来已经放 ...

  7. dmesg七种用法

    dmesg 命令的使用范例 ‘dmesg’命令设备故障的诊断是非常重要的.在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息.‘dmesg’命令在多数 ...

  8. JMeter—系统性能分析思路(十三)

    参考<全栈性能测试修炼宝典JMeter实战>第九章 性能监控诊断 第二节 系统性能分析思路和第三节 定位分析 系统在工作负载中的性能受到许多因素影响,处理器速度.内存容量.网络或磁盘I/O ...

  9. 洗礼灵魂,修炼python(34)--面向对象编程(4)—继承

    前面已经说到面向对象编程有封装,继承,多态三大特性,那么其中的继承则很重要,可以直接单独的拿出来解析 继承 1.什么是继承: 字面意是子女继承父母的家产或者特性等.而在编程里继承是指子类继承父类(基类 ...

  10. rbac models

    class Permission(models.Model): """ 权限表 """ perm_name = models.CharFie ...