斯坦福机器学习笔记

  • Post author:
  • Post category:其他



斯坦福机器学习视频教程


  • 什么是机器学习

Exp:西洋棋 / 过滤邮件


监督学习:

预测房价(直线/二次拟合)       ——

回归问题

0/1问题                                    ——

分类问题

主要特征:给算法一个数据集

算法——支持向量机


无监督学习:

区别,数据集没有重要的检查

  1. 聚类运算

exp:谷歌网址分组关联、基因学

  1. 鸡尾酒算法,音频分离技术

代码工具:Octave

步骤:建原型,移植算法

——————————————————————————————————————————————————


  • 单变量线性回归

回归问题/分类问题——给予数据集(训练集)

样本数                      m

输入                           x

输出                           y

实例                          (x , y)

第i个观察实例         (

)

函数/假设                  h


单变量线性回归表达式:





代价函数:

参数(系数,parameters)决定预测差距,即建模误差(modeling error)。


选出建模误差平方和最小的建模参数,即代价函数最小:

代价函数也称为平方误差函数



梯度下降:

求代价函数最小值,初值——局部最小值

Repeat until convergence {





(for j = 0 and j = 1)

}


α


:学习率

太小,则梯度下降过程缓慢

太大,则容易越过局部最小点,甚至无法收敛

如果预先在最低点,则



批量梯度下降:

Repeat {





}

另一种处理方法:正规方程求极值

—————————————————————————————————————————————————


  • 线性代数回顾


m行,n列

常用列向量,1索引向量



———————————————————————————————————————————————————


  • 多变量线性回归

n表示特征的数量(行数,m代表实例总数)


代表第i个训练实例


代表第j个特征






X

的维度为m(n+1)


多变量梯度下降:

特征缩放:将所有特征的尺度缩到-1到1之间

学习率:通常取0.01,0.03,0.1,0.3,1,3,10


特征与多项式回归:

二次/三次回归,转换变量为线性回归


正规方程:

只适合线性模型,在n<10000的范围内可接受,矩阵需可逆。



——————————————————————————————————————————————————–


  • Octave


    语言

实际就是类似MATLAB的命令行语言

