知识框架来源:人工智能之数据挖掘
其他补充来源:拿下Offer-数据分析师求职面试指南、数据分析实战45讲
广义:
一类深层次的数据分析方法
目的:
自动抽取隐含的、以前未知的、具有潜在应用价值的模式或规则等有用知识
涉及学科
使用人工智能、机器学习、统计学和数据库等交叉学科领域方法
对象
大规模、不完全、有噪声、模糊随机的数据集。
核心过程:
(1) 数据清理:消除噪声和删除不一致数据。
(2) 数据集成:将多种数据源组合在数据仓库。
(3) 数据选择:定义问题,从数据库中提取与分析任务相关的数据。
(4) 数据变换:分析整理数据。通过汇总或聚集操作把数据变换、统一成适合挖掘的形式。
(5) 数据挖掘:使用智能方法提取数据模式。
(6) 模式评估:根据某种度量,识别代表知识的模式。
(7) 知识表示:使用可视化与知识表示技术,向用户提供挖掘的知识。
挖掘的核心
建模:另利用用模型学习已知数据集中的变量特征,并通过一系列方法提高模型的学习能力,最终对一些结果位置的数据及输出相映的结果。
数据集
模型评估
参数
参数调整
误差
算法的强弱
学习器的强弱。强学习器和弱学仪器是一个相对的概念,没有很明确的划分。体现在学习区对复杂场景的处理能力上。相对于决策树模型,随机森林是强学习器。但和其他更加复杂的模型相比,他就是弱学习器。
模型集成
模型融合
在模型集成中将各个基模型的结果进行组合,得到最终的结果的过程称为模型融合。
与大数据的关系
研究进展
近期的主要发展归为两大类:复杂数据挖掘与分布式数据挖掘。
十大问题与挑战
1 数据挖掘的统一理论框架的构建(Developing a Unifying Theory of DataMining)
2 高维数据和高速数据流的挖掘(Scaling Up for High DimensionalData/High Speed Streams)
3 序列和时序数据的挖掘(Mining Sequence Data and Time Series Data)
4 复杂数据中复杂知识的挖掘(Mining Complex Knowledge from ComplexData)
5 网络环境中的数据挖掘(Data Mining in a Network Setting)
6 分布式数据和多代理数据的挖掘(Distributed Data Mining and MiningMulti-agent Data)
7生物和环境数据的挖掘(Data Mining for Biological and EnvironmentalProblems)
8 数据挖掘过程中的相关问题处理(Data-Mining-Process Related Problems)
9 数据挖掘中数据安全、数据所涉及到的隐私和数据完整性的维护(Security,Privacy and Data Integrity)
10 非静态、非平衡及成本敏感数据的挖掘(Dealing with Non-static,Unbalanced and Cost-sensitive Data)
大规模、不完全、有噪声、模糊随机的数据集。可以是任何类型的数据源,包括数据库数据、数据仓库、事物数据,以及文本、多媒体数据、空间数据、时序数据、web 数据、数据流、图或网络数据等。
监督学习和非监督学习
问题 | 模型 |
---|---|
预测问题。 | 线性回归模型 、时间序列模型 、神经网络 |
分类问题 | 逻辑回归模型 、svm模型 、决策树模型、 随机森林模型 Boosting模型。 |
问题 | 模型 |
---|---|
聚类问题 | K-means聚类模型、 DBSCAN聚类模型、 E_m聚类模型。 |
降维问题 | PCA主要成分分析 |
参数和非参数模型
类别 | 特征 | 模型 | 缺点 | 优点 |
---|---|---|---|---|
参数模型 | 限定了目标函数的形式 | 线性回归模型、逻辑回归模型、朴素贝叶斯模型 | 1.提前对目标函数作出假设。现实问题很难应用某一目标函数,特别是复杂问题很难得到拟合效果好的模型。2.复杂度偏低,容易出现欠拟合现象 | 1.可解释性强冲 2.学习和训练速度较快 3.数据量小 |
非参数模型 | 没有对目标形式进行限定,通过训练自由的从训练数据集中学习任意的函数。 | 1.svm模型 2.决策树模型3.随机森林模 型 | 1.计算量大-数据量大2.可解释性弱-么 | 1.适用于大数据量逻辑复杂的问题。效果好于参数模型,由于不存在错误前提假设,在数据量趋于无穷大的时候,可以无限逼近于真实模型。2.存在超参数选择 |
半参数模型 | 固定了隐藏的数目和每一层神经元的个数,属于参数模型。隐层数目和每一层神经元个数在模型中通常是不固定的。 | 神经网络模型 |
类别 | 定义 | 特征 | 模型 |
---|---|---|---|
生成模型 | 能够学习数据生成机制,得到联合分布p (x,y),特征x和y共同出现的概率,然后求条件概率分布, | 数据量需求大,能够很好的估计概率密度。数据充足的情况下,生成模型的收敛速度较快。能够处理隐变量。相对于判别模型生产模型准确率以及适用范围弱 | 朴素贝叶斯模型、混合高斯模型、隐马尔可夫模型。 |
判别模型。 | 学习得到条件概率分布p(y | x),在特征x的调情况下标签y出现的概率 | 计算量小。准确率和适用范围大切。较为常用 |
大数据的规模大、来源种类多样、价值密度低、增长速度快、准确性低等特征,给数据挖掘过程中每个阶段造成不同的问题挑战
(1) 数据采集和入库:不同类型的数据存储在一个地方、相同数据在不同的数据源中命名形式不一样、不同数据源中的数据性质不同等会给数据采集和存储带来很大挑战。
(2) 数据清洗:定义和确定错误类型,搜索和识别错误,更正错误,记录错误以及修改数据输入程序以减少结构化、非结构化和半结构化数据会带来数据清理方面的挑战。当数据没有存在噪音、不完整、不一致等问题时,数据挖掘和分析过程会提供正确的信息。
(3) 数据分析与挖掘:数据分析与挖掘是大数据的核心挑战。如果在采集、存储、清理、集成、转换等流程中出现任何问题,会导致容易挖掘到无用的数据。如果想在大数据中获取有价值的信息,有必要研究适用于所有类型数据的挖掘技术。
(4) 数据集成与融合:在大数据挖掘中,不同类型的数据模式集成和融合是最大的挑战。例如,集成的数据模式通常是在不同数据源中获取,而不同数据源中的同一对象通常具有不同的名称表示形式。如何正确将指向同一对象的不同数据融合到一起,是数据集成和融合技术的巨大挑战。
数据挖掘所使用的数据常常是为其他 用途收集的,原始数据中出现的问题会对下一阶段的分析过程产生重大的影响, 因此在数据清洗阶段需要检验数据完整性。数据对象遗漏一个或多个属性值的 情况在数据挖掘任务中屡见不鲜,例如有的人拒绝透露年龄和体重,这时信息 收集不全的现象变得十分常见。
指数据的准确性和可靠性,用于描述存 储的所有数据值均处于客观真实的状态。
完整性检验5 个基本原则:可溯源、清晰、同步、原始或真实复制、准确
策略,包括删除数据对象或属性、估计遗漏值、在分析时忽略遗漏值、使用默认值、使用属性平均值、使用同类样本平均值、预测最可能的值 等。
传统数据挖掘技术与网络动态数据挖掘
传统数据挖掘技术主要针对静态数据集、数据仓库问题定义、数据采集、数据预处理、数据清理/集成、数据选择/变换/归约、 数据挖掘、模式评估、解释和应用
网络动态数据挖掘需要面对不断变化的网络环境及各种动态变化的实时数据之外, 还需要对整个数据挖掘过程、数据集与关联规则集的更新过程等进行实时分析 和处理。
非平衡样本数据挖掘
在不平衡数据中,人们将拥有较多实例的那一类称为多数类(有时也称为 负样本),将拥有相对较少实例的那一类称为少数类(有时也称为正样本)。现有分类算法(如决策树和神经网络等)大多假定每个样本的误分类具有同样的代价而致力于提高分类器的泛化精度,分类的结果偏向于大类别样本,即大类别样本的分类精度高于小类别样本。但对很多现实的应用,如医疗诊断、信用卡欺诈检测、网络入侵、故障识别等,不同类别的样本数相差较大,不同样本的误分类代价通常不相等,仅凭全局精度评价分类器的性能优劣是不够的。此时需要引入代价敏感数据挖掘技术(Cost Sensitive Data Mining, CSDM)
C4.5 算法是由 Ross Quinlan 在 ID3 算法的基础上,开发的用于产生决策树的算法,通常用于统计分类。C4.5 算法与 ID3 算法一样使用了信息熵的概念,并和 ID3 一样通过学习数据来建立决策树。把哪个属性作为根节点,是 C4.5 算法研究的重点,它采用信息增益率来选择属性。信息增益率使用“分裂信息”值将信息增益规范化,选择具有最大增益率的属性作为分裂属性。信息增益率的计算公式如下所示
作用
给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类。C4.5 、ID3 的目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对新的类别未知的实体进行分类
工作原理
类似于流程图的树形结构,每一个节点代表对一个特征的测试。树的分支代表着该特征的一个测试结果。每一个节点代表一个类别。决策树的核心就是寻找纯净的划分
类别
构造
选择什么属性作为节点,三种节点
节点选择指标
优缺点
优点 :
1.不需要对样本进行预先假设,更快地处理复杂样本。可以处理多维度输出的分类问题。
2.非参数模型 计算速度快。使用决策树预测的代价是O(log2m)。m为样本数。
3.简单直观,生成的决策树很直观。能够通过绘制分支清晰的剖析模型的选择流程,快速发现影响结果的因素,能及时指导业务进行调整修改。
4.可以同时处理分类问题和预测问题 .
5.能够处理离散型和连续型变量同时存在的场景。 很多算法只是专注于离散值或者连续值。
6.对缺失值不敏感。 基本不需要预处理,不需要提前归一化和处理缺失值。对于异常点的容错能力好,健壮性高。
7.可解释性强 。相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以很好解释。可以交叉验证的剪枝来选择模型,从而提高泛化能力。
缺点 :
1.弱学习器。有些比较复杂的关系,决策树很难学习,比如异或。这个就没有办法了,一般这种关系可以换神经网络分类方法来解决。
2.即使通过调优方法进行优化。也容易产生过拟合现象,造成结果误差大。 可以通过设置节点最少样本数量和限制决策树深度来改进。
3.在处理特征关联性较强的数据时表现不好。
4.受样本影响大。决策树会因为样本发生一点的改动,导致树结构的剧烈改变。这个可以通过集成学习之类的方法解决。 如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善。
5.寻找最优的决策树是一个NP难题,我们一般是通过启发式方法,容易陷入局部最优。可以通过集成学习的方法来改善。
调优方法
ID3 算法计算的是信息增益,信息增益指的就是划分可以带来纯度的提高,信息熵的下降
公式
定义:父亲节点的信息熵减去所有子节点的信息熵
D 是父亲节点,
Di 是子节点,计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率
Gain(D,a) 中的 a 作为 D 节点的属性选择
缺陷:
ID3 算法倾向于选择取值比较多的属性,有些属性可能对分类任务没有太大作用,但是他们仍然可能会被选为最优属性 比如我们会发现 这样,如果我们把“编号”作为一个属性(一般情况下不会这么做,这里只是举个例子),那么“编号”将会被选为最优属性
案例
1.将天气属性作为根节点,信息增益计算
根节点的信息熵: 练集中一共有 7 条数据,3 个打篮球,4 个不打篮球,所以根节点的信息熵是
2.三个叶子节点的信息熵,
D1(天气 = 晴天)={1-,2-,6+}D2(天气 = 阴天)={3+,7-}D3(天气 = 小雨)={4+,5-},+ 代表去打篮球,- 代表不去打篮球
归一化信息熵 = 3/70.918+2/71.0+2/7*1.0=0.965。
3.天气作为属性节点的信息增益为
Gain(D , 天气)=0.985-0.965=0.020。
4.同理我们可以计算出其他属性作为根节点的信息增益, 它们分别为 :
Gain(D , 温度)=0.128
Gain(D , 湿度)=0.020
Gain(D , 刮风)=0.020
5.温度作为属性的信息增益最大。因为 ID3 就是要将信息增益最大的节点作为父节点,这样可以得到纯度高的决策树,
6.要将上图中第一个叶节点,也就是 D1={1-,2-,3+,4+}进一步进行分裂,往下划分,计算其不同属性(天气、湿度、刮风)作为节点的信息增益,可以得到:Gain(D , 湿度)=1Gain(D , 天气)=1Gain(D , 刮风)=0.3115,
7.我们能看到湿度,或者天气为 D1 的节点都可以得到最大的信息增益,这里我们选取湿度作为节点的属性划分。同理,我们可以按照上面的计算步骤得到完整的决策树,结果如下:
C4.5 算法对 ID3 算法的改进之处在于:
(1)克服多属性偏向
C4.5 算法用信息增益率来选择属性,克服了 ID3 算法用信息增益选择属性时偏向选择取值多的属性的不足;当属性有很多值的时候,相当于被划分成了许多份,虽然信息增益变大了,但是对于 C4.5 来说,属性熵也会变大,所以整体的信息增益率并不大
(2) 在树构造过程中进行悲观剪枝;
采用悲观剪枝ID3 构造决策树的时候,容易产生过拟合的情况。在 C4.5 中,会在决策树构造之后采用悲观剪枝(PEP),这样可以提升决策树的泛化能力。悲观剪枝是后剪枝技术中的一种,通过递归估算每个内部节点的分类错误率,比较剪枝前后这个节点的分类错误率来决定是否对其进行剪枝。这种剪枝方法不再需要一个单独的测试数据集。
(3) 能够完成对连续属性的离散化处理;
可以处理连续值 。C4.5 可以处理连续属性的情况,对连续的属性进行离散化的处理。比如打篮球存在的“湿度”属性,不按照“高、中”划分,而是按照湿度值进行计算,那么湿度取什么值都有可能。该怎么选择这个阈值呢,C4.5 选择具有最高信息增益的划分所对应的阈值。
(4) 能够对不完整数据进行处理。
基于比例,当数据集不完整的情况,C4.5 也可以进行处理。假如我们得到的是如下的数据,你会发现这个数据中存在两点问题。
第一个问题是,数据集中存在数值缺失的情况,如何进行属性选择?第二个问题是,假设已经做了属性划分,但是样本在这个属性上有缺失值,该如何对样本进行划分?我们不考虑缺失的数值,可以得到温度 D={2-,3+,4+,5-,6+,7-}。温度 = 高:D1={2-,3+,4+} ;温度 = 中:D2={6+,7-};温度 = 低:D3={5-} 。针对将属性选择为温度的信息增为:Gain(D′, 温度)=Ent(D′)-0.792=1.0-0.792=0.208属性熵 =1.459, 信息增益率 Gain_ratio(D′, 温度)=0.208/1.459=0.1426。D′的样本个数为 6,而 D 的样本个数为 7,所以所占权重比例为 6/7,所以 Gain(D′,温度) 所占权重比例为 6/7,所以:Gain_ratio(D, 温度)=6/7*0.1426=0.122。这样即使在温度属性的数值有缺失的情况下,我们依然可以计算信息
案例
这里使用打篮球的案例来研究 C4.5 算法的执行流程。给定一些训练样本,具有
如下 4 个属性:Outlook(天气)、Temperature(温度)、Humidity(湿度)、Windy(是否刮风),来判断今天是否适合出去打篮球。图 12 展示了 C4.5 算法根据训练样本生成的决策树。根节点是 Outlook 属性,划分出了三个组合(Sunny、Overcast、Rainy)。
其中,Overcast 划分中的集合是“纯”的,故此子树就停止生长,表示 Outlook 的属性值为 Overcast 时,适合出去打篮球。
而 Sunny 和 Rainy 的属性值划分样例集合中包含 Humidity 和 Windy 的不同属性值,因此它们不“纯”,需要继续使用子树来表示子集,直到子集为“纯”的(即子集中的所有实例都属于同一个类别),树才停止生长。根据 Yes,得出只有符合以上属性值要求(比如 Outlook 为 Sunny,Humidity<=75;或者 Outlook为 Rainy,Windy 为 False),才能适合出去打篮球。
简介
CART 算法,英文全称叫做 Classification And Regression Tree,中文叫做分类回归树。由 ID3,C4.5 演化而来,是许多基于树的 bagging、boosting 模型的基础。CART 是在给定输入随机变量 x 条件下输出随机变量 y 的条件概率分布。
特征
ID3、C4.5 和 CART 的一个比较总结
算法 | 支持模型 | 树结构 | 特征选择 | 连续值处理 | 缺失值处理 | 剪枝 |
---|---|---|---|---|---|---|
ID3 | 分类 | 多叉树 | 信息增益 | 不支持 | 不支持 | 不支持 |
C4.5 | 分类 | 多叉树 | 信息增益比 | 支持 | 支持 | 支持 |
CART | 分类、回归 | 二叉树 | 基尼系数、均方差 | 支持 | 支持 | 支持 |
简介
公式
假设 t 为节点,那么该节点的 GINI 系数的计算公式为:
p(Ck|t) :节点 t 属于类别 Ck 的概率,节点 t 的基尼系数为 1 减去各类别 Ck 概率平方和。
计算基尼系数
两个集合的基尼系数分别为多少:集合 D1:6 个都去打篮球;集合 D2:3 个去打篮球,3 个不去打篮球。
针对集合D1:所有人都去打篮球,所以 p(Ck|t)=1,因此 GINI(t)=1-1=0。
集合 D2:有一半人去打篮球,而另一半不去打篮球,所以,p(C1|t)=0.5,p(C2|t)=0.5,GINI(t)=1-(0.5* 0.5+0.5* 0.5)=0.5。
通过两个基尼系数你可以看出,集合 1 的基尼系数最小,也证明样本最稳定,而集合 2 的样本不稳定性更大。
基于基尼系数 建立CART 算法
基尼系数对特征属性进行二元分裂,假设属性 A 将节点 D 划分成了 D1 和 D2,如下图所示:
节点 D 的基尼系数等于子节点 D1 和 D2 的归一化基尼系数之和,用公式表示为:
节点 D 被属性 A 划分后的基尼系数越大,样本集合的不确定性越大,也就是不纯度越高。
(1) 树的生成:基于训练数据集生成决策树,生成的决策树要尽量大;
(2) 树的剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树这时损失函数最小作为剪枝的标准。
CART 分类树的工作流程
分类的过程本身是一个不确定度降低的过程。决策树的生成就是基于训练数据集,通过递归地构建二叉决策树的过程,选择基尼系数最小的属性作为属性的划分。树内部结点特征取值为“是”和“否”,左分支取值为“是”,右分支取值为“否”。这样的判定树等价于递归地二分每一个特征,将输入空间划分为有限个单元,并在这些单元上预测概率分布,也就是在输入给定的条件下输出条件概率分布。
CART分类树算法
决策树的剪枝
CART 回归的流程包括
构建回归树用平方误差最小化准则,对分类树用基尼指数最小化准则,进行特征选择,生成二叉树:
(1) 遍历每个特征,对于特征,遍历每个取值 s,用切分点 s 将数据集分为两份,计算切分后的误差;
(2) 求出误差最小的特征及其对应的切分点,此特征即被选中作为分裂结点,切分点形成左右分支;
(3) 递归地重复以上步骤。
回归树中节点划分的标准
CART 回归树中,用样本的离散程度来评价“不纯度”。分别对应着两种目标函数最优化的标准,即用最小绝对偏差(LAD),或者使用最小二乘偏差(LSD)。这通常使用最小二乘偏差的情况更常见一些。
理解
“近朱者赤,近墨者黑”。最邻近规则分类算法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN 的核心思想是
如果一个样本在特征空间中的 K 个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。KNN 算法中,所选择的邻居都是已经正确分
类的对象。通过找出一个样本的 K 个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。
KNN 方法在做类别决策时,只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重迭较多的待分样本集来说,KNN方法较其他方法更为适合。
过程
(1) 计算测试数据与各个训练数据之间的距离;
(2) 按照距离的递增关系进行排序;
(3) 选取距离最小的 K 个点;
(4) 确定前 K 个点所在类别的出现频率;
(5) 返回前 K 个点中出现频率最高的类别作为测试数据的预测分类。
KD 树
KNN 的计算过程是大量计算样本点之间的距离。为了减少计算距离次数,提升 KNN 的搜索效率,人们提出了 KD 树(K-Dimensional 的缩写)。
KD 树是对数据点在 K 维空间中划分的一种数据结构。在 KD 树的构造中,每个节点都是 k 维数值点的二叉树。既然是二叉树,就可以采用二叉树的增删改查操作,这样就大大提升了搜索效率。
不需要对 KD 树的数学原理了解太多,只需要知道它是一个二叉树的数据结构,方便存储 K 维空间的数据就可以了。而且在 sklearn 中,我们直接可以调用 KD 树,很方便。
优缺点
优点:简单、容易理解,通过 K 值的增大可具备噪音数据的鲁棒性。
缺点:需要大量的空间去储存已知的实例,算法复杂度高。
案例1.分类:
假设,我们想对电影的类型进行分类,统计了电影中打斗次数、接吻次数,当然还有其他的指标也可以被统计到,如下表所示。《战狼》《红海行动》《碟中谍 6》是动作片,《前任 3》《春娇救志明》《泰坦尼克号》是爱情片,但是有没有一种方法让机器也可以掌握这个分类的规则,当有一部新电影的时候,也可以对它的类型自动分类呢?
我们可以把打斗次数看成 X 轴,接吻次数看成 Y 轴,然后在二维的坐标轴上,对这几部电影进行标记,如下图所示。对于未知的电影 A,坐标为 (x,y),我们需要看下离电影 A 最近的都有哪些电影,这些电影中的大多数属于哪个分类,那么电影 A 就属于哪个分类。实际操作中,我们还需要确定一个 K 值,也就是我们要观察离电影 A 最近的电影有多少个。
案例2.回归
对于一个新电影 X,我们要预测它的某个属性值,比如打斗次数,具体特征属性和数值如下所示。
此时,我们会先计算待测点(新电影 X)到已知点的距离,选择距离最近的 K 个点。假设 K=3,此时最近的 3 个点(电影)分别是《战狼》,《红海行动》和《碟中谍 6》,那么它的打斗次数就是这 3 个点的该属性值的平均值,即(100+95+105)/3=100 次。
K值选择
K 值应该是个实践出来的结果,并不是我们事先而定的。在工程上,我们一般采用交叉验证的方式选取 K 值,交叉验证的思路:
把样本集中的大部分样本作为训练集,剩余的小部分样本用于预测,来验证分类模型的准确性。所以在 KNN 算法中,我们一般会把 K 值选取在较小的范围内,同时在验证集上准确率最高的那一个最终确定作为 K 值。
关于距离的度量
两个样本点之间的距离代表了这两个样本之间的相似度。距离越大,差异性越大;距离越小,相似度越大。关于距离的计算方式有下面五种方式:
简介
K-Means 是一种非监督学习,解决的是聚类问题。K 代表的是 K 类,Means 代表的是中心,可以理解算法的本质是确定 K 类的中心点,当你找到了这些中心点,也就完成了聚类。
算法的思想
对于给定的样本集,按照样本之间的距离大小,将样本集划分为 K 个簇,让簇内的点尽量紧密地连在一起,而让簇间的距离尽量的大。
图可以形象描述上式
图(a)表达了初始的数据集,假设 k=2。
在图(b)中,我们随机选择了两个 k 类所对应的类别质心,即图中的红色质心和蓝色质心,然后分别求样本中所有点到这两个质心的距离,并标记每个样本的类别为和该样本距离最小的质心的类别。
如图 c 所示,经过计算样本和红色质心和蓝色质心的距离,我们得到了所有样本点的第一轮迭代后的类别。
如图(d)所示此时我们对当前标记为红色和蓝色的点分别求其新的质心,新的红色质心和蓝色质心的位置已经发生了变动。
图(e)和图(f)重复了图(c)和图(d)的过程,即将所有点的类别标记为距离最近的质心的类别并求新的质心。最终我们得到的两个类别如图(f)。
优缺点
优点有:比较简单,实现也很容易,收敛速度快;算法的可解释度比较强。
缺点有:K 值的选取不好把握;采用迭代方法,得到的结果只是局部最优;对噪音和异常点比较敏感。
假设我有 20 支亚洲足球队,想要将它们按照成绩划分成 3 个等级,可以怎样划分?
如何确定 K 类的中心点?
选取 K 个点作为初始的类中心点,这些点一般都是从数据集中随机抽取的;
一开始我们是可以靠我们的经验随机指派,一流的亚洲球队伊朗。二流的亚洲球队中国。三流的亚洲球队越南。三个等级的典型代表,也就是我们每个类的中心点。
将每个点分配到最近的类中心点,这样就形成了 K 个类,然后重新计算每个类的中心点;
计算每个队伍分别到中国、日本、韩国的距离,然后根据距离远近来划
纠正中心点:重复第二步,直到类不发生变化,或者你也可以设置最大迭代次数,这样即使类中心点发生变化,但是只要达到最大迭代次数就会结束。中心点在整个迭代过程中,并不是唯一的,只是你需要一个初始值,一般算法会随机设置初始的中心点。
再重新计算这三个类的中心点,如何计算呢?最简单的方式就是取平均值,然后根据新的中心点按照距离远近重新分配球队的分类,再根据球队的分类更新中心点的位置。
如何将其他点划分到 K 类中?
实际上是关于距离的定义,我们知道距离有多种定义的方式,在 K-Means 和 KNN 中,我们都可以采用欧氏距离、曼哈顿距离、切比雪夫距离、余弦距离等。对于点的划分,就看它离哪个类的中心点的距离最近,就属于哪一类。
如何区分 K-Means 与 KNN?
简介
基于贝叶斯定理与特征条件独立假设的分类方法,和决策树模型是使用最为广泛的两种分类模型。相比决策树模型,朴
素贝叶斯模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。具有稳定的分类效率。但是在实际应用中,属性之间相互独立的假设往往是不成立的,给朴素贝叶斯模型的分类准确度带来一定影响。
数学原理
贝叶斯统计
组成
由两种类型的概率组成:1. 每个类别的概率P(Cj);2. 每个属性的条件概率P(Ai|Cj)。
适用环境
朴素贝叶斯分类常用于文本分类,尤其是对于英文等语言来说,分类效果很好。它常用于垃圾文本过滤、情感预测、推荐系统等
优缺点
根据以往的经验判断性别就是分类过程
离散数据
数据:身高“高”、体重“中”,鞋码“中”,请问这个人是男还是女?
连续数据
数据,身高 180、体重 120,鞋码 41,请问该人是男是女呢?连续变量,不能采用离散变量的方法计算概率。样本太少,所以也无法分成区间计算
-数据分布
假设男性和女性的身高、体重、鞋码都是正态分布,男性的身高是均值 179.5、标准差为 3.697 的正态分布
- 分别计算概率
通过样本计算出均值和方差,也就是得到正态分布的密度函数,计算得:
男性的身高为 180 的概率为 0.1069。
男性体重为 120 的概率为 0.000382324
男性鞋码为 41 号的概率为 0.120304111。
- 应用贝叶斯计算总概率
有了密度函数,就可以把值代入,算出某一点的密度函数的值,男性的可能: P(A1A2A3|C1)=P(A1|C1)P(A2|C1)P(A3|C1)=0.10690.0003823240.120304111=4.9169e-6 女的可能性:
P(A1A2A3|C2)=P(A1|C2)P(A2|C2)P(A3|C2)=0.000001474890.0153541440.120306074=2.7244e
- 结论
很明显这组数据分类为男的概率大于分类为女的概率
介绍
支持向量机(Support Vector Machine)是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。SVM将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。
基本思想是
在分类问题中,很多时候有多个解,如下图左边所示,找到集合边缘上的若干数据(称为支持向量),用这些点在理想的线性可分的情况下其决策平面会有多个。而 SVM 的基本模型是在特征空间上找到找到一个超平面(称为决策面)使得训练集上正负样本间隔最大,=这个超平面就是我们的 SVM 分类器。
SVM 算法计算出来的分界会保留对类别最大的间距,即有足够的余量,如图 14 右边所示。能将不同的样本划分开,同时使得样本集中的点到这个分类超平面的最小距离(即分类间隔)最大化,“最大间隔“决策面就是 SVM 要找的最优解,使得支持向量到该平面的距离最大
分类器类别
SVM寻找最大间隔的意义
支持向量机之所以坚持寻找最大边缘超平面,是因为它具有最好的泛化能力。它不仅使训练数据具有最佳的分类性,而且为测试数据的正确分类留下了很大的空间。
优缺点
假设我们有 A 和 B 两枚硬币,实际情况是我不知道每次投掷的硬币是 A 还是 B,那么如何求得硬币 A 和硬币 B 出现正面的概率呢?我们做了 5 组实验,每组实验投掷 10 次,然后统计出现正面的次数,实验结果如下:
简介
PageRank 这个概念引自论文影响力因子,一篇论文的被引述的频度——即被别人引述的次数越多,一般判断这篇论文的权威性就越高。
PageRank 算法是 Google 排名运算法则(排名公式)的一个非常重要的组成部分,目的就是要找到优质的网页,不仅为用户提供想要的内容,而且还会从众多网页中筛选出权重高的呈现给用户。做法:每个到页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。
简化模型
出链指的是链接出去的链接。入链指的是链接进来的链接。比如图中 A 有 2 个入链,3 个出链。
一个网页的影响力 = 所有入链集合的页面的加权影响力之和,
u 为待评估的页面,Bu 为页面 u 的入链集合。针对入链集合中的任意页面 v,它能给 u 带来的影响力是其自身的影响力 PR(v) 除以 v 页面的出链数量,即页面 v 把影响力 PR(v) 平均分配给了它的出链,这样统计所有能给 u 带来链接的页面 v,得到的总和就是网页 u 的影响力,即为 PR(u)。出链会给被链接的页面赋予影响力,当我们统计了一个网页链出去的数量,也就是统计了这个网页的跳转概率。
一共有 4 个网页 A、B、C、D。它们之间的链接信息如图所示:
A 有三个出链分别链接到了 B、C、D 上,跳转概率均为 1/3。B 有两个出链,跳转概率为 1/2。A、B、C、D 这四个网页的转移矩阵 M:
假设 A、B、C、D 四个页面的初始影响力都是相同:
第一次转移之后,各页面的影响力 w1 变为:
再用转移矩阵乘以 w1 得到 w2 结果,直到第 n 次迭代后 wn 影响力不再发生变化,可以收敛到 (0.3333,0.2222,0.2222,0.2222),也就是对应着 A、B、C、D 四个页面最终平衡状态下的影响力
两个问题:
随机浏览模型
为了解决简化模型中存在的等级泄露和等级沉没的问题,提出了 PageRank 的随机浏览模型。
他假设了这样一个场景:用户并不都是按照跳转链接的方式来上网,还有一种可能是不论当前处于哪个页面,都有概率访问到其他任意的页面,比如说用户就是要直接输入网址访问其他页面,虽然这个概率比较小.所以他定义了阻尼因子 d,这个因子代表了用户按照跳转链接来上网的概率,通常可以取一个固定值 0.85,而 1-d=0.15 则代表了用户不是通过跳转链接的方式来访问网页的,比如直接输入网址。
其中 N 为网页总数,这样我们又可以重新迭代网页的权重计算了,因为加入了阻尼因子 d,一定程度上解决了等级泄露和等级沉没的问题。
Google 不断地重复计算每个页面的 PageRank,如果给 每个页面一个随机 PageRank 值(非 0),那么经过不断地重复计算,这些页面 的 PR 值会趋向于稳定,也就是收敛的状态
应用
只要是有网络的地方,就存在出链和入链,就会有 PR 权重的计算,也就可以运用我们今天讲的 PageRank 算法。
简介
Apriori 算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。已被 广泛的应用到商业、网络安全等各个领域。在实际工作中,我们常用 FP-Growth 来做频繁项集的挖掘。当然 Apriori 的改进算法除了 FP-Growth 算法以外,还有 CBA 算法、GSP 算法。
项集 itemset
它可以是单个的商品,也可以是商品的组合。
支持度
支持度是个百分比,度量 一个集合在原始数据中出现的频率。指的是:某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大
在这个例子中,我们能看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就是 4/5=0.8。同样“牛奶 + 面包”支持度就是 3/5=0.6。
最小支持度Min Support
支持度是针对项集来说的,因此可以定义一个最小支持度,只保 留最小支持度的项集 。
频繁项集
频繁项集就是支持度大于等于最小支持度 阈值的项集,所以小于最小值支持度的项目就是非频繁项集,而大于等于最小支持度的项集就是频繁项集
置信度
置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。它指的就是当你购买了商品 A,会有多大的概率购买商品 B,在上面这个例子中:
置信度(牛奶→啤酒)=2/4=0.5,代表如果你购买了牛奶,有多大的概率会购买啤酒?
置信度(啤酒→牛奶)=2/3=0.67,代表如果你购买了啤酒,有多大的概率会购买牛奶?
提升度
我们在做商品推荐的时候,重点考虑的是提升度,因为提升度代表的是“商品 A 的出现,对商品 B 的出现概率提升的”程度。
还是看上面的例子,如果我们单纯看置信度 (可乐→尿布)=1,也就是说可乐出现的时候,用户都会购买尿布,那么当用户购买可乐的时候,我们就需要推荐尿布么?
实际上,就算用户不购买可乐,也会直接购买尿布的,所以用户是否购买可乐,对尿布的提升作用并不大。
我们可以用下面的公式来计算商品 A 对商品 B 的提升度:
提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)
这个公式是用来衡量 A 出现的情况下,是否会对 B 出现的概率有所提升。
所以提升度有三种可能:
提升度 (A→B)>1:代表有提升;
提升度 (A→B)=1:代表有没有提升,也没有下降;
提升度 (A→B)<1:代表有下降
Apriori 算法的工作原理
关联分析,从数据集中发现项与项(item 与 item)之间的关系——有两个目标: 频繁项集frequent itemset、关联规则。频繁项集指经常一块出现的物品集合;关联规则暗示两 种物品之间可能存在很强的关系。
规则:通过排除法来选择频繁项集和关联规则,
(1) 如果某个项集是频繁的,那么它的所有子集也是频繁的;
(2) 如果某个项集是非频繁的,那么它的所有超集也是非频繁的;
(3) 基于此,Apriori算法从单元素项集开始,通过组合满足最小支持 度的项集来形成更大的集合。
递归流程:
步骤
改进算法:FP-Growth 算法
FP-Growth 的原理
1. 创建项头表(item header table)
项头表包括了项目、支持度,以及该项在 FP 树中的链表。初始的时候链表为空。
创建项头表的作用是为 FP 构建及频繁项集挖掘提供索引。这一步的流程是先扫描一遍数据集,对于满足最小支持度的单个项(K=1 项集)按照支持度从高到低进行排序,这个过程中删除了不满足最小支持度的项。
2. 构造 FP 树
FP 树的根节点记为 NULL 节点。整个流程是需要再次扫描数据集,对于每一条数据,按照支持度从高到低的顺序进行创建节点(也就是第一步中项头表中的排序结果),节点如果存在就将计数 count+1,如果不存在就进行创建。同时在创建的过程中,需要更新项头表的链表
简介
AdaBoost 算法,Adaptive Boosting,中文含义是自适应提升算法,分类算法中的集成算法。其核心思想是其实是针对同一个训练集训练不同的分 类器(弱分类器),然后把这些弱分类器根据不同的权重组合,构成一个更强的最终分类器 (强分类器)。
实际上 AdaBoost 算法是一个框架,你可以指定任意的分类器,通常我们可以采用 CART 分类器作为弱分类器
如何得到弱分类器,也就是在每次迭代训练的过程中,如何得到最优弱分类器?
通过改变样本的数据分布来实现的。
(1) 先通过对N个训练样本的学习得到第一个弱分类器;
(2) 将分错的样本增加权重和其他的新数据一起构成一个新的N个的训练样本, 再基于上一次得到的分类准确率,来确定这次训练样本中每个样本的权重,将修改过权值的新数据集送给下层分类器进行训练,得到第二个弱分类器,整个训练过程如此迭代地进行下去;
(3) 将第1、2步都分错了的样本加上其他的新样本构成另一个新的N 个的训练样本,通过对这个样本的学习得到第三个弱分类器;
(4) 最终分类器最后融合成强分类器。即某个数据被分为哪一类要由各分类器 权值决定。
Dk+1 代表第 k+1 轮训练中,样本的权重集合,其中 Wk+1,1 代表第 k+1 轮中第一个样本的权重,以此类推 Wk+1,N 代表第 k+1 轮中第 N 个样本的权重,因此用公式表示为:
第 k+1 轮中的样本权重,是根据该样本在第 k 轮的权重以及第 k 个分类器的准确率而定,具体的公式为:
该算法其实是简单的弱分类算法的提升过程,这个过程通过不断地训练,可以提高对数据的分类能力。这样做的好处就是,通过每一轮训练样本的动态权重,可以让训练的焦点集中到难分类的样本上,最终得到的弱分类器的组合更容易得到更高的分类准确率。
每个弱分类器在强分类器中的权重是如何计算的?
基于这个弱分类器对样本的分类错误率来决定它的权重。实际上在一个由 K 个弱分类器中组成的强分类器中,如果弱分类器的分类效果好,那么权重应该比较大,如果弱分类器的分类效果一般,权重应该降低。所以我们需要用公式表示就是:
其中 ei 代表第 i 个分类器的分类错误率。
主要解决
两类问题、 多类单标签问题、多类多标签问题、大类单标签问题和回归问题。
优缺点
假设我有 10 个训练样本如下所示,希望通过 AdaBoost 构建一个强分类器
有 3 个基础分类器:
MSE
Mean squared error,均方误差。
参数估计值与参数真值之差平方的期望值,
用于评估数据的变化程度,MSE值越小,模型精确度越高。
RMSE
均方误差的算术平方根
MAE
mMean absolute error.平均绝对误差,绝对误差的平均值。平均绝对误差在一些问题上能够更好地反映预测误差的实际情况。
预测为正例 | 预测为负例 | |
---|---|---|
实际为正例 | TP:True Positive。 | FN:False Negative |
实际为负例 | FP:False Positive | TN:True Negative |
正例反例
是一个相对概念。正想里通常我是我们所关注的结果。
精确率precision,TP/(TP+FP)
预测为正例的正确率。实际问题中更关注准确率,样本的正负例分布并不均匀。
召回率recall,TP/(TP+FN)
实际为正例的正确率
正确率,(TP+TN)/(TP+FP+FP+TN)
判断的总正确率
pr曲线
以precision(精准率)和recall(召回率)这两个为变量而做出的曲线,其中recall为横坐标,precision为纵坐标。
一条PR曲线要对应一个阈值。通过选择合适的阈值,比如50%,对样本进行划分,概率大于50%的就认为是正例,小于50%的就是负例,从而计算相应的精准率和召回率。
如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者,例如上面的A和B优于学习器C。但是A和B的性能无法直接判断,我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点或者是F1值。平衡点(BEP)是P=R时的取值,如果这个值较大,则说明学习器的性能较好。而F1 = 2 * P * R /( P + R ),同样,F1值越大,我们可以认为该学习器的性能较好。
ROC曲线
用来刻画二分类问题的图形。
横轴是假正例率(FPR),纵轴是真正例率(TPR)。
(1)真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。
(2)负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。
我们可以发现:TPR=Recall。
AUC:
ROC曲线一定会经过(0,0)和(1,1)两个点。在此基础上,要尽量使曲线下方所围成的面积最大化。这部分面积称为AUC。在解释性较强的问题中会经常用到。
多分类问题的评估方法