
Andrew NG机器学习笔记
文章平均质量分 68
RookieFCB
这个作者很懒,什么都没留下…
展开
-
CS229学习笔记(1)
线性回归我们在上一节房屋售价数据集的基础上,增添房间数量这一特征变量,如下图所示: 因此,特征变量x" role="presentation" style="position: relative;">xxx变为了维度为2的向量,记作x∈R2" role="presentation" style="position: relative;">x∈R2x∈R2x \in原创 2018-02-07 14:18:36 · 310 阅读 · 0 评论 -
降维(二)
主成分分析问题公式主成分分析问题:将n维数据降为k维找到向量u(1), u(2), ···, u(k)使得其投影误差最小化对此,我们引入主成分分析法(Principal Component Analysis,简称PCA),该方法也是常见的降维方法。主成分分析法(PCA):寻找一个低维的面,使得投影误差的平方和最小化。注:别因为上图类似于线性回归,就认为主成分分析法与线性回归一原创 2017-10-25 12:53:24 · 411 阅读 · 0 评论 -
降维(一)
动机一:压缩数据(Data Compression)现假设有如下数据集,横坐标为特征变量x1,其单位为厘米(cm);纵坐标为特征变量x2,其单位为英寸(inches)。我们知道这两个特征变量均为长度计量单位,同时使用不免重复。因此,我们需要将这个二维数据集降为一维数据集。对于该问题降维的具体做法为:先找到一条合适的直线,然后将数据投影到这条直线上,最后我们将这些投影到直线上的数据用z(原创 2017-10-25 12:53:21 · 464 阅读 · 0 评论 -
非监督学习
聚类(Clustering)在非监督学习中,训练样本的标记信息是未知的,目标通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。此类学习任务中研究最多、应用最广的是聚类(Clustering)。聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个簇(Cluster)。通过这样的划分,每个簇可能对应一些潜在的概念(类别)。需说明的是,这些概原创 2017-10-25 12:53:18 · 412 阅读 · 0 评论 -
编程作业(六)
支持向量机支持向量机本部分练习,我们将在2D示例数据集上使用支持向量机。通过在这些数据集上使用支持向量机,将帮助我们初识支持向量机的运行原理,以及如何使用高斯核函数支持向量机。任务一 示例数据集1本任务要求我们修改参数C的值,观察支持向量机对数据集的判定边界。ex6.m文件中已将相关代码备好,其代码如下:%% =============== Part 1: Loading and Vis原创 2017-10-25 12:53:15 · 560 阅读 · 0 评论 -
支持向量机(三)
使用支持向量机我们不推荐自己编写相关代码实现支持向量机的代价函数最小化。因此,我们可以使用现有的支持向量机的软件包,如:liblinear,libsvm等。现假设n表示特征变量的个数,m表示训练数据的个数,则:当n>>m时,我们推荐使用不带核函数的支持向量机,即线性核函数。同时,我们也可以使用逻辑回归模型。当n较小,而m适中时(如n = 1~1000,m = 10~10000),我们推荐原创 2017-10-25 12:53:12 · 292 阅读 · 0 评论 -
支持向量机(二)
Kernel Ⅰ对于上图的数据集,我们之前使用的是多项式模型来对数据集进行分类操作。我们可能使用的模型为θ0 + θ1x1 + θ2x2 + θ3x1x2 + θ4x12 + θ5x22 + ...对于该模型当θ0 + θ1x1 + θ2x2 + θ3x1x2 + θ4x12 + θ5x22 + ... ≥ 0时,我们可以预测y = 1。因此,该模型的假设函数为:上述模型中,我们原创 2017-10-25 12:53:09 · 176 阅读 · 0 评论 -
支持向量机(一)
支持向量机(Support Vector Machines,简称SVM)是一种二类分类模型。它在一些情况下,对于一些复杂的非线性问题能提供相比逻辑回归模型或神经网络模型更为简洁的解决方案。优化目标我们通过不断改进逻辑回归模型以实现支持向量机。逻辑回归模型的假设函数hθ(x)为:其中:当y = 1时,我们希望hθ(x) ≈ 1,即θTx >> 0;当y = 0时,我们希望hθ(x原创 2017-10-25 12:53:06 · 334 阅读 · 0 评论 -
Octave教程(三)
矩阵运算octave:33> A = [1 2; 3 4; 5 6]A = 1 2 3 4 5 6octave:34> B = [11 12; 13 14; 15 16]B = 11 12 13 14 15 16octave:35> C = [1 1; 2 2]C = 1 1 2 2octav原创 2017-10-25 12:52:02 · 612 阅读 · 0 评论 -
Octave教程(四)
####### 绘制图表绘制sin函数图:octave:1> t = [0:0.01:0.98];octave:2> y1 = sin(2 * pi * 4 * t);octave:3> plot(t, y1)结果如图所示:y1绘制cos函数图:octave:4> y2 = cos(2 * pi * 4 * t);octave:5> plot(t, y2)结果如图所示原创 2017-10-25 12:52:05 · 384 阅读 · 0 评论 -
Octave教程(五)
控制语句V = 0 0 0 0 0 0 0 0 0 0>> for i=1:10, % for循环> V(i) = 2 ^ i;> end;>> VV = 2 4 8 16 32 64 128 256原创 2017-10-25 12:52:08 · 344 阅读 · 0 评论 -
编程作业(一)
线性回归(Linear Regression)简单的Octave/MATLAB函数(Simple Octave/MATLAB function)将warmUpExercise.m文件中的warmUpExercise()补充完整,使其能够返回一个5*5的单位矩阵。在函数相应位置键入如下代码即可:A = eye(5);然后,我们在Octave中的CLI中键入如下命令测试warmUpExerc原创 2017-10-25 12:52:14 · 1450 阅读 · 0 评论 -
Octave教程(六)
向量化对于上图的假设函数h,我们在非向量化的情况下可写出如下代码:prediction = 0.0;for j = 1:n+1, prediction = prediction + theta(j) * X(j);end;注:j从1~n+1是因为在Octave中下标是从1开始,虽然我们手工标注是从0开始的。但若我们在向量化的情况下可写出如下代码:prediction原创 2017-10-25 12:52:11 · 859 阅读 · 0 评论 -
降维(三)
压缩特征的重建我们可以利用下式将压缩特征来重建原特征。其中x(i)approx ≈ x(i)。选择主成分数量通常,我们一般在满足下式的情况下选择尽可能小的K值。其中,上式的分子为投影误差平方和均值(Average Squared Projection Error);分母为Total Variation in The Data。我们也可以用“99% of varian原创 2017-10-25 12:53:27 · 251 阅读 · 0 评论 -
编程作业(七)
K均值算法与主成分分析算法K均值分析算法在本部分练习中,你将实现K均值算法并将该算法用于图像压缩。最初,你通过使用2D数据集帮助你理解K均值算法。在此之后,你将使用K均值算法以减少颜色数量的方式压缩图像。任务一 实现K均值算法K均值算法是一种自动将相似数据聚类在一起的方法,其基本代码如下:% Initialize centroidscentroids = kMeansInitCentr原创 2017-10-25 12:53:29 · 685 阅读 · 0 评论 -
CS299学习笔记(5)
局部加权线性回归欠拟合与过拟合 上述三幅图展示了,不同假设函数hθ(x)h_\theta(x)对于同一训练集的拟合情况。 左图:假设函数hθ(x)h_\theta(x)为hθ(x)=θ0+θ1xh_\theta(x) = \theta_0 + \theta_1x。很明显可看出,其拟合情况不太理想,我们将这种情况称为欠拟合(under-fitting); 右图:假设函数hθ(x)h_\the原创 2018-02-12 21:47:46 · 1328 阅读 · 2 评论 -
CS229学习笔记(0)
CS229_0监督学习(Supervised Learning)首先我们通过一些例子来讨论监督学习问题吧。假设我们有如下数据集: 我们可以将上述数据集绘制成如下图所示: 那么我们如何根据这些数据集预测其他房屋的价格呢? 为了今后更好地学习,以上例为例,我们将房屋面积定义为输入变量x(i)x^{(i)},其亦称为特征变量;将房屋价格定义为输出变量y(i)y^({^i}{^)},其亦称为目标变原创 2018-02-06 16:04:35 · 269 阅读 · 0 评论 -
CS229学习笔记(4)
最小二乘法的概率解释为什么在线性回归问题中我们选择最小二乘法定义代价函数J(θ)J(\theta)?本小节将就这一问题进行讨论。 首先,我们假设对于每一个样本实例(x(i),y(i))(x^{(i)}, y^{(i)}),特征变量xx和目标值yy的关系如下: y(i)=θTx(i)+ϵ(i)y^{(i)} = \theta^Tx^{(i)} + \epsilon^{(i)}其中,ϵ(i)\eps原创 2018-02-10 20:24:56 · 308 阅读 · 0 评论 -
CS229学习笔记(3)
正规方程上一小节中,我们使用批量梯度下降算法,通过不断迭代以求得最佳参数θθ\theta的值。本小节将介绍另一种方法——正规方程(The Normal Euqations)来计算出最佳参数θθ\theta的值。 在介绍正规方程法之前,我们先看看一些基本概念。 Matrix Derivatives对于一个m∗nm∗nm * n的矩阵到实数的函数映射f:Rm∗n↦Rf:Rm∗n...原创 2018-02-09 21:17:45 · 441 阅读 · 0 评论 -
CS229学习笔记(2)
LMS算法在上一小节中,我们定义了代价函数J(θ)J(\theta),当其值最小时,我们则称找寻到了拟合数据集最佳的参数θ\theta的值。那么我们又该如何选择参数θ\theta的值使得代价函数J(θ)J(\theta)最小化? 我们不妨考虑使用搜索算法(Search Algorithm),其先将参数θ\theta初始化,然后不断给参数θ\theta赋予新值,直至代价函数J(θ)J(\theta)原创 2018-02-08 16:41:31 · 437 阅读 · 0 评论 -
应用示例:图像文字识别
Problem Description and Pipeline在图像文字识别应用中,我们希望从给定的图片中识别图中的文字,如: 为了实现图像文字识别,常采取如下步骤: 文字检测(text detection) 字符切割(character segmentation) 字符分类(character classification) 滑动窗口(Sliding Windows)滑动窗口是原创 2017-12-02 10:21:40 · 8080 阅读 · 0 评论 -
编程作业(八)
异常检测与推荐系统异常检测在本节练习中,你将实现一个异常检测算法用于检测服务器上的异常行为。特征变量为每台服务器的吞吐量(mb/s)和延迟(ms)。当服务器运行时,你收集到了307个样本(即m=307),当然这些数据都是无标签数据。现在,你怀疑在这些数据中存在少量的异常数据,这些异常数据记录了服务器的异常操作。因此,你需要实现一个异常检测算法。 你将使用高斯模型用于检测数据集中的异常数据。与此同时原创 2017-10-26 20:25:36 · 412 阅读 · 0 评论 -
推荐系统(三)
均值归一化如果我们新增用户Eve,且用户Eve未对任何电影评分,那么我们的推荐系统该如何向用户Eve推荐其喜好的电影呢? 我们若从代价函数J(θ)入手,我们会发现只有最后一项与用户Eve(即θ(5))有关。由于我们对用户Eve喜好未知,因此,推荐系统会将其喜好设置为默认值,即θ(5) = [0,0]T[0, 0]^T。这样,推荐系统预测用户Eve对每一部电影的评分都为0,且无法为用户Eve推荐相关原创 2017-10-25 20:47:49 · 235 阅读 · 0 评论 -
机器学习介绍
机器学习的定义(Machine Learning Definition)Even among machine learning practitioners there isn’t a well accepted definition of what is and what isn’t machine learning. But let me show you a couple of example原创 2017-10-25 18:30:44 · 362 阅读 · 0 评论 -
逻辑回归(一)
分类问题(Classification)在分类问题中,我们尝试预测离散值输出,例如:判断一封电子邮件是否为垃圾邮件、判断一次在线交易是否为诈骗和判断肿瘤是否为恶性肿瘤等。我们先从二元分类问题(即预测结果为0和1)开始讨论。我们将要预测的因变量y的取值分为两类:当y=1时,我们将其标记为正向类(Positive Class);当y=0时,我们将其标记为负向类(Negative Class)。...原创 2017-10-25 12:52:17 · 788 阅读 · 4 评论 -
异常检测(一)
Problem Motivation异常检测(Anomaly Detection)主要用于非监督学习,用于发现可能不应该属于一个已定义的组中的数据。密度估计(Density Estimate)现假设数据集为{x(1), x(2), ···, x(m)},我们根据相关信息了解到该数据集中的数据是正常的,但我们想要知道对于新数据xtest是否为异常数据。对于该问题,我们可以将其转换为概率问题,即原创 2017-10-25 12:53:32 · 511 阅读 · 0 评论 -
逻辑回归(二)
代价函数(Cost Function)对于线性回归模型,我们定义的代价函数J(θ)为:现在对于逻辑回归模型我们沿用此定义,但问题是hθ(x) = g(z),而函数g为S形函数,故代价函数J(θ)将会变为像下图中左边的图那样,此时我们将其称之为非凸函数(non-convex function)。注:国外凸函数定义与国内是相反的。这意味着代价函数J(θ)存在无数个局部最小值,从而影原创 2017-10-25 12:52:19 · 488 阅读 · 0 评论 -
逻辑回归(三)
多类别分类(Multiclass Classification)在多类别分类问题中,我们的训练集中有个多个类别,这时可以利用一对多的分类思想将多类别分类问题转化为二元分类问题,该方法也称为一对多分类方法。我们分别令y=1,y=2和y=3分别表示图中的三角形、矩形和叉。左数第一个图y=1标记为正向类,则其他的就为负向类,这时我们就可以画出图中的直线作为边界,则记假设函数为hθ(1)原创 2017-10-25 12:52:22 · 280 阅读 · 0 评论 -
正则化
过拟合问题(The Problem of Overfitting)如上图所示,第一个采用单变量线性回归模型来拟合数据集,但其效果并不好,因此我们将这种情况称为欠拟合(Underfitting)或高偏差(High Bias);第二个采用二次多项式的线性回归模型来拟合数据集,其效果恰好,因此我们将这种情况称为“Just Right”;第三个采用四次多项式的线性回归模型来拟合数据集,其虽然对数据原创 2017-10-25 12:52:25 · 513 阅读 · 0 评论 -
异常检测(三)
多元高斯分布(Multiplicate Gaussian Distrtibution)以数据中心计算机监控为例,我们有如下数据分布图。当出现图中绿色标记点的数据时,根据高斯分布计算得到的p(x)值大于ε,因此异常检测算法认为该数据点为正常数据。而实际上,该点为异常数据。为了避免这种情况,我们可以构建新的特征变量来帮助异常检测算法捕捉异常数据;我们也可以使用基于多元高斯分布的异常检测算法,原创 2017-10-25 12:53:38 · 547 阅读 · 0 评论 -
推荐系统(一)
Problem Formulation在介绍推荐系统之前,我们先以电影评分为作为开始。现假设我们拥有类似豆瓣电影这种对电影评分的平台,有四位用户对五部电影的评分如下:前三部电影为爱情片,后两部为动作片。从图中,我们可知四位用户对这两种类型电影的评分,其中“?”表示该用户未对相应电影评分。这时,我们希望构建一个推荐系统对这些用户未评分的电影根据用户的喜好模拟评分。为了更好地介绍推荐系统原创 2017-10-25 12:53:41 · 296 阅读 · 0 评论 -
推荐系统(二)
协同过滤(Collaborative Filtering)Problem Motivation在之前的基于内容的推荐系统中,对于每一部电影,我们都掌握了可用的特征,通过使用这些特征,并运用线性回归模型,可训练得每一个用户对某一电影的评分。 相反地,如果我们拥有用户对每一部电影的评分,我们就可以学习得电影得特征。但如果我们既无法得到电影的特征,也没有用户对每一部电影得的评分,之前原创 2017-10-25 12:53:44 · 210 阅读 · 0 评论 -
Octave教程(二)
如何求矩阵、向量的维数octave:1> A = [1 2; 3 4; 5 6]A = 1 2 3 4 5 6octave:2> size(A)ans = 3 2octave:3> size(A, 1)ans = 3octave:4> size(A, 2)ans = 2octave:5> V = [1 2 3 4]V =原创 2017-10-25 12:52:00 · 431 阅读 · 0 评论 -
Octave教程(一)
基本操作加减乘除和幂次方操作octave:1> 2 + 3ans = 5octave:2> 4 - 2ans = 2octave:3> 3 * 7ans = 21octave:4> 15 / 3ans = 5octave:5> 4 ^ 2ans = 16布尔运算octave:7> 1 == 2 % falseans = 0octave:8> 1原创 2017-10-25 12:51:57 · 1475 阅读 · 0 评论 -
多变量线性回归(二)
正规方程(Normal Equation)到目前为止,我们都在使用梯度下降算法将代价函数J(θ)最小化。但对于某些线性回归问题,我们引入正规方程来求解最优的θ值,从而使得代价函数J(θ)最小化。正规方程是通过求解如下的方程来使得代价函数J(θ)最小的参数θ的值:假设我们使用如下数据集作为我们的训练集:我们可以构建出如下数据表:x0x1x2x3x4y原创 2017-10-25 12:51:54 · 280 阅读 · 0 评论 -
多变量线性回归(一)
搭建编程环境此处推荐安装Octave,如若已安装Matlab也可。这里不过多叙述如何安装Octave或Matlab,请自行查阅相关资料。多维特征(Multiple Features)之前我们学习了单变量线性回归,现在我们继续利用房价的例子来学习多变量线性回归。如上图所示,我们对房价模型增加一些特征,例如:房间的数量、楼层数和房屋使用年限。对此,我们分别令x1,x2,x3和x4表示房屋原创 2017-10-25 12:51:51 · 519 阅读 · 0 评论 -
单变量线性回归(二)
梯度下降(Gradient Descent)我们将使用梯度下降算法来求出使得代价函数J(θ0, θ1)值最小的参数θ的值。梯度下降算法的基本思想:首先我们随机选择一个参数的组合(θ0, θ1, ... , θn),计算代价函数,然后我们寻找下一个能让代价函数值最小的参数组合,且一直这样寻找下去直至找到一个局部最小值。为什么将这个最小值称为局部最小值?因为,我们在寻找过程中并没有尝试寻找所有的参原创 2017-10-25 12:51:48 · 220 阅读 · 0 评论 -
单变量线性回归(一)
模型表达(Model Representation)我们通过一个例子作为开始,这个例子就是我们之前的预测房价的例子。我们要使用一个数据集,数据集包含某地的住房价格。假设你有一朋友正想出售自己面积为1250平方英尺的房子,你要告诉他这房子可以卖多少钱。这时你就需构建一个模型,从这个数据集来看这或许是条直线,从图中的原谅绿你可以对你朋友说这房子可以卖22万美元左右。房屋价格数据集这就是...原创 2017-10-25 12:51:45 · 336 阅读 · 0 评论 -
线性代数回顾
矩阵与向量此处,不做过多叙述。如若忘记相关概念请自行充电学习。补充笔记Matrices and VectorsMatrices are 2-dimensional arrays:The above matrix has four rows and three columns, so it is a 4*3 matrix.A vector is a matrix with one原创 2017-10-25 12:51:43 · 408 阅读 · 0 评论 -
编程作业(三)
多类别分类问题该部分使用之前的逻辑回归模型对手写数字0~9的识别。手写数字使用20*20像素的灰度图片,因此特征变量x的个数为400个。由于Octave\MATLAB的下标由1开始,因此我们使用10表示手写数字中的0。 任务一 可视化数据 随机选择100条数据,通过绘图函数将数据可视化。其在代码已在ex3.m和displayData.m文件中写好,只需在Octave中运行该部分代码即可,其原创 2017-11-10 14:52:43 · 510 阅读 · 0 评论