课程简要:

主要内容包括线性分类和回归分析简单的回忆。除了Logistic回归分析,具体解说误差测量和算法三方面,同时归纳法的非线性变换的分析.

课程大纲:

1、Review

2、Nonlinear Transform

3、The Model about Logistic regression

4、Error Measure about Logistic regression

5、Learning Algorithm about Logistic regression

6、Summarize

1、Review

线性模型分类:

1、Linear Classification(线性分类模型,感知器)

2、Linear Regression(线性回归模型)

3、Logistic Regression(符号逻辑回归模型)

4、Nonlinear Transforms(非线性转换)

当中我们已经学过 1 和 2。第四点:非线性转换也接触过。

我们以前说过 Nonlinear Transform 很重要,可是对于该模型的讨论也就到此结束。以下将具体介绍该模型

2、Nonlinear Transform

定义:

通过转换函数φ 把在空间 X 下无法进行线性切割的数据转换到能够进行线性切割的 Z 空间的过程(理论上不论什么非线性可分的数据均可转换到更高阶的线性可分的空间)。

即:

X = {x0,x1,x2...xd} ---φ ---> Z = { z0,z1,z2....zk }; 当中 k > d

对于每一个 zi 有 zi = φi(X).

对于感知器模型,在X空间下有 dvc = d + 1; 在 Z 空间下有 dvc <= k + 1。这里之所以出现小于号是由于 Z 空间是通过 X 空间变换而来的。zi 是与 X 相关的(zi = φi(X)),在此受限情况下。有可能出现 dvc < k+1 的情况■

代价:

因为 Nonlinear Transform 添加了參数的数量,因此须要很多其它的数据进行训练。在数据有限的情况下,这将是黑夜...

陷阱:

再利用 Nonlinear Transform 的时候我们要慎防一些存在的陷阱,避免算法失效。

先看几个样例:

1、基本可分

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVpdGlhbmh1MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

在这个空间下,这些数据基本上线性可分。可是除了两个点。

因此有 Ein > 0 假设我们坚持要:Ein = 0 ,则须要进行 Nonlinear Transform 。转换结果例如以下(转换到四阶空间):非常明显,这样的转换反而弱化了模型的泛化能力了。

因此对于转换我们须要谨慎。仅仅有在当前空间中无法或难以进行线性切割的情况下进行转换。比方以下的第二个样例。

2、基本不可分:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVpdGlhbmh1MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

在二维空间下。这些数据无法进行线性切割。

因此在该空间下非常难利用线性模型进行近似和泛化。

我们如果在该空间下 X = {1,x1,x2}.

在 Z 空间下则有 Z = { 1,x1,x2,x1*x2,x1^2,x2^2 }

然而我们的參数由原来的 3 个变为 6 个,直观感觉我们须要3倍于原来的数据进行训练。

可是。为什么我们不用例如以下的的空间呢:

Z = { 1, x1^2, x2^2 }// 变成 3 维了

或 Z = { 1, x1^2+x2^2 }// 噢,更少了,

甚至于 Z = { x1^2+x2^2 - 0.6 }// 嗯,仅仅剩一维了.....

为什么不能够进行上述的转换?

请永远不要忘记我们的目标不是拟合样本内的数据,而是要找到可以反映样本外部数据的模型。利用上面的“改进”模型将会削弱其泛化能力。由于我们是依据已有的数据而进行模型选择的,因此数据已经影响了模型的选择。

此外,如果我们把维数降了下来将会违背关于 dvc 的如果,由于如今 dvc 比在原始空间中的还要小。

我们应该把这项工作交由机器学习来进行。通过学习。机器将告诉我们,哪些參数为
0,哪些參数不重要等等(假设我们的机器被设计的足够好)。上述行为被称作:Data Snooping( 数据偷窥)。

切记:在进行模型选择的时候我们不应该被数据影响。最好的方法就是不去看数据。

3、The Model about Logistic regression

在 Linear Classification 下我们的模型是:h(X) = sign(WX), 当中 W、X 是向量。sign 表示取符号。因此 h(X) = +1 or h(X) = -1.

在 Linear Regression 下我们的模型是:h(X) = WX。对于该模型,h(X) 的范围没有被限定。取决于 W 參数的选取。

而在 Logistic regression 模型下,我们选取的模型是:h(X) = θ(s) = e^s/(e^s+1)  当中 s = WX 。

有:θ(-s) = 1-θ(s) 且 0 < θ(s) < 1.函数图像例如以下所看到的。为什么选择这个模型而不是其他呢?主要是由于该模型在进行误差分析的时候会体现出非常多长处。能够简化我们的分析。