——————————————————————————————————————————————————–


  • 逻辑回归(


    Logistic Regression





分类问题:


逻辑回归算法(Logistic Regression)

判断是否属于某一类(0/1问题)

性质:输出介于0和1之间

因变量: 正向类(positive class)    ——1

负向类(negative class)   ——0


假说


(


函数


)


表示:



逻辑函数g是一个常用的逻辑函数为S形函数,公式为:


判定边界(


decision boundary


):

区分0/1的边界

调整参数的值(算法需要的值),来适应非常复杂的判定边界。

代价函数:用来拟合参数的优化目标,沿用线性回归函数的误差平方和。



代入到J中,得到一个非凸函数(Non-convex function)存在比较多的局部最小值,因此影响梯度下降算法寻找全局           最小值。


重新定义逻辑回归代价函数:





得到一个单调函数,方便使用梯度下降算法,但没有局部最优值。


简化的成本函数和梯度下降:

思路:  获取使代价函数最小的参数值,不断用X来训练,再用训练样本的新参数,输出对假设的预测。

概率:

,关于



为参数,

的概率



梯度下降法(Gradient Descent):不断更新

的值,计算过程类似于线性回归模型,但由于后者是逻辑回归,原理有所区                                                                别。


高级优化:

没有学习率

共轭梯度法、BFGS(变尺度法)和L-BFGS(限制变尺度法)


多类别分类:

一对多,标签超出0/1


思路:以第i类作为1,其余作为0,获得边界i,最后得到I个函数模型,最后寻找出概率最高的模型(期望最大的)。

—————————————————————————————————————————————————————


  • 正则化(


    Regularization




过拟合问题(


over-fitting


):

用力过度,为拟合而拟合,不能正确预测假设值。

处理方法: 弃除不能帮助我们正确预测的特征

正则化:保留特征,减少参数的大小。


代价函数:

参数的减小,体现在高阶项系数的权重大幅度减小,以防止过拟合。




λ


称为正则化参数,注意

λ


不能过大,过大会导致所有参数最小化,导致欠拟合。

—————————————————————————————————————————————————————-


  • 神经网络(


    Neural Networks


    ):表述


非线性假设:

线性回归和逻辑回归在特征数目非常多时,计算的负荷很大。多特征处理需要神经网络。


神经元和大脑:

学习算法


模型表示:

处理单元:神经核

多个输入:树突

一个输出:轴突

神经元信号依据动作电位(弱电流)进行传递。

神经元(激活单元,activation unit)采纳一些特征作为输如,并且根据本身的模型提供一个输出。在神经网络中,参数也称为权重(weight)。

输入层(input layer):

输出层(output layer):

隐藏层(Hidden layer):

偏差单位(bias unit):下标为0

模型标记:


表示第

j

层的第

i

个激活单元


表示从第

j

层映射到第

j+

1 层时的权重矩阵

行=第

j+

1


激活单元行数

列=第

j

层激活单元数+1


前向传播算法(


forward propagation


):

从左向右

注:中间隐藏层可以看作是更高级的特征值。


特征和直观理解:

第三层用第二层的特征作预测,而非输入层的原始特征,神经网络第二层的特征是神经网络通过“学习”后自己得出的一系列用于预测输出的新特征。

单层神经元计算:

AND函数:0/1问题计算结果近似于“与”

OR 函数:0/1问题计算结果近似于“或”


样本和直观理解:

二元逻辑运算符(Binary Logical Operators),输入特征为布尔值,不同的权重有不同的逻辑运算符:AND(-30,20,20)、OR(-10,20,20)、NOT(10,-20),复杂的异或运算可以用组合逻辑来实现。


多类分类:

输出分为人、汽车、摩托车、卡车,那么就有多个输出,每个类在输出表现为当前类结果为1,其余类结果为0。

————————————————————————————————————————————————————


  • 神经网络的学习


代价函数:

标记:

训练样本数:

m

训练层数:

L

第l层神经元个数:

输出层神经元个数:

两类问题:

二类分类:

K类分类:

(K>2)

逻辑回归代价函数:

输出只有一个,即标量(scalar),神经网络有多个输出变量,

输出

h


θx


是一个维度为K的向量,代价函数为:



反向传播算法:

首先计算最后一层的误差,然后再一层层反向求出各层的误差,直到倒数第二层。


梯度检验:

梯度的数值检验


随机初始化

:初始参数不能固定为0或者常数。


训练神经网络:

  1. 参数的随机初始化
  2. 利用正向传播算法计算所有的假设
  3. 编写计算代价函数的代码
  4. 利用反向传播方法计算所有偏导数
  5. 利用数值检验方法验证这些偏导数‘
  6. 使用优化算法来最小化代价函数

———————————————————————————————————————————————————–


  • 应用机器学习的建议


算法优化与改进:

模型泛化性较差时,即新的数据预测误差较大,需要考虑以下几个方面进行改进算法:

  1. 减少特征数量
  2. 尝试获取更多的特征
  3. 尝试增加多项性特征
  4. 尝试减少或增加归一化程度

评估算法的性能:机器学习诊断法


评估一个假设:

如何避免过拟合或者欠拟合?

70%数据作为训练集,30%数据作为测试集,注意数据需要打乱以保证含有各种类型的数据。

在模型训练完毕后再用测试集计算误差。


模型选择与交叉验证集:

  1. 选择适应一般情况的模型,而非仅对新数据适用。
  2. 60%作为训练集,20%作为交叉验证集,20%作为测试集。
  3. 模型选择方法:

使用训练集训练10个模型

分别用交叉验证集计算交叉验证误差(代价函数的值)

选取代价函数最小的模型

用该模型以及测试集计算其推广误差(代价函数的值)


诊断偏差和方差:

欠拟合和过拟合,偏差大或者方差大

对于训练集,训练次数越大,误差越小,拟合程度增加;

对于交叉验证集,多项式次数增大时,误差先减小后增大,转折点就是过拟合的点。

训练集误差和交叉验证集误差近似时,偏差/欠拟合

交叉验证集误差远大于训练集误差时,方差/过拟合


归一化和偏差


/


方差:

归一化系数

的选择:0,0.01,0.02,0.08,




,5.12,10

选择方法:

  1. 训练12个归一化系数的模型
  2. 分别对交叉验证集计算交叉验证误差
  3. 选择交叉验证误差最小的模型
  4. 计算测试集的推广误差

较小时,训练集误差较小(过拟合),而交叉验证误差较大

增大时,训练集误差不断增加(欠拟合),但交叉验证误差先减小后增加


学习曲线(


learning curves


):

学习曲线用来判断学习算法是否处于偏差/方差问题,是学习算法的合理检验(sanity check)。学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的曲线。

在高偏差/欠拟合的情况下,增加数据到训练集并不一定有帮助;

在高方差/过拟合的情况下,增加更多数据到训练集可以提高算法效果。


下一步:

解决高方差:

获得更多的训练实例

减少特征

增加归一化程度

解决高偏差:

获得更多的特征

增加多项式特征

减少归一化程度

————————————————————————————————————————————————————


  • 机器学习系统(


    Machine Learning System


    )的设计


例子:邮件分类


误差分析(


error Analysis


):

构建学习系统的推荐方法:

  1. 从一个简单算法开始,实现该算法并用交叉验证集数据测试这个算法;
  2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征;
  3. 进行误差分析,人工检查交叉验证集中我们算法中产生预测误差的实例,观察是否有某种系统化的趋势。


类偏斜的误差度量:

选取合适的误差度量值,即偏斜类(skewed classes)问题

预测为真,实际为真:正确肯定(TP)

预测为假,实际为假:正确否定(TN)

预测为真,实际为假:错误肯定(FP)

预测为假,实际为真:错误肯定(FN)

查准率(P)=TP/(TP+FP),查全率(R)= TP/(TP+FN),两个都是越高越好。


查全率和查准率之间的权衡:

提高查准率,抬高阈值;提高查全率,则降低阈值

选择阈值:计算F1值




机器学习的数据:

许多不同的学习算法有时倾向于表现出非常相似的表现,这还取决于一些细节,但真正能提高性能的,是你能够给一个          算法大量的训练数目。大部分算法,随着数据集的大量增加,算法的性能也都对应地增强了。

掌握成功的,不是拥有最好算法的人,而是拥有最多数据的人!

————————————————————————————————————————————————————-


  • 支持向量机(


    Support Vector Machines





    SVM




优化目标:

将代价函数直线化



C越小,B将比A有更大的权重。


大边界的直观理解:

注意

的边界不是按照0来划分的,因此有一个额外的安全因子。

黑色的边界拥有更大的间距(margin),这是SVM具有鲁棒性的原因,因此SVM也被称为大间距分类器。

C不是非常大的时候,决策边界可以忽略一些异常点的影响,得到更好的决策界。

核函数(kernel):利用新特征来代替模型中的多项式,这里使用核函数来计算。

地标(landmarks)

高斯核函数:计算和地标的接近程度,与地标重合时取最大值

地标选择:选择m个地标,地标与特征实现一一对应。

不使用线性核函数,即线性核函数。


使用


SVM




支持向量机算法,liblinear以及libsvm

多项式核函数、字符串核函数、卡方核函数、直方图交集核函数

———————————————————————————————————————————————————————


  • 聚类(


    Clustering




无监督学习(


unsupervised learning


):

训练集无明显标签。将数据分成两个分开的点集(簇),一个能找到这些簇或者其他类型结构体的算法,称为聚类算法。


K-


均值算法(


K-Means Algorithm


):

将未标记数据聚类成不同组的算法

一种迭代算法,首先选择K个随机点(聚类中心cluster centroids),对于数据集每个数据,按照距离聚类中心的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。计算每一个组的均值,将该组所关联的中心点移动到平均值的位置。重复以上步骤多次直至中心点不再变化。

标记:聚类中心

,第i个实例数据最近的聚类中心索引

伪代码:

Repeat {

for i = 1 to m


:= index (from 1 to K) of cluster centroid closest to

for k = 1 to K


:= average (mean) of points assigned to cluster k

}


优化目标:

K-均值最小化的问题,就是最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此K-均值的代价函数(畸变函数Distortion function)为:



伪代码的一个循环减小c引起的代价,第二个循环减小

引起的代价


随机初始化:

K<m,多次运行算法,每一次都重新随机初始化,最后选择代价函数最小的结果,但如果K较大,问题仍然存在。


选择聚类数:

依据肘部法则,横轴代表聚类数,“肘部”转折点最佳。

——————————————————————————————————————————————————————


  • 降维(


    Dimensionality Reduction




数据压缩(


data compression


):

减少使用计算机内存,加快学习算法。

用冗余的多余数据,例如,采用不同度量衡测出的同样的长度,这样的数据可以降维。两个具有相关性的数据可以实现降维。


数据可视化:

降维方便数据的表达和可视化。


主成分分析(


Principle Component Analysis





PCA


)问题:

常用降维算法

方向向量(Vector direction):数据与方向向量的

平均均方误差

尽量小。

投射误差(Projected error):特征点向方向向量做垂线的长度

*回归误差:垂直于横轴,与线性预测直线的距离误差。

PCA实现数据压缩,将n个特征降维到k个,可以用于图像处理的KL变换,但需要保证数据压缩后特征损失最小。


主成分分析算法:

减少投射的平均均方误差

  1. 均值归一化
  2. 计算协方差矩阵
  3. 计算协方差矩阵的特征向量


选择主成分的数量(维数):

从1开始计算,直到找到符合比例的最小K值。


重建的压缩表示


主成分分析法应用


——————————————————————————————————————————————————————————–


  • 异常检测(


    Anomaly Detection




问题来源:

解决非监督学习问题

密度估计、欺诈检测,检测非正常用户


高斯分布(


Gaussian Distribution


):

正态分布

计算样本均值和方差(除以m)


算法:

异常检测算法:依据均值和方差,并寻找一个判定边界进行检测

开发和评价:

交叉检验和测试过程:

  1. 根据测试集数据,我们估计特征的均值和方差并构建p(x)函数
  2. 对交叉验证集,尝试选择不同的边界阈值,预测数据是否异常,根据F1值来选择边界
  3. 确定边界后,针对测试集进行预测,计算异常检验系统的F1值


异常检测和监督学习的对比

:区别于负向类的数据占比


选择特征:



数据分布转为高斯分布:x=log(x+c)

误差分析


多元高斯分布以及应用



版权声明:本文为JackSparrow_sjl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。