前言:基于人大的《数据科学概论》第五章,数据的深度分析(数据挖掘、机器学习)。主要是机器学习与数据挖掘、具体的算法、主流工具、特征选择的内容。
**简说:**从基础数据计算一些聚集统计量(Aggregations),生成报表(Reports),观察同比/环比的变化,以及通过数据透视表(Pivotal Table),从不同维度观察数据的汇总信息,只能算是对数据的简单分析。
数据挖掘,可以认为是机器学习算法在数据库上的应用,很多数据挖掘中的算法是机器学习算法在数据库中的优化。
但是,数据挖掘能够形成自己的学术圈,是因为它也贡献了独特的算法,其中最著名的是关联规则分析方法Apriori
机器学习的目的是分类和预测。所谓的分类是根据输入数据,判断这些数据隶属于哪个类别(Category)。而预测则是根据输入数据,计算一个输出值(Numeric)。输入数据一般为一个向量,也称为特征(Feature),输出则是一个分类或者一个数值。
机器学习的基本过程是用训练数据(包含输入数据和预期输出的分类或者数值)训练一个模型(Model),利用这个模型,就可以对新的实例数据(Instances)进行分类和计算一个预测值。
监督学习
是机器学习的一种类别,训练数据由输入特征(features)和预期的输出构成,输出可以是一个连续的值(称为回归分析),或者是一个分类的类别标签(称为分类)。无监督学习
与监督学习的区别是,它没有训练样本,直接对数据进行建模。半监督学习
,是监督学习与无监督学习相结合的一种学习方法。它研究如何利用少量的标注样本和大量的未标注样本进行训练和预测的问题。半监督学习包括半监督分类、半监督回归、半监督聚类和半监督降维算法。定义:在机器学习中,决策树
是一个预测模型,它表示对象属性(比如贷款用户的年龄、是否有工作、是否有房产、信用评分等)和对象值(是否批准其贷款申请)之间的一种映射。决策树中的非叶子节点,表示用户对象属性的判断条件,其分支表示符合节点条件的所有对象,树的叶子节点表示对象所属的预测结果。
在决策树建立的过程中,很容易出现过拟合
的现象(Overfitting)
过拟合
是指模型非常逼近训练样本,模型是在训练样本上训练出来的,在训练样本上预测的准确率很高,但是对测试样本的预测准确率不高,效果并不好(有不必要的属性)。预先剪枝
和后剪枝
两种情况。
预先剪枝
指的是在决策树构造过程中,使用一定条件加以限制,在产生完全拟合的决策树之前就停止生长。后剪枝
是在决策树构造完成之后,也就是所有的训练样本都可以用决策树划分到不同子类以后,按照自底向上的方向,修建决策树。K-means算法是最简单的一种聚类算法,属于无监督学习算法。
通过一个二维平面上的简单分类,来介绍支持向量机分类技术。
**松弛变量**
(Relax Variable)来解决,松弛变量是为了纠正或约束少量“不安分”或脱离集体不好归类的数据点的因子。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NLKuHZtD-1609316416847)(image-20201226120241362.png)]
支持向量回归的特点
SVM
的目的是通过一条直线,尽量把两类数据点分开。而**SVR
则通过一个管道,尽量把数据点都囊括进来。**简说:关联规则分析,最典型的例子是购物篮分析。通过关联规则分析,能够发现顾客每次购物交易的购物篮中的不同商品之间的关联,从而了解客户的消费习惯,让商家能够了解哪些商品被客户同时购买,从而帮助他们制定更好的营销方案。
支持度
support = P(AB),指的是事件A和事件B同时发生的概率。置信度
confidence = P(B|A)= P(AB)/P(A),指的是是发生事件A的基础上,发生事件B的概率。
挖掘关联规则的主流算法为Apriori
算法。他的基本原理是,在数据集中找出同时出现概率符合预定义(Pre-defined)支持度的频繁项集,而后从以上频繁项集中,找出符合预定义置信度的关联规则。
EM(最大期望)算法,是在概率模型(Probability Distribution Model)中,寻找参数的最大似然估计的算法。其中,这个概率模型包括无法观测的隐藏变量(Latent Variable)。EM算法一般用于机器学习的聚类。
假设我们用硬币A和硬币B进行投掷硬币实验。这两个硬币在进行投掷实验时,正面朝上的概率分别为θA和θB。我们进行了5轮投掷实验,每轮实验要么选择硬币A,要么选择硬币B,一共连续投掷10次,每次投掷结果要么正面朝上(用H表示),要么背面朝上(用T表示)。于是我们得到5个正面/背面标志列表
简说:信息的极度爆炸,使得人们找到他们需要的信息变得越来越难。面对海量的数据,用户需要更加智能的、更加了解他们的需求、口味、和喜爱的信息发现机制,于是推荐系统孕育而生。
基于内容的推荐的基本思路是,根据物品或者内容的描述信息,发现他们之间的相似性,然后基于用户以往的偏好历史记录,推荐相似的物品或者内容。
简单来说就是,用户喜欢什么就给他推荐什么。
冷启动
问题。
冷启动
问题是模型刚开始运行时缺乏必要的历史数据。基于人口统计学的推进机制,是一种最易于实现的推荐方法。它根据用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品,推荐给当前用户。
简单来说就是根据一个人的喜好,推荐给另一个人。
近邻
。基于协同过滤的推荐,根据用户对物品或者内容的偏好,发现物品或者内容之间的相似性,或者发现用户之间的相似性,然后基于这些相似性进行推荐。
分为三个子类:
基于用户的协同过滤推荐,是根据用户对物品或者内容的偏好,发现与某个用户偏好相似的k个“邻近”用户(可以根据KNN算法进行计算),然后基于这k个“近邻”用户的历史偏好信息,为该用户进行推荐。
由图可以看出,用户ACD距离较近,用户BE距离较近。
基于项目的协同过滤推荐,是使用所有用户对物品或者内容的偏好信息,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。
它是应用最为广泛的推荐机制。
KNN(Near Neighbors)算法是一种分类算法。它根据某个数据点周围的最近K个邻居的类别标签情况,赋予这个数据点一个类别。
给定一个测试数据点,计算它与数据集中其他数据点的距离;找出距离最近的K个数据点,作为该数据点的近邻数据点集合;根据这k个近邻所归属的类别,来确定当前数据点的类别。
P(B|A)表示在事件A已经发生的前提下,事件B发生的概率,称为事件A发生情况下,事件B发生的“条件概率”。
朴素贝叶斯分类是运用上述贝叶斯定理,并且假设特征属性是条件独立的一种分类方法,即朴素贝叶斯分类器假设样本的每个特征与其他特征都不相关。
Boost算法系列的思想,来自于PAC可学习型理论。该理论研究什么时候一个问题是可被学习的,以及可学习问题的具体学习方法。
AdaBoost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。
AdaBoost是一种有很高精度的分类器,其算法具有如下特点:
回归分析是应用广泛的统计分析方法,用于分析事物之间的相关关系。
一元线性回归模型
,指的是只有一个解释变量的线性回归模型。多元线性回归模型
则是包含多个解释变量的线性回归模型。解释变量
就是自变量,而被解释变量
就是因变量。回归模型
就是描述因变量和自变量之间依存的数量关系的模型。一元线性回归模型具有y=ax+b的简单形式,a称为自变量x的系数,b称为截距,y=ax+b对应到图形,则是二维平面上的一条直线。扩展到多元线性回归模型,其形式为y=∑1_(i=1)^n▒〖a_i x_i 〗+b,方程中包含n个自变量x1, x2, …, xn,其系数分别是a1, a2, …, an。
注:建立多元线性回归模型的目的,是解释数据以及进行预测。
拟合优度检验
、回归方程显著性检验
、回归系数的显著性检验
。回归方程的拟合优度指的是,回归方程对样本的各个数据点的拟合程度。
拟合优度的度量一般使用判定系数**R2**。R2越大,方程的拟合程度越高。
R2的计算公式为**R2=SSR/SST=1-SSE/SST**。当一个多元线性回归模型,其判定系数接近1.0,说明其拟合优度较高。
回归方程的显著性检验,目的是评价所有自变量和因变量的线性关系是否密切。常用F检验统计量进行检验,F检验是对模型整体回归显著性的检验。F统计量的计算公式为F=(SSR/k)/(SSE/(n-k-1))
,n为样本容量,k为自变量个数。
使用t检验,分别检验回归模型中的各个回归系数是否具有显著性,以便使模型中只保留那些对因变量有显著影响的因素。t检验是对单个解释变量回归系数的显著性检验。
所谓共线性
,指的是自变量之间存在较强的线性关系,这种关系如果 超越 了因变量与自变量的线性关系,那么回归模型就不准确了。在多元线性回归模型中,共线性现象无法避免,只要不太严重就可以了。
在多元线性回归中,还存在一个自变量选择问题,因为并不是所有的自变量都对因变量有解释作用。
变量选择的方法,包括前向筛选法、后向筛选法、和逐步筛选法三种。
自变量不断进入回归方程的过程。选择与因变量具有最高相关系数的自变量进入方程,并进行各种检验。其次,在剩余的自变量中寻找偏相关系数最高的变量进入回归方程,并进行检验。反复上述步骤,直到没有可进入方程的自变量为止。回归系数检验的概率P值小于Pin(0.05),才可以进入方程。
自变量不断剔除出回归方程的过程。首先,将所有自变量全部引入回归方程。其次,在一个或多个t值不显著的自变量中,将t值最小的那个变量剔除出去,并重新建立方程和进行检验。回归系数检验值大于Pout(0.10),则剔除出方程。如果新方程中所有变量的回归系数t值都是显著的,则变量筛选过程结束。否则,重复上述过程,直到没有变量可剔除为止。
是“前向筛选法”和“后向筛选法”的结合。前向筛选法,只对进入方程的变量的回归系数进行显著性检验,而对已经进入方程的其它变量的回归系数不再进 行显著性检验。也就是,变量一旦进入方程就不会被剔除。随着变量的逐个引进,由于变量之间存在着一定程度的相关性,使得已经进入方程的变量其回归系数不再显著,因此会造成最后的回归方程可能包含不显著的变量。逐步筛选法则在变量的每一个阶段都考虑的剔除一个变量的可能性。
Logistic回归,实际上是一种分类方法,主要用于二分类问题。Logistic回归与多元线性回归,有很多相同之处,最大的区别是他们的 因变量不同 。两者可以归于同一个模型家族,即广义线性回归模型
(Generalized Linear Model)。这一家族的模型,形式类似,即样本特征的线性组合,不同的是他们的因变量。
负二项分布
,就是负二项回归
。为了了解Logistic回归,需要首先了解Logistic函数(称为Sigmoid函数)。其函数形式为g(z)=1/(1+e^(-z) )。这个函数的自变量的变化范围是(-∞,+∞),函数值的变化范围是[0,1]。
简说:人工神经网络
是模仿动物和人类神经系统特征,进行分布式并行信息处理的数字模型。通过把大量人工神经元节点(感知机)连接起来,形成神经网络,并且利用训练数据调整优化节点间的连接强度,从而达到对新数据进行处理(分类、预测等)的目的。
神经网络由“神经元”(或者称为感知机Perceptron)组成。在计算机里对神经元进行建模的时候,通过一个激活函数
把神经元的输入映射到输出值。
激活函数
:一般来讲,激活函数为一个非线性函数,目的是对实际应用中输出和输入之间的非线性关系进行建模。
下图展示了一个简单的神经元。期中,x1、x2、x3为神经元的输入,神经元的输出通过hw,b(x)=f(∑1_(i=1)^3▒〖w_i x_i+b〗)函数来计算,这里f:R->R称为激活函数。
简说:简单神经网络是前馈神经网络
(Feed Forward Neural Network ),在这个神经网络中,每一层的结点仅和下一层的结点相连。除了前馈神经网络外,另外一种类型的神经网络称为递归神经网络
,它允许同一层节点相连或某一层的结点连到前面各层中的结点。在下文中,如果不做特殊说明,我们讨论的将是前馈神经网络。
神经网络
就是由许多单一的神经元连接而成的网络结构,一个神经元的输出,可以是另外一个神经元的输入。Layer1为输入层、Layer2为隐藏层、Layer3为输出层。
**计算输出值的过程称为前向传播。**在前向传播过程中,每个神经元首先把上一层各个神经元获得的数值进行加权(每个连接的权重)求和,然后应用激活函数,获得相应的输出,然后通过与下一层的连接传播给下一层的各个神经元,直到获得最后的输出。
–Wij(l)表示第l层第j单元与第l+1层第i单元之间的连接参数,也就是连接线上的权重,bi(l)表示第l层第i单元的偏置项,也就是激活函数的常量部分。ai(l)表示第l层第i单元的激活值(输出值),当l=1的时候,ai(1)=xi。
–激活过程可以用如下的公式表示出来:
–〖a_1〗^((2) )=f(〖w_11〗^((1) ) x_1+〖w_12〗^((1) ) x_2+〖w_13〗^((1) ) x_3+〖b_1〗^((1) ) )
–〖a_2〗^((2) )=f(〖w_21〗^((1) ) x_1+〖w_22〗^((1) ) x_2+〖w_23〗^((1) ) x_3+〖b_2〗^((1) ) )
–〖a_3〗^((2) )=f(〖w_31〗^((1) ) x_1+〖w_32〗^((1) ) x_2+〖w_33〗^((1) ) x_3+〖b_3〗^((1) ) )
–h_(w,b) (x)=〖a_1〗((3))=f(〖w_11〗((2) ) 〖a_1〗^((2) )+〖w_12〗^((2) ) 〖a_2〗^((2) )+〖w_13〗^((2) ) 〖a_3〗^((2) )+〖b_1〗^((2) ))
神经网络的权重,使用一种称为反向传播的方法,进行训练。
该算法与1986年由Rumelhar 和 Hinton 等人提出,该方法解决了带隐藏层的神经网络优化的计算量问题,使得带隐藏层的神经网络走向真正的实用。
形象的描述:反向传播算法,开始在输入层输入特征向量,经过神经网络各个隐藏层的层层计算获得输出,输出层发现输出和正确的输出(训练数据的输出部分)不一样,这时它就让最后一层神经元进行参数调整。最后一层神经元不仅自己调整参数,还会要求连接它的倒数第二层神经元调整连接权重,并且逐层往回退,调整各个神经网络层间的连接的权重。
神经网络模仿了动物和人类神经系统的行为特性,经过训练的神经网络能够对非线性关系进行建模,在分类和预测方面获得了较好的性能。1986年反向传播算法解决了训练效率问题后,神经网络被应用到语音识别、图像识别、自动驾驶等多个领域,也获得了较好的效果。
SVM
在若干个方面,体现出了比神经网络更大的优势,比如无需调整参数,训练和执行效率高,可以获得全局最优解。SVM在20世纪90年代到21世纪初,迅速代替神经网络,成为更加流行的机器学习算法,直到深度学习技术的崛起。深度学习是21世纪初流行起来的机器学习方法,它依赖于更深层次的神经网络。深度学习在图像识别、语音识别、自然语言处理、机器人等领域,获得了超过传统机器学习方法的性能。
深度神经网络可以做自动识别样本的特征。这一点,使得深度学习在一些不知如何设计有效的特征的应用场合,比如图像识别和语音识别等,获得了很好的性能。**在神经网络中,浅层的神经元学习到初级的简单的特征,馈入下一层神经网络,深层的神经元在前一层神经元识别到的特征的基础上,学习到更加复杂的特征。**这个过程在相邻的神经网络层间重复,各个神经网络层学习到不同抽象级别的特征,越是靠后的神经网络层,学习到更加抽象的特征,最后完成预定的识别任务,比如语音识别和图像识别。
一个栗子:
比如在图像识别中,
隐藏层
:是神经网络对训练数据进行内部抽象表示的结构,就像人脑对现实世界的对象有一个内部表示一样。在神经网络里增加隐藏层,使得后续的隐藏层可以在前导隐藏层的内部表示的基础上,建立新的抽象级别的内部表示。
可以说,深度模型是技术手段,特征学习是目的。
深度学习的不同之处在于:
卷积神经网络CNN
和循环神经网络RNN
),组成一个模型,完成这个任务。其中一个神经网络负责图像识别,另外一个神经网络负责语言生成。图28展示了他们使用的网络结构。这个网络结构,基于左边的图片,生成了右边的文字描述。深度神经网络的基本模块,包括Autoencoder、Restricted Boltzmann Machines等。
不同的神经网络模型,包括CNN
、DBN
、RNN
、LDTM
等。
通常来讲,一个Autoencoder就是一个前向反馈的简单神经网络,它的目的是从训练数据上学习一个经过压缩的简洁的数据的表示、或者简洁的一个编码。
标准的玻尔兹曼机,由可见单元层(Visible Layer,扮演输入/输出层)以及隐藏层(Hidden Layer)构成。可见单元层和隐藏层的单元之间是双向全联通的,也就是数据可以从可见层的单元传播到隐藏层的单元,也可以从隐藏层的单元传播到可见单元层的单元;可见单元层的每个单元和隐藏层的每个单元之间都有连接。
受限玻尔兹曼机
。一般来讲,各个单元的激活函数产生0或者1,这些0/1输出符合伯努力分布。梯度消失问题
是指当我们在神经网络中加入更多的隐藏层的时候,反向传播过程很难把修正信息传播回前面的隐藏层,本应用于修正模型参数的误差随着层数的增加而指数递减,相对于各个隐藏层之间的连接的权重来讲,开始变得很小,这导致了模型训练的效率低下,无法获得好的训练模型。过度拟合
,则是训练出来的模型对训练数据拟合过度,但是当用这个模型来对新的数据进行分类和预测时,模型表现就不是很好,也就是缺乏泛化能力。近年来出现了新的实践上非常有效的正则化方法提高模型泛化能力,比如Dropout和Drop Connect,以及数据扩增技术等。就像堆叠Autoencoder一样,我们也可以堆叠RBM,堆叠RBM构成的网络,称为深度信念网络
。在这种情况下,第t个堆叠的RBM的隐藏层,作为第t+1个堆叠的RBM的可见层。而第一个堆叠的RBM的输入层,就是整个网络的输入层。
**卷积神经网络
是一种特殊类型的前向反馈神经网络,特别适合于图像识别、语音分析等应用领域。**卷积神经网络由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。该优点在网络的输入,避免了传统识别算法中复杂的特征提取过程。并且,在一个映射面生共享权值,使得图像的特征被检测出来,而不管它的位置是否发生移动。
卷积操作
:卷积操作就是一个图像过滤器,它定义为对一个矩形图像区域进行加权操作。卷积神经网络的结构
卷积神经网络是一个多层的神经网络结构,各层为C层(Convolutional,卷积)或者S层(Subsampling,子采样)。
用于手写识别的LeNet-5
用于手写体(Digit Recognition)识别的LeNet-5是一个卷积神经网络,不算输入层,它一共有7层,每层都包含可以训练的连接权重。
–(1) 输入为32*32大小的图像。
–(2) C1层是一个卷积层,使用6个滤波器。C1层由6个特征图.Feature Map构成,特征图中每个神经元与输入中55的邻域相连,特征图的大小为2828。每个滤波器55=25个unit参数和一个bias参数,一共有(55+1)*6=156个可训练参数。
–(3) S2层是一个子采样层,对图像进行子抽样,可以减少数据处理量同时保留有用信息。S2层有6个1414的特征图。特征图中的每个单元与C1中相对应特征图的22邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,通过sigmoid函数计算结果。S2层有12个可训练参数。
对于自然语言处理、语言识别等应用,样本出现额的时间先后顺序非常重要,使用CNN神经网络进行分析不合适。在这样的应用场合,循环神经网络RNN是可行的方案。人们使用循环神经网络,来对时间关系进行建模。
RNN通过参考历史信息,来对样本的时间关系进行建模。一个自然的问题是,RNN是否可以参考未来信息呢?答案是可以的,这就是双向RNN
。
LSTM本质上是一种RNN。
双向LSTM网络的目标和双向RNN是一致的,那就是它提供一种参考当前信息的较长时间段内的的历史、和未来信息(当前事件的更长时间段内的上下文环境)的机制。其网络结构和双向RNN类似,区别在于其基本构造单元换成了LSTM Cell。
RNN和LSTM的应用
–RNN和LSTM,以其强大的时间关系建模能力,被人们应用到很多场合。包括时间序列的预测(Time series prediction)、计算机音乐创作(Computer Composed Music)、节奏学习(Rhythm learning)、语法学习(Grammar learning)、机器翻译(Machine Translation) 、基于字符的 LSTM 语言模型(character-level language models)、语音识别(Speech Recognition)、自动给图像加描述(Image Captioning,也称为图文转换)、手写体识别(Handwriting recognition)、机器人控制(Robot control)、人体动作识别(Human action recognition)、蛋白质同源性检测(Protein Homology Detection)等。
deeplearning.net网站提供了一个LSTM的应用教程,通过创建一个LSTM神经网络模型,实现对电影评论数据集(Movie Review Dataset)的情感分析(Sentiment Analysis)。这个模型由一个LSTM层、一个平均池化层、以及一个logistic回归层构成,如图所示。
在机器学习中,特征选择起到至关重要的作用。特征选择的好,可以对数据量进行有效精简,提高训练速度,这点对于复杂模型来讲尤其重要。此外,特征选择,可以减少噪音特征,提高模型在测试数据集上的准确性,防止过拟合以及欠拟合情况的发生。
因为一些噪音特征,会导致模型出现错误的泛化,从而使得模型在测试集上表现较差。另外,从模型复杂度看,特征越多,模型越复杂,越容易发生过拟合的情况。常用的特征选择方法有互信息、信息增益、开放检验等方法。
信息增益法
是根据某特征项为整个分类能够提供多少信息量,衡量该特征项的重要程度,从而决定对特征项的取舍。(为整体做了多少贡献,决定需不需要这个信息。)
某个特征项的信息增益
:指的是有该特征或者没有该特征时,为整个分类所能提供的信息量的差别。其中,信息量的多少由熵
来衡量。
卡方检验是统计学的基本方法。它的基本思想,是通过观察实际值与理论值(预期)的偏差,来决定理论的正确与否。
互信息用来评价一个事件的出现,对另一个事件的出现所贡献的信息量。
(对另一个事件的贡献)
ark MLlib系统
3. Weka系统
4. R系统与语言系统
5. SPSS与MatLab
6. TensorFlow
7. Caffe
在机器学习中,特征选择起到至关重要的作用。特征选择的好,可以对数据量进行有效精简,提高训练速度,这点对于复杂模型来讲尤其重要。此外,特征选择,可以减少噪音特征,提高模型在测试数据集上的准确性,防止过拟合以及欠拟合情况的发生。
因为一些噪音特征,会导致模型出现错误的泛化,从而使得模型在测试集上表现较差。另外,从模型复杂度看,特征越多,模型越复杂,越容易发生过拟合的情况。常用的特征选择方法有互信息、信息增益、开放检验等方法。
信息增益法
是根据某特征项为整个分类能够提供多少信息量,衡量该特征项的重要程度,从而决定对特征项的取舍。(为整体做了多少贡献,决定需不需要这个信息。)
某个特征项的信息增益
:指的是有该特征或者没有该特征时,为整个分类所能提供的信息量的差别。其中,信息量的多少由熵
来衡量。
卡方检验是统计学的基本方法。它的基本思想,是通过观察实际值与理论值(预期)的偏差,来决定理论的正确与否。
互信息用来评价一个事件的出现,对另一个事件的出现所贡献的信息量。
(对另一个事件的贡献)