Machine Learning Chinese NLP :::: Normal Equation Noninvertibility - Chad Salinas ::: Data Scientist
Life and times of Chad Salinas
Chad Salinas, golf caddy, data scientist, chad rPubs, recovering chess addict, daddy caddy
1214
post-template-default,single,single-post,postid-1214,single-format-standard,qode-listing-1.0.1,qode-social-login-1.0,qode-news-1.0,qode-quick-links-1.0,qode-restaurant-1.0,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-12.0.1,qode-theme-bridge,bridge,wpb-js-composer js-comp-ver-5.4.2,vc_responsive

Machine Learning Chinese NLP :::: Normal Equation Noninvertibility

How to deal with the problem of Noninvertibility

在这段视频中我想谈谈正规方程 ( normal equation ) 
以及它们的不可逆性 
由于这是一种较为深入的概念 
并且总有人问我有关这方面的问题 
因此 我想在这里来讨论它 
由于概念较为深入

所以对这段可选材料大家放轻松吧 
也许你可能会深入地探索下去 
并且会觉得理解以后会非常有用

但即使你没有理解

正规方程和线性回归的关系 
也没有关系 
我们要讲的问题如下 
你或许可能对 
线性代数比较熟悉 
有些同学曾经问过我 
当计算 
θ等于inv(X’X ) X’y (注:X的转置翻译为X’,下同) 
那对于矩阵X’X的结果是不可逆的情况咋办呢? 
如果你懂一点线性代数的知识 
你或许会知道 
有些矩阵可逆 而有些矩阵不可逆 
我们称那些不可逆矩阵为 
奇异或退化矩阵 
问题的重点在于X’X的不可逆的问题 
很少发生 
在Octave里 如果你用它来实现θ的计算 
你将会得到一个正常的解 
在这里我不想赘述 
在Octave里 有两个函数可以求解矩阵的逆 
一个被称为pinv() 另一个是inv() 
这两者之间的差异是些许计算过程上的 
一个是所谓的伪逆 另一个被称为逆 
使用pinv() 函数可以展现数学上的过程 
这将计算出θ的值 
即便矩阵X’X是不可逆的 
在pinv() 和 inv() 之间 
又有哪些具体区别呢 ? 
其中inv() 引入了先进的数值计算的概念 
我真的不希望讲那些 
因此 我认为 
可以试着给你一点点直观的参考 
关于矩阵X’X的不可逆的问题 
如果你懂一点线性代数 
或许你可能会感兴趣 
我不会从数学的角度来证明它 
但如果矩阵X’X结果是不可逆的 
通常有两种最常见的原因 
第一个原因是 如果不知何故 在你的学习问题 
你有多余的功能 
例如 在预测住房价格时 
如果x1是以英尺为尺寸规格计算的房子 
x2是以平方米为尺寸规格计算的房子 
同时 你也知道1米等于3.28英尺 ( 四舍五入到两位小数 ) 
这样 你的这两个特征值将始终满足约束 
x1等于x2倍的3.28平方 
并且你可以将这过程显示出来 讲到这里 可能 或许对你来说有点难了 
但如果你在线性代数上非常熟练 
实际上 你可以用这样的一个线性方程 来展示那两个相关联的特征值

矩阵X’X将是不可逆的 
第二个原因是 在你想用大量的特征值 
尝试实践你的学习算法的时候 
可能会导致矩阵X’X的结果是不可逆的 
具体地说 在m小于或等于n的时候 
例如 有m等于10个的训练样本 
也有n等于100的特征数量 
要找到适合的 ( n +1 ) 维参数矢量θ 这是第 n+1 维 
这将会变成一个101维的矢量 
尝试从10个训练样本中找到满足101个参数的值 
这工作可能会让你花上一阵子时间 
但这并不总是一个好主意 
因为 正如我们所看到 你只有10个样本 以适应这100或101个参数 
数据还是有些少 
稍后我们将看到 
如何使用小数据样本以得到这100或101个参数 
通常 我们会使用一种叫做正则化的线性代数方法 
通过删除某些特征或者是使用某些技术 
来解决当m比n小的时候的问题 
这也是在本节课后面要讲到的内容 
即使你有一个相对较小的训练集 
也可使用很多的特征来找到很多合适的参数 
有关正规化的内容将是本节之后课程的话题 
总之当你发现的矩阵X’X的结果是奇异矩阵 
或者找到的其它矩阵是不可逆的 
我会建议你这么做 
首先 看特征值里是否有一些多余的特征

像这些x1和x2是线性相关的 
或像这样 互为线性函数 
同时 当有一些多余的特征时 
可以删除这两个重复特征里的其中一个 
无须两个特征同时保留 
所以 发现多余的特征删除二者其一 
将解决不可逆性的问题 
因此 首先应该通过观察所有特征检查是否有多余的特征 
如果有多余的就删除掉
 

Any programming problem can be solved by adding a level of indirection.

– David J. Wheeler

No Comments

Sorry, the comment form is closed at this time.