2022届秋招数据分析高频知识点汇总---常用算法总结
kmeans聚类(无监督):
Kmeans算法是最常用的聚类算法,主要思想是:在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数
基本步骤
step1:选定要聚类的类别数目k(如上例的k=3类),选择k个中心点。
step2:针对每个样本点,找到距离其最近的中心点(寻找组织),距离同一中心点最近的点为一个类,这样完成了一次聚类。
step3:判断聚类前后的样本点的类别情况是否相同,如果相同,则算法终止,否则进入step4。
step4:针对每个类别中的样本点,计算这些样本点的中心点,当做该类的新的中心点,继续step2
优点:
1)原理比较简单,实现也是很容易,收敛速度快。
2)聚类效果较优。
3)算法的可解释度比较强。
4)主要需要调参的参数仅仅是类别数目k。
缺点:
1)K值的选取不好把握(改进:可以通过在一开始给定一个适合的数值给k,通过一次K-means算法得到一次聚类中心。对于得到的聚类中心,根据得到的k个聚类的距离情况,合并距离最近的类,因此聚类中心数减小,当将其用于下次聚类时,相应的聚类数目也减小了,最终得到合适数目的聚类数。可以通过一个评判值E来确定聚类数得到一个合适的位置停下来,而不继续合并聚类中心。重复上述循环,直至评判函数收敛为止,最终得到较优聚类数的聚类结果)。
2)对于不是凸的数据集比较难收敛(改进:基于密度的聚类算法更加适合,比如DESCAN算法)
3)如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳。
4) 采用迭代方法,得到的结果只是局部最优。
5) 对噪音和异常点比较的敏感(改进1:离群点检测的LOF算法,通过去除离群点后再聚类,可以减少离群点和孤立点对于聚类效果的影响;改进2:改成求点的中位数,这种聚类方式即K-Mediods聚类(K中值))
决策树(监督学习):
决策树分类算法是一种基于实例的归纳学习方法,它能从给定的无序的训练样本中,提炼出树型的分类模型。树中的每个非叶子节点记录了使用哪个特征来进行类别的判断,每个叶子节点则代表了最后判断的类别。根节点到每个叶子节点均形成一条分类的路径规则。而对新的样本进行测试时,只需要从根节点开始,在每个分支节点进行测试,沿着相应的分支递归地进入子树再测试,一直到达叶子节点,该叶子节点所代表的类别即是当前测试样本的预测类别。
与其它机器学习分类算法相比较,决策树分类算法相对简单,只要训练样本集合能够使用特征向量和类别进行表示,就可以考虑构造决策树分类算法。预测分类算法的复杂度只与决策树的层数有关,是线性的,数据处理效率很高,适合于实时分类的场合。
决策树是一个预测模型。它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分支叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。
决策树的树枝节点表示属性,也叫决策节点;树叶节点表示类标签,也叫决策结果。决策树是由从上到下的根节点依次延伸而成,依据属性阈值的差异性延伸到各个地方直至下一个属性节点,一直延长到最后的叶子节点完成预测。
常见决策树分类算法:
ID3算法:。ID3是一种基于信息熵的决策树分类学习算法,以信息增益和信息熵,作为对象分类的衡量标准。ID3算法结构简单、学习能力强、分类速度快适合大规模数据分类。但同时由于信息增益的不稳定性,容易倾向于众数属性导致过度拟合,算法抗干扰能力差。
ID3算法的核心思想:根据样本子集属性取值的信息增益值的大小来选择决策属性(即决策树的非叶子结点),并根据该属性的不同取值生成决策树的分支,再对子集进行递归调用该方法,当所有子集的数据都只包含于同一个类别时结束。最后,根据生成的决策树模型,对新的、未知类别的数据对象进行分类。
ID3算法优点:方法简单、计算量小、理论清晰、学习能力较强、比较适用于处理规模较大的学习问题。
CART(Classification and RegressionTrees, CART)算法:是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子节点都有两个分支,因此,CART算法生成的决策树是结构简洁的二叉树。
分类回归树算法(Classification and Regression Trees,简称CART算法)是一种基于二分递归分割技术的算法。该算法是将当前的样本集,分为两个样本子集,这样做就使得每一个非叶子节点最多只有两个分支。因此,使用CART算法所建立的决策树是一棵二叉树,树的结构简单,与其它决策树算法相比,由该算法生成的决策树模型分类规则较少。
CART分类算法的基本思想是:对训练样本集进行递归划分自变量空间,并依次建立决策树模型,然后采用验证数据的方法进行树枝修剪,从而得到一颗符合要求的决策树分类模型。
CART算法优点:除了具有一般决策树的高准确性、高效性、模式简单等特点外,还具有一些自身的特点。如,CART算法对目标变量和预测变量在概率分布上没有要求,这样就避免了因目标变量与预测变量概率分布的不同造成的结果;CART算法能够处理空缺值,这样就避免了因空缺值造成的偏差;CART算法能够处理孤立的叶子结点,这样可以避免因为数据集中与其它数据集具有不同的属性的数据对进一步分支产生影响;CART算法使用的是二元分支,能够充分地运用数据集中的全部数据,进而发现全部树的结构;比其它模型更容易理解,从模型中得到的规则能获得非常直观的解释。
CART算法缺点:CART算法是一种大容量样本集挖掘算法,当样本集比较小时不够稳定;要求被选择的属性只能产生两个子结点,当类别过多时,错误可能增加得比较快。
优点:
• 决策树易于理解和实现. 人们在通过解释后都有能力去理解决策树所表达的意义。
• 对于决策树,数据的准备往往是简单或者是不必要的 . 其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。
• 能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单一。
• 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
• 对缺失值不敏感
• 可以处理不相关特征数据
• 效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。
缺点:
1)对连续性的字段比较难预测。
2)对有时间顺序的数据,需要很多预处理的工作。
3)当类别太多时,错误可能就会增加的比较快。
4)一般的算法分类的时候,只是根据一个字段来分类。
5)在处理特征关联性比较强的数据时表现得不是太好
随机森林(监督学习):
随机森林实际上是一种特殊的bagging方法,它将决策树用作bagging中的模型。首先,用bootstrap方法生成m个训练集,然后,对于每个训练集,构造一颗决策树,在节点找特征进行分裂的时候,并不是对所有特征找到能使得指标(如信息增益)最大的,而是在特征中随机抽取一部分特征,在抽到的特征中间找到最优解,应用于节点,进行分裂。随机森林的方法由于有了bagging,也就是集成的思想在,实际上相当于对于样本和特征都进行了采样(如果把训练数据看成矩阵,就像实际中常见的那样,那么就是一个行和列都进行采样的过程),所以可以避免过拟合
优点:
1、表现性能好,与其他算法相比有着很大优势。
2、随机森林能处理很高维度的数据(也就是很多特征的数据),并且不用做特征选择。
3、在训练完之后,随机森林能给出哪些特征比较重要。
4、训练速度快,容易做成并行化方法(训练时,树与树之间是相互独立的)。
5、在训练过程中,能够检测到feature之间的影响。
6、对于不平衡数据集来说,随机森林可以平衡误差。当存在分类不平衡的情况时,随机森林能提供平衡数据集误差的有效方法。
7、如果有很大一部分的特征遗失,用RF算法仍然可以维持准确度。
8、随机森林算法有很强的抗干扰能力(具体体现在6,7点)。所以当数据存在大量的数据缺失,用RF也是不错的。
9、随机森林抗过拟合能力比较强(虽然理论上说随机森林不会产生过拟合现象,但是在现实中噪声是不能忽略的,增加树虽然能够减小过拟合,但没有办法完全消除过拟合,无论怎么增加树都不行,再说树的数目也不可能无限增加的。)
10、随机森林能够解决分类与回归两种类型的问题,并在这两方面都有相当好的估计表现。(虽然RF能做回归问题,但通常都用RF来解决分类问题)。
11、在创建随机森林时候,对generlization error(泛化误差)使用的是无偏估计模型,泛化能力强。
缺点:
1、随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
2、对于许多统计建模者来说,随机森林给人的感觉就像一个黑盒子,你无法控制模型内部的运行。只能在不同的参数和随机种子之间进行尝试。
3、可能有很多相似的决策树,掩盖了真实的结果。
4、对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。
5、执行数据虽然比boosting等快(随机森林属于bagging),但比单只决策树慢多了。
逻辑回归:(有监督机器学习)
逻辑回归虽然名字中带有回归,但是并不是一个回归模型,而是一个分类模型。逻辑回归的目的就是解决分类问题,最常用的就是解决二分类问题。
逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。
什么是逻辑回归?
逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)
应用场景:
用于分类场景, 尤其是因变量是二分类(0/1,True/False,Yes/No)时我们应该使用逻辑回归。
优点:
(1)训练速度较快,分类的时候,计算量仅仅只和特征的数目相关;
(2)简单易理解,模型的可解释性非常好,从特征的权重可以看到不同的特征对最后结果的影响;
(3)适合二分类问题,不需要缩放输入特征;
(4)内存资源占用小,因为只需要存储各个维度的特征值;
缺点:
(1)不能用Logistic回归去解决非线性问题,因为Logistic的决策面向线性的;
(2)对多重共线性数据较为敏感;
(3)很难处理数据不平衡的问题;
(4)准确率并不是很高,因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布;
(5)逻辑回归本身无法筛选特征,有时会用gbdt来筛选特征,然后再上逻辑回归
SVM支持向量机(监督学习)
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。
优点:
(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;
(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
(3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。
(4)SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
(5)SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
(6)少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM 方法对核的选取不敏感
缺点:
(1) SVM算法对大规模训练样本难以实施
(2) 用SVM解决多分类问题存在困难
KNN最近邻(监督学习):
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成反比
优点:
1.理论成熟,思想简单,既可以用来做分类又可以做回归
2.可以用于非线性分类
3.训练时间复杂度比支持向量机之类的算法低
3.和朴素贝叶斯之类的算法比,对数据没有假设,准确度高,对异常点不敏感
4.由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属的类别,因此对于类域的交叉或重叠较多的待分类样本集来说,KNN方法较其他方法更为适合
5.该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量比较小的类域采用这种算法比较容易产生误分类情况
缺点:
1.计算量大,尤其是特征数非常多的时候
2.样本不平衡的时候,对稀有类别的预测准确率低
3.KD树,球树之类的模型建立需要大量的内存
4.是慵懒散学习方法,基本上不学习,导致预测时速度比起逻辑回归之类的算法慢
5.相比决策树模型,KNN模型的可解释性不强
朴素贝叶斯(监督学习):
0、思想:
对于给定的待分类项x,通过学习到的模型计算后验概率分布,即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为x所属的类别。后验概率根据贝叶斯定理计算。
关键:为避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题,引入了条件独立性假设。用于分类的特征在类确定的条件下都是条件独立的。
朴素贝叶斯采用 属性条件独立性 的假设,对于给定的待分类观测数据X,计算在X出现的条件下,各个目标类出现的概率(即后验概率),将该后验概率最大的类作为X所属的类。而计算后验概率的贝叶斯公式为:p(A|B) =[ p(A) * p(B|A)]/p(B),因为p(B)表示观测数据X出现的概率,它在所有关于X的分类计算公式中都是相同的,所以我们可以把p(B)忽略,则 p(A|B)= p(A) * p(B|A)。
朴素贝叶斯中的“朴素”怎么理解?
朴素贝叶斯中的朴素可以理解为是“简单、天真”的意思,因为“朴素”是假设了特征之间是同等重要、相互独立、互不影响的,但是在我们的现实社会中,属性之间并不是都是互相独立的,有些属性也会存在性,所以说朴素贝叶斯是一种很“朴素”的算法。
朴素贝叶斯有什么优缺点?
优点:
朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
对缺失数据不太敏感,算法也比较简单,常用于文本分类。
分类准确度高,速度快。
对小规模的数据表现很好,能处理多分类任务,适合增量式训练,当数据量超出内存时,我们可以一批批的去增量训练(朴素贝叶斯在训练过程中只需要计算各个类的概率和各个属性的类条件概率,这些概率值可以快速地根据增量数据进行更新,无需重新全量计算)。
缺点:
对训练数据的依赖性很强,如果训练数据误差较大,那么预测出来的效果就会不佳。
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。
但是在实际中,因为朴素贝叶斯“朴素,”的特点,导致在属性个数比较多或者属性之间相关性较大时,分类效果不好。
而在属性相关性较小时,朴素贝叶斯性能最为良好。
对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
需要知道先验概率,且先验概率很多时候是基于假设或者已有的训练数据所得的,这在某些时候可能会因为假设先验概率的原因出现分类决策上的错误。
“朴素”是朴素贝叶斯在进行预测时候的缺点,那么有这么一个明显的假设缺点在,为什么朴素贝叶斯的预测仍然可以取得较好的效果?
对于分类任务来说,只要各个条件概率之间的排序正确,那么就可以通过比较概率大小来进行分类,不需要知道精确的概率值(朴素贝叶斯分类的核心思想是找出后验概率最大的那个类,而不是求出其精确的概率)
如果属性之间的相互依赖对所有类别的影响相同,或者相互依赖关系可以互相抵消,那么属性条件独立性的假设在降低计算开销的同时不会对分类结果产生不良影响。
朴素贝叶斯中有没有超参数可以调?
朴素贝叶斯是没有超参数可以调的,所以它不需要调参,朴素贝叶斯是根据训练集进行分类,分类出来的结果基本上就是确定了的,拉普拉斯估计器不是朴素贝叶斯中的参数,不能通过拉普拉斯估计器来对朴素贝叶斯调参。
朴素贝叶斯中有多少种模型?
朴素贝叶斯含有3种模型,分别是高斯模型,对连续型数据进行处理;多项式模型,对离散型数据进行处理,计算数据的条件概率(使用拉普拉斯估计器进行平滑的一个模型);伯努利模型,伯努利模型的取值特征是布尔型,即出现为ture,不出现为false,在进行文档分类时,就是一个单词有没有在一个文档中出现过。
你知道朴素贝叶斯有哪些应用吗?
朴素贝叶斯的应用最广的应该就是在文档分类、垃圾文本过滤(如垃圾邮件、垃圾信息等)、情感分析(微博、论坛上的积极、消极等情绪判别)这些方面,除此之外还有多分类实时预测、推荐系统(贝叶斯与协同过滤组合使用)、拼写矫正(当你输入一个错误单词时,可以通过文档库中出现的概率对你的输入进行矫正)等。
你觉得朴素贝叶斯对异常值敏不敏感?
朴素贝叶斯对异常值不敏感。所以在进行数据处理时,我们可以不去除异常值,因为保留异常值可以保持朴素贝叶斯算法的整体精度,而去除异常值则可能在进行预测的过程中由于失去部分异常值导致模型的泛化能力下降。
你觉得朴素贝叶斯对缺失值敏不敏感?
朴素贝叶斯是一种对缺失值不敏感的分类器,朴素贝叶斯算法能够处理缺失的数据,在算法的建模时和预测时数据的属性都是单独处理的。因此如果一个数据实例缺失了一个属性的数值,在建模时将被忽略,不影响类条件概率的计算,在预测时,计算数据实例是否属于某类的概率时也将忽略缺失属性,不影响最终结果。
朴素贝叶斯是高方差还是低方差模型?
朴素贝叶斯是低方差模型。(误差 = 偏差 + 方差)对于复杂模型来说,由于复杂模型充分拟合了部分数据,使得它们的偏差变小,但由于对部分数据过分拟合,这就导致预测的方差会变大。因为朴素贝叶斯假设了各个属性之间是相互的,算是一个简单的模型。对于简单的模型来说,则恰恰相反,简单模型的偏差会更大,相对的,方差就会较小。(偏差是模型输出值与真实值的误差,也就是模型的精准度,方差是预测值与模型输出期望的的误差,即模型的稳定性,也就是数据的集中性的一个指标)
朴素贝叶斯为什么适合增量计算?
因为朴素贝叶斯在训练过程中实际只需要计算出各个类别的概率和各个特征的类条件概率,这些概率值可以快速的根据增量数据进行更新,无需重新全量训练,所以其十分适合增量计算,该特性可以使用在超出内存的大量数据计算和按小时级等获取的数据计算中。
朴素贝叶斯与 LR 区别?
朴素贝叶斯是生成模型,LR是判别模型
朴素贝叶斯是基于很强的条件独立假设(在已知分类Y的条件下,各个特征变量取值是相互独立的),而 LR 则对此没有要求
朴素贝叶斯适用于数据集少的情景,而LR适用于大规模数据集。
13.高度相关的特征对朴素贝叶斯有什么影响?
假设有两个特征高度相关,相当于该特征在模型中发挥了两次作用(计算两次条件概率),使得朴素贝叶斯获得的结果向该特征所希望的方向进行了偏移,影响了最终结果的准确性,所以朴素贝叶斯算法应先处理特征,把相关特征去掉。
bagging:
Bagging是bootstrap aggregating。思想就是从总体样本当中随机取一部分样本进行训练,通过多次这样的结果,进行投票获取平均值作为结果输出,这就极大可能的避免了不好的样本数据,从而提高准确度。因为有些是不好的样本,相当于噪声,模型学入噪声后会使准确度不高。
boosting
对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。
进行迭代的过程中,每一步迭代都是一个弱分类器。需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)
Bagging,Boosting的主要区别
样本选择上:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。
样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大。
预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大。
并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
文本分类效果评估
TP、FP、FN、TN可以理解为
-
TP:预测为1,实际为1,预测正确。
-
FP:预测为1,实际为0,预测错误。
-
FN:预测为0,实际为1,预测错误。
- TN:预测为0,实际为0,预测正确。
准确率
首先给出准确率(Accuracy) 的定义,即预测正确的结果占总样本的百分比,表达式为
虽然准确率能够判断总的正确率,但是在样本不均衡的情况下,并不能作为很好的指标来衡量结果。
精确率(查准率)
精确率(Precision) 是针对预测结果而言的,其含义是在被所有预测为正的样本中实际为正样本的概率,表达式为
精确率和准确率看上去有些类似,但是是两个完全不同的概念。精确率代表对正样本结果中的预测准确程度,准确率则代表整体的预测准确程度,包括正样本和负样本。
召回率(查全率)
召回率(Recall) 是针对原样本而言的,其含义是在实际为正的样本中被预测为正样本的概率,表达式为
下面我们通过一个简单例子来看看精确率和召回率。假设一共有10篇文章,里面4篇是你要找的。根据你的算法模型,你找到了5篇,但实际上在这5篇之中,只有3篇是你真正要找的。
F1分数
精确率和召回率又被叫做查准率和查全率,可以通过P-R图进行表示
如何理解P-R(精确率-召回率)曲线呢?或者说这些曲线是根据什么变化呢?
以逻辑回归举例,其输出值是0-1之间的数字。因此,如果我们想要判断用户的好坏,那么就必须定一个阈值。比如大于0.5指定为好用户,小于0.5指定为坏用户,然后就可以得到相应的精确率和召回率。但问题是,这个阈值是我们随便定义的,并不知道这个阈值是否符合我们的要求。因此为了寻找一个合适的阈值,我们就需要遍历0-1之间所有的阈值,而每个阈值都对应一个精确率和召回率,从而就能够得到上述曲线。
根据上述的P-R曲线,怎么判断最好的阈值点呢?首先我们先明确目标,我们希望精确率和召回率都很高,但实际上是矛盾的,上述两个指标是矛盾体,无法做到双高。因此,选择合适的阈值点,就需要根据实际问题需求,比如我们想要很高的精确率,就要牺牲掉一些召回率。想要得到很高的召回率,就要牺牲掉一些精准率。但通常情况下,我们可以根据他们之间的平衡点,定义一个新的指标:F1分数(F1-Score)。F1分数同时考虑精确率和召回率,让两者同时达到最高,取得平衡。F1分数表达式为
上图P-R曲线中,平衡点就是F1值的分数。
Roc、AUC曲线
正式介绍ROC和AUC之前,还需要再介绍两个指标,真正率(TPR)和假正率(FPR)。
真正率(TPR) = 灵敏度(Sensitivity) = TP/(TP+FN)
假正率(FPR) = 1-特异度(Specificity) = FP/(FP+TN)
TPR和FPR分别是基于实际表现1、0出发的,也就是说在实际的正样本和负样本中来观察相关概率问题。因此,无论样本是否均衡,都不会被影响。
继续用上面例子,总样本中有90%的正样本,10%的负样本。TPR能够得到90%正样本中有多少是被真正覆盖的,而与那10%无关。同理FPR能够得到10%负样本中有多少是被覆盖的,而与那90%无关。因此我们从实际表现的各个结果出发,就能避免样本不平衡的问题,这就是为什么用TPR和FPR作为ROC、AUC指标的原因。
ROC
ROC曲线图如下所示,其中横坐标为假正率(FPR),纵坐标为真正率(TPR)。
与前面的P-R曲线类似,ROC曲线也是通过遍历所有阈值来绘制曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的ROC曲线TPR和FPR也会沿着曲线滑动。
同时,我们也会思考,如何判断ROC曲线的好坏呢?我们来看,FPR表示模型虚报的程度,TPR表示模型预测覆盖的程度。理所当然的,我们希望虚报的越少越好,覆盖的越多越好。所以TPR越高,同时FPR越低,也就是ROC曲线越陡,那么模型的性能也就越好。
AUC
AUC(Area Under Curve) 表示ROC中曲线下的面积,用于判断模型的优劣。如ROC曲线所示,连接对角线的面积刚好是0.5,对角线的含义也就是随机判断预测结果,正负样本覆盖应该都是50%。另外,ROC曲线越陡越好,所以理想值是1,即正方形。所以AUC的值一般是介于0.5和1之间的。AUC评判标准可参考如下
0.5-0.7:效果较低。
0.7-0.85:效果一般。
0.85-0.95:效果很好。
0.95-1:效果非常好。
#高频知识点汇总##学习路径#