计算社会科学讲习班 机器学习:理论与实践模块 Day3
一、正则化
前面我们提到“过度拟合是机器学习需首要解决的问题”。常见的应对策略有交叉验证和正则化。
正则化就是对我们以往的回归施加“限制”:在经验风险上加一个正则化项,使模型的平均误差和模型复杂度同时较小。
以上是一般线性 Elastic Net 模型的目标函数。目标函数的第一行与传统线性回归模型完全相同,不同之处就在于有无第二行的这个约束。
Elastic Net 模型家族包括 Ridge 回归、Lasso 回归和 Elastic Net回归。它们都可以对模型复杂度进行调整,但只有Lasso回归可以筛选变量。
1.Lasso回归
Lasso回归,一般叫L1,也叫Lasso正则。
对于Lasso回归,其约束条件是菱形,等高线与菱形的切点即为解。
相比较传统线性回归得到的是 β1和β2都起作用的模型, 而 LASSO 回归得到的是只有 β2有作用的模型,这就是 LASSO 回归能筛选变量的原因。
Stata16推出了Lasso模块,推荐关注。
2. Ridge 回归
Ridge 回归,一般叫L2,也叫Ridge 正则。
对于Ridge 回归,其约束条件是一个圆,等高线与圆形的切点即为解。
Ridge 回归的约束是一个圆,与同心椭圆的相切点会在圆上的任何位置(焦交点一般不会出现在坐标轴上),所以 Ridge 回归并没有变量筛选的功能。
3. Elastic Net回归
Elastic Net回归是L1 和 L2 的结合体,公式如下
Elastic Net 模型(0<α<1),其约束的形状介于正方形与圆形之间.
以上的三类回归都是在标准线性回归的基础上加上正则项来减小模型的方差。
需要注意的是虽然我们降低模型方差的目的实现了,但容易招致“欠拟合”。即上图的high bias,点偏离中心。
注:方差描述的是样本训练出来的模型在测试集上的表现,要想在方差上表现好,就要简化模型,减少模型的参数,但这样容易欠拟合。
偏差描述的则是根据样本拟合出来的模型的预测结果期望与样本真实结果的差距,要想在偏差上表现好,就得复杂化模型,增加模型的参数,但这样容易过拟合。
那么到底选择哪种回归,唯有通过交叉验证才能做出正确抉择
二、神经网络
人工智能的底层模型是"神经网络"。
上图中每个圆圈都是一个神经元,每条线表示神经元之间的连接。我们可以看到,上面的神经元被分成了多层,层与层之间的神经元有连接,而层内之间的神经元没有连接。最左边的层叫做输入层,这层负责接收输入数据;最右边的层叫输出层,我们可以从这层获取神经网络输出数据。输入层和输出层之间的层叫做隐藏层。
1.感知器
为了理解神经网络,我们应该先理解神经网络的组成单元——神经元。神经元也叫做感知器。感知器算法在上个世纪50-70年代很流行,也成功解决了很多问题。
- 外部刺激通过神经末梢,转化为电信号,转导到神经细胞(又叫神经元)。
- 无数神经元构成神经中枢。
- 神经中枢综合各种信号,做出判断。
- 人体根据神经中枢的指令,对外部刺激做出反应。
上图的圆圈就代表一个感知器。它接受多个输入(x1,x2,x3...),产生一个输出(output),好比神经末梢感受各种外部环境的变化,最后产生电信号。
为了简化模型,我们约定每种输入只有两种可能:1 或 0。如果所有输入都是1,表示各种条件都成立,输出就是1;如果所有输入都是0,表示条件都不成立,输出就是0。
可以举一个例子来理解感知器。“城里正在举办一年一度的游戏动漫展览,小明拿不定主意,周末要不要去参观。”
他决定考虑三个因素。
- 天气:周末是否晴天?
- 同伴:能否找到人一起去?
- 价格:门票是否可承受?
这就构成一个感知器。上面三个因素就是外部输入,最后的决定就是感知器的输出。如果三个因素都是 Yes(使用1表示),输出就是1(去参观);如果都是 No(使用0表示),输出就是0(不去参观)。
看到这里,我们会问:如果某些因素成立,另一些因素不成立,输出是什么?比如,周末是好天气,门票也不贵,但是小明找不到同伴,他还要不要去参观呢?
现实中,各种因素很少具有同等重要性:某些因素是决定性因素,另一些因素是次要因素。因此,可以给这些因素指定权重(weight),代表它们不同的重要性。
- 天气:权重为8
- 同伴:权重为4
- 价格:权重为4
上面的权重表示,天气是决定性因素,同伴和价格都是次要因素。
如果三个因素都为1,它们乘以权重的总和就是 8 + 4 + 4 = 16。如果天气和价格因素为1,同伴因素为0,总和就变为 8 + 0 + 4 = 12。
这时,还需要指定一个阈值(threshold)。如果总和大于阈值,感知器输出1,否则输出0。假定阈值为8,那么 12 > 8,小明决定去参观。阈值的高低代表了意愿的强烈,阈值越低就表示越想去,越高就越不想去。
上面的决策过程,使用数学表达即有
上面公式中,x表示各种外部因素,w表示对应的权重。
可以看出,一个神经网络的搭建,需要满足三个条件。
- 输入和输出
- 权重(w)和阈值(b)
- 多层感知器的结构
2.BP模型
感知器有一个问题,当面对的数据集不是线性可分的时候无法应对。然而现实世界中有很多数据是线性不可分的,BP神经网络的出现解决了这个问题。
BP模型也称为反向传播模型,其思想可以概括为:利用输出层的误差来估计出其直接前导层的误差,再借助于咱这个新的误差来计算更前一层的误差,此过程一直进行到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数为止。
神经网络的学习中,最困难的部分就是确定权重(w)和阈值(b)。目前为止,这两个值都是主观给出的,但现实中很难估计它们的值,必需有一种方法,可以找出答案。
这种方法就是试错法。其他参数都不变,w(或b)的微小变动,记作Δw(或Δb),然后观察输出有什么变化。不断重复这个过程,直至得到对应最精确输出的那组w和b,就是我们要的值。
以上,神经网络的运作过程如下。
- 确定输入和输出
- 找到一种或多种算法,可以从输入得到输出
- 找到一组已知答案的数据集,用来训练模型,估算w和b
- 一旦新的数据产生,输入模型,就可以得到结果,同时对w和b进行校正
即神经网络学习的本质,就是不断地将预测值与实际值进行比较,不断调整权重,使得误差平方和最小。
三、聚类
聚类分析是没有给定划分类别的情况下,根据样本相似度进行样本分组的一种方法,是一种非监督的学习算法。
其中,k均值聚类(K-Means)、层次聚类(BIRCH)、密度聚类(DBSCAN)基本可以解决大部分数据聚类问题,其中比较常见的是K-Means聚类。
K-Means的优点有:
- K-Means是解决聚类问题的一种经典算法,具有简单快速的特点。
- K-Means对大数据集的处理,能保持可伸缩性和高效率。
- 当结果cluster密集时,效果较好。
K-Means的缺点有:
- 在cluster的平均值可被定义的情况下才能使用,可能不适用于某些应用。
- 必须事先给出k,而且对初值敏感,对于不同的初始值,可能会导致不同结果。
- 不适合于发现大小差别很大的cluster
- 对噪声和孤立点数据敏感
对于K-Means,K的选择是个考验,需要我们对研究工作做一定的探索,人为地设置不同的值。这里,算法并不能帮我们确定分类中心的个数。
此处,K数量的设置属于调参的一部分,主要思路是泛化误差:只有当模型的复杂度刚刚好的才能够达到泛化误差最小的目标。所以分多少类别,在于评估我们的泛化误差是否达到最小。
一个模型在未知数据集上的泛化误差,由方差、偏差和噪声共同决定。通常我们认为数据不存在噪声,所以要想提高模型的准度,就需要较小的方差,较小的偏差。
参考资料:
1.热门数据挖掘模型应用入门(一): LASSO 回归
2.多元线性回归模型的特征压缩:岭回归和Lasso回归
3.线性回归——lasso回归和岭回归(ridge regression)
4.机器学习中的正则化
5.机器学习算法实践-岭回归和LASSO
6.机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
7.神经网络入门
8.零基础入门深度学习(1) - 感知器
9.机器学习 | 聚类分析总结 & 实战解析
10.【机器学习】常用聚类算法原型
11.机器学习——聚类算法(一)