机器学习基石总结(未完待续......)
台湾大学林轩田老师讲授的《机器学习基石》、《机器学习技法》两门公开课在两岸三地享有盛誉,造福了许多机器学习小白。作为小白中的一员,八月中旬的时候我有幸学习了《机器学习基石》,感到受益匪浅。林老师授课深入浅出,循循善诱,自觉跟着林老师的脚步也能窥测machine learning这个神奇大世界的一二门道,非常感谢林老师的无私奉献以及让知识自由流动的互联网,高山仰止景行行止。
曾经听说过一句名言,不知道是马云先生还是鲁迅先生说的,名言一般挂在这二位名人头上:
不做笔记、不复习、不总结的学习就是耍流氓,比不结婚谈恋爱还流氓
为了不当流氓,也为了温故知新,特意于此时此刻2017-11-10 20:54:47将学习《机器学习基石》公开的的笔记和心得整理一番。
《机器学习基石》一共分为16个课时,每课时大概在一个小时左右。总体说来,这门课可以分为以下几个部分:
- Lecture1-3:机器学习的基本概念
- Lecture4-7:可学习性理论,机器学习为什么有效?
- Lecture8:噪声和误差
- Lecture9:线性回归
- Lecture10:逻辑回归
- Lecture11:用于分类问题的线性模型
- Lecture12:非线性变换nonlinear transformation
- Lecture13:过拟合问题
- Lecture14:正则化
- Lecture15:验证validation
- Lecture16:三大原则three learning priciple
本文并不打算照搬ppt,逐个介绍模型,推导公式,这样的文章如汗牛充栋,早已有之。既然是为了总结,本文的目的是记录让那些作者感觉耳目一新的知识点和概念,它们都凝结着天才的智慧火花。
机器学习的基本概念
机器学习的初心是 利用数据data来计算求出假设g,目的是近似逼近目标函数f;机器学习模型 = 学习算法A + 假说集H。在学习各种纷繁复杂的算法和模型的时候,不要忘了这个基本出发点。学习机器学习算法,就是学习怎样使用符合业务实际的假说集H,就是学习能够求得最优假说函数g的学习算法learning algorithm A。

可学习性理论
可学习性理论主要研究机器学习为什么能够学习到知识,里面涉及到的内容有VC维、泛化理论等,十分复杂。实话实说,在学习这几个课时的时候,作者就感到云里雾里,晦涩难懂,几个月后的今天在回顾时竟然只记得一张图(这种图个人认为对于理解模型复杂度十分重要),其他的内容竟然全部忘光了。后面又和好几位工作一线的算法工程师沟通,他们都表示不懂,建议我放弃,毕竟只是未来的搬砖民工,自然难以像林教授这样理解透彻。所以,作者认为只要牢记下图即可,该图直观生动地表明了模型复杂度过高(过拟合)时的危害。

图中的VC维\({d_{VC}}\)可以理解为模型的复杂度,\({d_{VC}}\)不是越大越好,过拟合会导致模型的效果很差。因此,机器学习中存在着一系列的方法来控制模型的复杂度,防止过拟合。
噪声与误差
错误衡量函数\(\mathop {err}\limits^{\text{^}} \)的定义一般有两种,分别是0/1错误函数和平方错误函数。显然,0/1错误函数不可导,所以对它的优化是NP-hard问题。
\[err(g(x),f(x) = \left\{ {\begin{array}{*{20}{c}}
{\left[\kern-0.15em\left[ {g(x) \ne f(x)}
\right]\kern-0.15em\right]}&{for{\kern 1pt} {\kern 1pt} classification{\kern 1pt} {\kern 1pt} problem} \\
{{{(\mathop y\limits^{\text{~}} - y)}^2}}&{for{\kern 1pt} {\kern 1pt} regression{\kern 1pt} {\kern 1pt} problem}
\end{array}} \right.\]
逻辑斯蒂回归(未完待续......)
LR模型在推荐系统中的应用十分广泛,分为二元逻辑斯蒂回归和多元逻辑斯蒂回归。
该模型引入了sigmoid函数,其表达式如下:
\[\theta (s) = \frac{1}{{1 + {e^{ - s}}}}\]
LR模型的求解其实很简单,利用条件极大似然估计即可,极大似然函数最后化简得到的表达式实际上是交叉熵公式。
LR模型中最困扰作者的问题是:为什么sigmoid函数有效?为什么可以用sigmoid函数来代表条件概率密度函数\(P(y|X)\)?
关于这个问题,文章Logistic Regression模型简介有很好的讲解,后面有时间再详细叙述。
多元分类方法
一共有One-Versus-All和One-Versus-One两种方法,前者常常会有类别不平衡问题,后者需要训练的模型数量较多,总共需要训练\(\frac{1}{2}k(k - 1)\)个模型。
梯度下降法、随机梯度下降法SGD(未完待续......)
拉格朗日乘数法(未完待续......)
L1正则化与L2正则化(未完待续......)
验证validation方法
- 为什么数据要分为测试集和验证集?为什么不能“在训练集中运行若干个模型,选择\({E_{in}}\)最小的模型”?因为这样做实际上会增加模型的复杂度,证明如下:
我们不妨假设\(E_{in}^1\)是在训练集D上运行\({H_1}\)模型所求得的误差量,\(E_{in}^2\)是在训练集D上运行\({H_2}\)模型所求得的误差量,那么求出的\(g_m^*\)实际上对应的是在模型\({H_1} \cup {H_2}\)上选择最小的\({E_{in}}\),仅仅是增大了模型复杂度和过拟合的风险而已。
- 选择验证集的方法有哪些:留一验证法和v折验证法,由于前者时间复杂度太大,通常选择v折验证法。
浙公网安备 33010602011771号