该模型也叫 soft threshold (软阀值),表示的是 uncertainty。

有点像 Linear Regression 模型,仅仅是结果被归一化到 0-1 之间。因此我们能够把该模型得到的值解释为一个概率值。趋于 0 表示预測结果接近 -1 类,趋于 1 表示预測结果接近 +1 类。因此该模型提供的信息要比 Linear Classification 要多。他仅仅是告诉我们发生的可能性,而不是一个确却的结果。

比方在预測病人心胀病在一年内复发的可能性的时候,我们就不应该
Linear Classification 模型。

由于影响一个人心胀病复发的因素非常多,我们没办法预測其一年中是否一定复发。

我们输入的数据是二分类,学习得到的结果却是一个概率值,那是由于存在噪声。在噪声的影响下,预測结果就会发生变化。

4、Error Measure about Logistic regression

为了得到一个关于概率的模型,考虑以下的等式:

f(X) 表示我们须要学习的目标函数,P(y|X) 表示在 X 下。y 发生的概率。P(y|X) 越大,y 发生的可能性越大。

如今用 h(X) 来近似 f(X) 于是有:

由 h(X) = θ(s)  及 θ(-s) = 1 - θ(s) 我们能够化简上述等式为:P(y|X) = θ( y WX )

对于整个数据集 D(X1,X2,X3...XN) ,事件发生的可能性为:(这里解释一下:事件发生的可能性是指预測的概率接近事件真实的概率的可能性,越大越接近)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVpdGlhbmh1MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="60" alt="">

当然我们希望事件发生的可能性越大越好,因此我们须要最大化事件发生的可能性。这也是机器学习的指导方向,即找到一个 W 使得 整个等式最大化。

当最大化上述函数的时候事实上是在最小化误差:f(x)-h(x)

通过下面的等式变换,能够得到误差度量的方法:

为了最大化:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVpdGlhbmh1MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="60" alt="">

能够最大化:

相当于最小化:

把 θ(s) 代入便能够得到误差度量函数:也叫 cross-entropy error (交叉熵误差度量)

由于我们须要一个简单、简洁的误差度量方法,而在形式上要与原有的一致。因此上述的误差度量方法是合理的。

模型已经提出来了。误差度量方法也已经有了。剩下的就是学习算法了。

5、Learning Algorithm about Logistic regression

为了找到最好的 W,详细思路是先人为的为 W 设定一个初始值W(0)。然后通过机器学习,不断迭代。最后找到一个“最好”的 W。在每次迭代的过程中令W(1) 是W(0) 一次迭代的结果。在这里我们利用的方法是梯度下降法:Ein(W(1)) = Ein(W(0)+ηV) 当中 η 表示每次移动的步长,V 是一个向量。表示的是移动的方向。为了方便起见,在这里设定 η 为一个常量,即每次移动步长保持不变,所以我们如今仅仅需确定一个变量 V
,当 V 确定后,便能够进行下一次迭代。推导步骤例如以下:

上面从第一步到第二步是通过泰勒公式转换完毕的。第二步到第三步不等式成立是由于 V 是单位向量,所以当方向相反的时候就能够得到最小值。由于我们忽略了第二项,因此有不等式成立。因此能够确定 V 的值。

对于 η 的选取。假设太小的话,每次仅仅移动一小步,可能导致算法无法终止(N 年后...),可是假设 η 过大。有可能会跳过最小值,出现不断地徘徊或往什么别的地方去了。

仅仅有当 η 的值适中才干在时间和性能之间取得平衡。这样就须要一定的经验和运气。因此不够理想,假设我们让 η 的值是动态变化的,当梯度变大的时候,η 变大,当梯度降低的时候 η 降低。那样就能够取得非常好的平衡了。

以上情况请參看例如以下图:

为了方便起见。我们让 η = k * ||▽Ein(W(0))|| ,当中 k 是一个比例常数,

于是 V = k * ▽Ein(W(0)),令 η = k,V = η * ▽Ein(W(0)).( 如今这个 η 表示的是学习率。跟曾经的含义不一样了)

接下来我们用算法描写叙述上面的过程

算法描写叙述:

为了终止算法,能够有下面方法:

1、直到找到最好的 W,效果最好,可是无法确定什么时候会终止(有可能无限...)

2、设定一个阀值,当 Ein 小于该阀值的时候终止。

3、限定迭代次数,当 t 大于某个值的时候终止。

此外应该注意的是利用该方法每次仅仅能找到局部最优值而非全局最优值,只是我们能够通过做多次试验,每次指定不同的初始值,然后取全部结果最小的作为输出。

6、总结:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVpdGlhbmh1MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

