机器学习总结
机器学习相关知识
写在前面的话
- 保持怀疑的态度(在全新的数据集上测试分类器)
- 天下没有免费的午餐(没有适用的最好学习方法,具体问题具体对待)
- 正确对待缺失值,不同参数的设置可能会对结果产生不同的影响
- 不同算法都有对应的假设
- 数据挖掘的结果总会误导人,保持求真的态度
数据类型
- 连续型
- 离散型
- 标称型
概念
- 离散化
- 归一化
- 正则化
度量指标
- 欧几里得距离
以\(R\)为实数域,对于任意一个正整数n,实数的n元组的全体构成了R上的一个n维向量空间,用 \(R^n\) 来表示。 \(R^n\) 中的元素可以写成 $ X=(x_1,x_2,...x_n)$ .
欧式范数定义 \(R^n\) 上的距离函数为:
可以使用上面的公式来度量n维空间中任意两点之间的距离。这也是在推荐系统中度量样本点的相似程度的一种方式。
- 余弦相似度
余弦相似度是基于n维空间向量的。所谓向量就是在向量的空间中的坐标原点指向该空间某一个点的度量表示。n维空间由n条互相正交的基向量构成,彼此无关,也是构成整个向量空间的基础结构。我们能够比较直观理解的是三维向量,超过三维就比较难以理解了。
点积 对于任意两个向量 x、y 点积<x,y>定义为
向量长度 定义为
余弦相似度 定义为
越相似二者夹角越小越趋向于1,若两向量朝逆方向延伸,则度量值趋向于-1 可以明显的从数值中看到趋势。
- 皮尔逊距离
模型评估
模型评估帮助我们找到最佳的模型来代表给定的数据集并且能够选择出的模型在未来的未知数据中取得较好的效果。在原来的训练集合上来评估一个模型的好坏是不太合适的,因为这样可能会造成过拟合的现象,也就是说可能会因为训练集某些隐含的因子使得这个分类模型有很好的准确率,但是当我们应用这个模型到新的数据集上就不一定有同样的结果。这就是过拟合的现象,没有在新的数据集上获得同样的效果(模型的泛化能力)。所以我们需要引入没有污染过(任何经过训练的数据我们称为被污染过的数据)进行测试。这里有两种方式进行评估。
-
Hold-out(这种方式针对大的数据集,把数据分成三份)
- 训练集 构建模型
- 验证集 细化模型参数、选择最佳模型
- 测试集
衡量模型的性能 这部分数据不参与前面两个步骤
-
Cross-Validation 针对数据较少,可以采用交叉验证的方式取得一个比较稳定的平均值。常用的
k-fold
也是就是所谓的k折交叉验证方式,把数据集合分成k份,每次选择其中一份作为测试集其余的作为训练集,重复k次,最后取得每次结果的平均值。
分类评估
Confusion Matrix
混淆矩阵用来描述正确分类和错误分类的各个指标。下面是一个二分类问题混淆矩阵的实例。
- Accuracy准确率 : the proportion of the total number of predictions that were correct. 准确率
- Positive Predictive Value or Precision正确率 : the proportion of positive cases that were correctly identified.
- Negative Predictive Value : the proportion of negative cases that were correctly identified.
- Sensitivity or Recall敏感度 召回率: the proportion of actual positive cases which are correctly identified.
- Specificity 特异性: the proportion of actual negative cases which are correctly identified. 特异性
ROC Chart
回归评估
Root Mean Squared Error
均方差用来衡量回归模型中的错误率,注意不同模型计算时需要注意度量单位的统一。
Relative Squared Error
Mean Absolute Error
Relative Absolute Error
Coefficient of Determination
优化方法
-
最小二乘法
-
梯度上升(下降)寻求最大(最小)值
梯度上升法基于的思想是:要找到函数的最值最好的方法就是沿着函数的地图方向进行。从初始点进行最值寻找的过程中需要计算当期点的梯度,并且沿着这个方向移动,具体移动的步伐通过步长来设定。到达下一个点之后重新计算梯度不迭代直到满足条件。(寻找到最优值或者到达误差允许的范围内。) -
随机梯度
随机梯度在针对大数据集的时候显得特别有用,虽然损失了一定的精度,但是换来了较快的收敛速度,达到一个与全局最优较近位置的点。它是针对每个点选择盖点最优的方向进行移动,不一定要对整个数据集集合操作就可能到达收敛了。而BGD(批处理梯度下降)在每一次梯度的更新操作中需要对整个数据集进行计算,在大数据处理过程中无疑增大了计算量。 -
最大似然估计
风刮的
常用算法(建模)
分类
分类问题实际是一类监督学习问题,根据训练数据的类标记来引导分类器选择合适的参数,较好的拟合样本空间中的数据,并且能够对未来的数据有一定的预测能力(泛化能力)。分类算法大致可以按照如下四种方式进行分类。
频率表
ZeroR
Weka中提供了ZeroR算法,是最简单的分类器。主要思想是按照类中大多数数据所属的类别类进行分类。基本上没有使用认为关于ml的理论。它的作用就是给其他分类器提供一个模型的基线,衡量一个算法的性能。换句话说我们用的模型再怎么不行也不能比这个baseline还要低吧。
构造目标的频率表,选择频率最大的类别作为目标的预测值
下面是ZeroR的混淆矩阵,我们可以看到这个算法的用途只是在于提供一个baseline而已。
OneR
OneR是“One Rule”的简称,也就是按照一个规则进行分类。它会针对每个属性上进行测试对目标进行分类,然后从每个属性中得到的规则中选择最小误分类的规则作为最终的分类模型。比如下面的例子很好的说明上述的描述。
一个较小的总体分类误差意味着对正确分类提供了更多的贡献。
这是这个分类问题的混淆矩阵
Naive Bayesian
贝叶斯分类依托于贝叶斯理论。基于先验概率的理解,根据样本数据的统计特征得出后验概率。是一种非常简单而且有效的分类方法。在数据较少的情况下也依然有效,同时也可以处理多类分类问题。缺点在于对输入数据的准备方式较为敏感。
补充贝叶斯公式、贝叶斯理论
to be continue... 、
朴素贝叶斯的前提条件是:假设给定目标值时属性之间彼此相互独立。然后应用贝叶斯公式通过 $ P(c) ,P(x) ,P(x/c)$ 计算出后验概率\(P(c/x)\)。虽然我们不能确定给定的属性之间是否真的相互独立,但是在这么一个假设的前提下,朴素贝叶斯分类确实取得了非常不错的效果。
下面举个栗子,看看贝叶斯的分类机制。
给定一个属性集合计算它属于其中某个类别的一个后验概率,然后选择概率最大的那个类别作为它的分类。需要注意的一点就是由于贝叶斯针对多个变量的连乘操作,我们在操作中需要进行加一避免0的出现。比如途中当outlook为overcast的时候(Play Golf=no)。
上面是对离散型的分类,处理数值型预测任务改怎么处理呢?
我们需要把数值型数据转换成离散型,通常是假定正态分布然后将其离散化.然后构造频率表再使用贝叶斯理论。
- 关于正态分布
下面举个例子说明: 数值型离散化 使用贝叶斯
Decision Tree
决策树可用来构建分类和回归模型,能够处理离散型和连续型的数据。分类的过程就是不断的把数据集合按照属性分成一个个较小的子集,属性的选择可用比如信息增益等方式,对每个选择的属性做一次判断然后将数据归入到特定的子集中不断的进行直到分类完全。这个用来做分析判断的属性所在的节点叫做决策节点也是最终形成树的中间节点。最后形成的树的叶子节点表示纯类。
构造决策树的核心算法来自 J.R.Quinlan发表的ID3算法,ID3使用的是自顶向下的贪婪算法,不经过回退操作在整个可能的空间中进行搜索.ID3使用熵和信息增益来构建决策树。
- 熵
ID3使用熵(平均信息量)来计算样本间的同质性。即如果样本完全同质则信息熵为0,如果样本均匀包含各种可能性,则熵为1.熵在某种程度上表达了不确定性的多少。不确定性越大信息熵越大。数学之美一书中阐述过香农的信息熵理论。
使用id3进行构建决策树时候,需要计算两类熵。
a) 单个属性的信息熵
b) 多个属性的信息熵
- 信息增益
信息增益是基于在针对数据集上一个属性上分类之后熵的减少来定义的。构造决策树的过程实际上就是不断的寻找分裂属性并且返回最大的信息增益值,这意味着分裂后的分支所在的集合信息熵越小,它所在的分支越纯,从而达到了分类的效果。下面是计算步骤1-5。
- 计算分类目标的熵
- 将数据集按照不同的属性划分并且计算他们分裂之后的熵和信息增益。
- 选择最大的信息增益作为决策节点。这里选择的是
outlook
.
4)当摸个分支的熵为0的时候则表示已经分类完成,直接作为叶子节点。否则的话继续选择属性进行分裂。
- 递归的运行id3算法直到数据集被完全划分而且没有决策节点。
协方差矩阵
Linear Discriminant Analysis
线性判别分析被R. A. Fisher在1936年首次作为一种分类方法提出,具有与复杂方法相当的精确度。
LDA基于这样一种思想,就是在预测变量的线性组合空间中搜索最佳的用来分开两个类(target)的线性组合。Finsher定义了下面的 代价函数 。
Logistic Regression
逻辑回归产生一条逻辑曲线将值映射到[0,1]
之间,逻辑回归于线性回归有点类似,不过这条曲线使用的是目标变量的可能性
的自然对数而不是概率
来构造。而且预测变量不必满足正态分布或在同一个组内要求的相同方差。 逻辑回归不仅可以处理数值型数据而且可以处理分类型变量.
逻辑回归使用sigmoid函数作为回归分类器,我们通过在每个特征上乘以一个回归系数,然后把所有的结果相加得到一个总和带入到sigmoid这个阶跃函数中,进而得到一个0~1之间的实数,我们把大于0.5的归入到1类,小于0.5的归入到0类。所以逻辑回归也可以被看成是一个概率估计分类器。
那么最佳的回归系数怎么确定呢?这就需要采用最优化的方法来进行对参数的确定了,拟合训练数据学习出最佳的回归系数就是逻辑回归训练的任务了。
这里让人疑问的是可能性和概率有哪里不同吗?
优点:计算代价不高,易于理解和实现
缺点: 容易欠拟合,分类精度可能不高
数据类型:数值型和标称型
图中等式可以等价于下面的式子:
我们可以使用类似于线性回归中的最小二乘法
来确定代价函数中的参数。在逻辑回归中我们采用的是最大似然估计
来确定这些参数。
相似函数
K Nearest Neighbors
K近邻是比较简答基于相似度来分类的一个算法,核心思想就是根据距离来寻找与待分类点的k个邻居,然后每个对应邻居节点都有自己的类标号,我们选择这k个邻居中类标号数目最多的作为待分类节点的标签,类似于一种投票机制。k近邻是一种lazy算法。处理待分类节点的时候才去寻找他对应的邻居。
- 距离度量公式
我们可以看到上面的公式主要是针对连续型变量
的,在处理分类变量的时候我们需要采用Hamming distance
。当数据集中同时存在s数值型和分类型变量的时候,它同时带来了将数值变量映射到[0,1]
的标准化问题。
下面是计算Hamming distance
距离的表达式。
-
K的选择
一般选择k的范围为[3,10]
当然只是个别的经验,通过交叉验证的方式可以帮助我们选择合适的k
值并通过独立的验证集来验证这个k是否合适,这对分类器的分类效果至关重要。 -
举个栗子
在下面的栗子中是一个信用卡违约的一个预测问题,有两个属性age和loan,都是数值型变量。目标变量是是否违约。
给定一个样本(age=48,loan=142,000)
用来判断他是否会违约,我们选择和他最近的3个邻居,并选择邻居中类标记数目最多的标记来作为该样本的预测值。在这个例子中我们得出default=Y
- 标准化距离
当样本中的数据的度量单位不一致的时候,使用这些距离度量公式的时候有一个非常大的弊端,就是量纲较大的属性产生的影响会显得比较大很肯能掩盖掉了一些很重要的属性的影响,为此我们需要对数据进行标准化。使他们处于同一个水平进行比较和度量。对于标准化后的数据进行训练,不能对新来的未知数据的预测有较好的鲁棒性。下图是标准化转换计算公式
其他
Artificial Neural Network
人工神经网络是基于生物神经网络的一个系统。模仿大脑内的神经元之间的触发方式。到达临界条件才会激活或者抑制。人工神经网络(ANN)由三个部分组成:输入层、隐含层、输出层。
传递方式 -前向传播 后向反馈
Support Vector Machine
回归
聚类
关联规则
特征选择
- 概念
维度处理
- PCA主成分分析
- SVD奇异值分解