斯坦福机器学习视频教程

  • 什么是机器学习

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 MachinesSVM

优化目标:

将代价函数直线化

                                                                                       

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 AnalysisPCA)问题:常用降维算法

       方向向量(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)

       误差分析

多元高斯分布以及应用

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