上图总结了三种线性模型在特定应用下的输出及用到的误差度量方法。不同的误差度量方法可能会导致全然不一样的结果,好的误差度量方法是机器学习的助推器。

不少学者都在对误差度量方法进行研究。希望可以找到一个对于特定情况下误差度量的最合适的方法。到目前为止。所有课程都被教导在完整的线性模型,接下来是神经网络的一部分。

版权声明:本文博主原创文章。博客,未经同意不得转载。

加州理工大学公开课:机器学习与数据挖掘_线性模型 II(第IX类)的更多相关文章

  1. 斯坦福大学公开课机器学习:advice for applying machine learning | diagnosing bias vs. variance(机器学习:诊断偏差和方差问题)

    当我们运行一个学习算法时,如果这个算法的表现不理想,那么有两种原因导致:要么偏差比较大.要么方差比较大.换句话说,要么是欠拟合.要么是过拟合.那么这两种情况,哪个和偏差有关.哪个和方差有关,或者是不是 ...

  2. 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)

    1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...

  3. 100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  4. 加州理工学院公开课:机器学习与数据挖掘_Regularization(第十二课)

    课程简单介绍: 接上一节课,这一节课的主题是怎样利用 Regularization 避免 Overfitting.通过给如果集设定一些限制条件从而避免  Overfitting,可是如果限制条件设置的 ...

  5. 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))

    上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...

  6. 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)

    误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...

  7. 斯坦福大学公开课机器学习: machine learning system design | prioritizing what to work on : spam classification example(设计复杂机器学习系统的主要问题及构建复杂的机器学习系统的建议)

    当我们在进行机器学习时着重要考虑什么问题.以垃圾邮件分类为例子.假如你想建立一个垃圾邮件分类器,看这些垃圾邮件与非垃圾邮件的例子.左边这封邮件想向你推销东西.注意这封垃圾邮件有意的拼错一些单词,就像M ...

  8. 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)

    怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...

  9. 斯坦福大学公开课机器学习:advice for applying machine learning - deciding what to try next(设计机器学习系统时,怎样确定最适合、最正确的方法)

    假如我们在开发一个机器学习系统,想试着改进一个机器学习系统的性能,我们应该如何决定接下来应该选择哪条道路? 为了解释这一问题,以预测房价的学习例子.假如我们已经得到学习参数以后,要将我们的假设函数放到 ...

随机推荐

  1. sql dateDiff函数

    当月的数据select * from MOPICK where dateDiff(m,getdate(),START_DATE)=0

  2. 配置Tomcat的日志系统

    成功配置tomcat的log4j日志系统,格式:HTML+每天以yyyy-mm-dd.log命名的日志文件 一.引言: 实习单位让用log4j配置webapp的日志系统,要求产生的日志文件是html格 ...

  3. 【从翻译mos文章】rac数据库,HC_&lt;SID&gt;.dat其他文件Oracle_Home用例下。

    rac数据库.HC_<SID>.dat其他文件Oracle_Home用例下. 参考原始: RAC database HC_<SID>.dat is used by instan ...

  4. The practice program of C on point

    //字符反向排列 //vision 1.2 #include<stdio.h> void reverse_string( char *str ) { char *string;//第一个字 ...

  5. OTG驱动分析(二)

    上回介绍了OTG功能的 OTG部分驱动,本片分析OTG功能的从设备部分驱动.从设备的注冊过程和OTG的一样,首先注冊设备. 流程是: 1.定义platform_device结构. 2.定义platfo ...

  6. ECG信号读出,检测QRS,P,T 波(小波去噪,并根据检测),基于BP辨识的神经网络

    这学期的课程选择神经网络.最后的作业处理ECG信号,并利用神经网络识别. 1  ECG引进和阅读ECG信号 1)ECG介绍  详细ECG背景应用就不介绍了,大家能够參考百度 谷歌.仅仅是简单说下ECG ...

  7. 最简单的视音频播放演示样例8:DirectSound播放PCM

    ===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...

  8. OFTP说明

    OFTP (TheOdette File Transfer Protocol,RFC 2204)作为两个商业伙伴中建立EDI连接的一种协议.它由Odette-Organization于1986年创建. ...

  9. Android应用开发:LoaderManager在Activity/Fragment中的使用分析

    LoaderManager 外部接口initLoader:起始 public <D> Loader<D> initLoader(int id, Bundle args, Loa ...

  10. 2.Cocos2dx 3.2重力系统Box2D

     1 加入Box2D相关的库 步骤1:右击项目所在的解决方式à加入->现有项目àE:\Installed\cocos2d-x-3.2\cocos2d-x-3.2\external\Box2D ...