Coursera:机器学习第一周学习笔记
Andrew Ng机器学习
Week1
亚瑟·塞缪尔将机器学习定义为赋予计算机学习能力而无需明确学习的研究领域,这是一个较旧的定义
这里有一个稍微更新的定义由汤姆·米切尔 他说,一个计算机程序从经验 E 学习关于 一些任务 T 和一些性能措施 P,如果它在 T 上的性能,由 P 测量,随着经验 E 的提高
对于跳棋玩例子,体验 E 将是让程序玩成千上万的游戏本身的经验。 任务 T 将是玩跳棋的任务,性能测量 P 将是程序在下一场比赛中获胜的概率。
机器学习算法(主要的,常用的两种)
- 监督学习
- 无监督学习
其他
- 强化学习
- 推荐系统
监督学习
指我们给算法一个数据集,其中给出了 “正确答案”。 算法的任务是产生更多这些正确的答案。
监督学习问题分为 回归问题 和 分类问题
例一
我们给了一组房屋的数据,在这个数据集中的每一个例子,我们告诉它什么是合适的价格,预测出你的朋友可能试图出售的新房子的价格。
要定义更多的术语,这也称为回归问题。通过回归问题,我的意思是我们试图预测一个连续的价值输出,即房屋出售价格价格。
例二
肿瘤细胞的大小和它是否为良性或者恶行的预测问题,这是一个分类问题,术语分类指的是我们试图预测离散值输出0或1(即恶行或良性),有时也可以为输出提供两种以上的可能值,但这依然还是一个分类问题,因为输出的离散值对应于你没有癌症,癌症类型一,癌症类型二......
总结:回归问题的目标是预测连续值的输出,而分类问题的目标是预测离散值的输出;在回归问题中,我们试图预测一个连续输出的结果,这意味着我们试图将输入变量映射到某个连续函数。在一个分类问题中,我们试图在一个离散输出中预测结果。换句话说,我们试图将输入变量映射到离散的类别中。
无监督学习
对于监督学习中的每一个样本,我们已经被清楚地告知了,什么是所谓的正确答案 ,即它们是良性还是恶性
在无监督学习中 ,我们用的数据会和监督学习里的看起来有些不一样 ,属性没有属性或标签这一概念 ,也就是说所有的数据都是一样的,没有区别,所以在无监督学习中 我们只有一个数据集,没人告诉我们该怎么做。
无监督学习允许我们在几乎不知道或完全不知道结果的情况下处理问题。我们可以从我们不一定知道变量影响的数据中推导出结构。我们可以根据数据中变量之间的关系对数据进行聚类,从而得出这种结构。
聚类算法
对于给定的数据集,无监督学习算法可能判定该数据集包含两个或者多个不同的聚类,即类别一、类别二、类别三......,这就是所谓的聚类算法。
鸡尾酒会算法(非聚类)
允许你在混乱的环境中寻找结构(例如,在鸡尾酒会上从各种声音中识别出不同的声音和音乐)。
下文相关字母说明
m 训练样本的数目 x 输入的特征 y 输出变量或目标变量 (x, y) 一个训练样本 (x(i), y(i)) i表示索引,某个训练样本 h(hypothesis) 表示回归函数(假设),就是x和y的函数映射 θ(i) 模型参数
监督学习模型
线性回归模型
预测房屋大小(x)和价格(y)关系时:
这实际上是关于单个变量的线性回归,称为单变量线性回归。
假设函数定义如下:
在单变量线性回归中,我们要做的是选择 θ0 和 θ1
在线性回归中,我们要解决的是一个最小化问题,即 使样本中的假设值和真实值差的平方和尽可能小
那么问题就转化为 找到能使样本中的假设值和真实值差的平方和最小的 θ0 和 θ1
以下就是线性回归的整体目标函数:
成本函数(cost function):
也称平方误差函数 or 平方误差成本函数,是解决回归问题最常用的手段。
成本函数的数学定义:
令成本函数取最小值
为了更好地理解成本函数,我们假设只有一直模型参数θ1,即 h(x) = θ1x
当θ1 = 1时是完全拟合函数的,即 J(θ1)函数的值达到最小 0 ,这也说明 J(θ),即成本函数是大于等于0的函数,以上就是成本函数的可视化。
总结:
轮廓图:
右边那个就是轮廓图,在同一条圈圈线上的点的成本函数的值是相等的,越接近中心,表示找到的模型参数能使得成本函数尽可能小。
机器学习算法:
这里的算法是指使得成本函数 J 最小化的算法
梯度下降
步骤:(假设模型参数只有 θ0 和 θ1 的情况下)
初始化 θ0, θ1,一般使得两个参数初始化为0
不停地一点点地改变 θ0, θ1 的值,试图通过这种改变使得 J(θ0, θ1),直到找到 J(θ0, θ1) 的最小值
在初始化的位置上,360°环顾四周,选择梯度下降最快的方向走一步,然后在当前位置重复以上操作......直到局部最低点的位置(可以想象成我想以最快的效率下山),也就是说,选择不同的初始化位置你很有可能会得到不一样的局部最优解,这是梯度下降算法的特点之一
梯度下降算法θ0 和 θ1 需要同步更新(α 表示学习速率learning rate,通俗地说就是走一步的步伐大小)
随着斜率值越来越小,步伐也随之减小,α 其实一直都没有变,是因为偏导数值那一部分的改变,让步伐大小随之改变了。
α 的取值也会影响我们找到局部最优解的效率:
轮廓图中梯度下降算法演示(在有两个模型参数的情况下):
梯度下降算法也称为批量梯度下降算法(Batch Gradient Descent)
批量(Batch):梯度下降的每一步中,我们用到了所有训练样本
正态方程法
线性代数矩阵、向量之Octave/Matlab commands
基本概念
% The ; denotes we are going back to a new row. A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12] % Initialize a vector v = [1;2;3] % Get the dimension of the matrix A where m = rows and n = columns [m,n] = size(A) % You could also store it this way dim_A = size(A) % Get the dimension of the vector v dim_v = size(v) % Now let's index into the 2nd row 3rd column of matrix A A_23 = A(2,3)
矩阵之间加减及矩阵和数字之间的乘除
% Initialize matrix A and B A = [1, 2, 4; 5, 3, 2] B = [1, 3, 4; 1, 1, 1] % Initialize constant s s = 2 % See how element-wise addition works add_AB = A + B % See how element-wise subtraction works sub_AB = A - B % See how scalar multiplication works mult_As = A * s % Divide A by s div_As = A / s % What happens if we have a Matrix + scalar? add_As = A + s
矩阵之间的乘除
矩阵向量乘法
% Initialize matrix A A = [1, 2, 3; 4, 5, 6;7, 8, 9] % Initialize vector v v = [1; 1; 1] % Multiply A * v Av = A * v
矩阵乘法
应用:
% Initialize a 3 by 2 matrix A = [1, 2; 3, 4;5, 6] % Initialize a 2 by 1 matrix B = [1; 2] % We expect a resulting matrix of (3 by 2)*(2 by 1) = (3 by 1) mult_AB = A*B
特点:
- 不满***换律,A * B 不等于 B * A
- 满足结合律,A * (B * C) = (A * B) * C
- A * I = I * A = A(I代表对应阶的单位矩阵)
% Initialize random matrices A and B A = [1,2;4,5] B = [1,1;0,2] % Initialize a 2 by 2 identity matrix I = eye(2) % The above notation is the same as I = [1,0;0,1] % What happens when we multiply I*A ? IA = I*A % How about A*I ? AI = A*I % Compute A*B AB = A*B % Is it equal to B*A? BA = B*A % Note that IA = AI but AB != BA
逆矩阵(A-1):
- AA-1 = A-1A = I (A是m * m的矩阵,且有逆矩阵)
- 没有逆矩阵的矩阵成为单数矩阵或退化矩阵
% Initialize matrix A A = [1,2,0;0,5,6;7,0,9] % Transpose A 倒置 A_trans = A' % Take the inverse of A 逆 A_inv = inv(A) % What is A^(-1)*A? A_invA = inv(A)*A