基于 R语言的判别分析介绍与实践(1)

简介: 本期介绍的是 《Machine Learning with R, tidyverse, and mlr》 一书的第五章—— 判别分析(discriminant analysis)。 判别分析是解决分类问题的多种算法的总称,通过将预测变量组合成新的变量来找到预测变量的新表示(必须是连续的),从而最好地区分类。这种思想和一些降维算法有些相似。

前言


本期介绍的是 《Machine Learning with R, tidyverse, and mlr》 一书的第五章—— 判别分析(discriminant analysis)。 判别分析是解决分类问题的多种算法的总称,通过将预测变量组合成新的变量来找到预测变量的新表示(必须是连续的),从而最好地区分类。这种思想和一些降维算法有些相似。

%W[)R~2F_BA{N$K0LE7[]5Y.png


1. 判别分析简介

假设我们要根据病人的基因表达来预测他们对药物的反应,测量 1000 个基因表达水平(即 1000 个预测变量),记录它们对药物的反应是积极的(Pos)、消极的(Neg),还是完全没有反应(None)(一个三分类问题)。

一个有多种预测变量的数据集可能有以下问题:

  • 数据难以探索和绘制;
  • 可能有许多预测变量没有或很少包含预测信息;
  • Curse of dimensionality。


1.1 判别函数

在这个例子中,同时绘制 1000 个基因表达水平并解释类之间的差异性或相似性几乎是不可能的。但是,我们可以使用判别分析来获取所有信息,并将其压缩成一个可管理数量的判别函数,每个判别函数都是原始变量的组合。 也就是说,判别分析将预测变量作为输入,并找到这些变量的一种新的、低维的表示方式(即判别函数),以最大化类之间的分离。过程如 Fig 1 所示。

K[IF6~8WGI3@)EYAE({FLK0.png

Fig 1. 判别分析降维过程

判别函数的数量通常为:

  • 类个数减 1;
  • 预测变量的个数;

取二者更小值。

本例中,包含在这 1000 个预测变量中的信息将被压缩成两个变量(三个类 -1)。现在就可以很容易地将这两个新变量画在一起,并查看这三个类是如何分离的。

包括含有很少或没有预测信息的预测变量会增加噪声,这会对学习的模型性能产生负面影响。当判别分析算法学习它们的判别函数时,就会赋予预测信息较大的预测变量更大的权重,从而更好地判别类。含有很少或没有预测信息的预测变量被赋予较少的权重,对最终模型的贡献也较少。

:尽管可以通过设置权重减轻弱预测变量的影响,但判别分析模型在进行特征选择(删除弱预测变量)后仍然会表现得更好。


1.2 Curse of dimensionality

Curse of dimensionality 在处理高维数据(包含许多预测变量的数据)时会出现问题。随着特征空间(预测变量所有可能组合的集合)的变大,该空间中的数据就会变得稀疏。更简单地说,对于一个数据集中相同数量的情况,若稀疏地增加特征空间维数,那么这些实例之间的距离就会越来越远,它们之间的空隙就会越来越大,如 Fig 2 所示。

]FX]L@50$K{[)@0(B{JA2G2.png

image.gifFig 2. 随着维度的增加,数据变得更加稀疏

这种维数增加的后果是,特征空间的某个区域可能只有很少的实例来占据,因此算法更有可能从"例外的"实例中学习。在数据中。当算法从例外实例中学习时,会导致模型的过度拟合,这就是 curse of dimensionality

然而,这并不是说预测变量越多就越不好。对于大多数问题,添加有预测价值的预测变量可以提高模型的预测精度。通过实行特征选择和降维可以进一步防范 curse of dimensionality 造成的过拟合。

判别分析两种最基本和常用的算法是:

  1. 线性判别分析 linear discriminant analysis (LDA)
  2. 二次判别分析 quadratic discriminant analysis (QDA)

LDAQDA 分别学习类之间的线性(直线)和曲线决策边界.


2. LDA

2.1 二分类问题

假设我们要用两个预测变量来分离数据中的两个类,如 Fig 3 所示。LDA 的目标是学习一种新的数据表示方式,将每个类的质心分开,同时保持类内方差尽可能低。质心就是特征空间中所有预测因子的均值(一个均值向量)的点。然后,LDA 找到一条穿过原点的线,进行投影并同时:

  • 最大化关于这条线的类质心之间的差异
  • 最小化关于这条线的类内方差

即通过最大化

LWT6L2BLHIC_%FK(U3H9$$R.png

来选择合适的直线。分子是类均值之差,分母是直线上每个类的方差之和。

BSEA6{MW81K$KHLWV2YZ4(P.png

Fig 3. 二维下判别分析

为什么不简单地找出使质心间距最大化的直线呢?因为最好地分离质心的这条线并不能保证不同类最好地分离,如 Fig 4 所示

@W]9~HDO4B)7RPWM95SWVC4.png

Fig 4. 是否仅使质心间距最大化对比

  • 左图中,绘制的一条直线只是将两个类的质心分离最大化,当将数据投影到这条直线上时,类并没有完全分离,因为相对较高的方差意味着它们彼此重叠。
  • 右图中,直线试图最大化质心距离,同时最小化沿该线的每个类的方差。这导致质心稍微靠近一些,但方差小得多,这样两个类是完全分开的。

这条直线称为判别函数,它是原始变量的线性组合。例如,一个判别函数可以用如下公式来描述:

WB@2{4RIKMS(6NXZ`NLXHMH.png

判别函数是变量的线性组合,每个变量乘以的值称为正则判别函数系数,每个变量的权重为它的正则判别函数系数对类分离的贡献。


2.2 多分类问题


2.2.1 两个预测变量

判别分析可以处理两类以上的分类问题,但在这种情况下,它如何学习得到最佳直线呢? 它不是试图最大化类质心之间的分离,而是最大化每个类质心和数据的大质心(所有数据的质心,忽略类成员关系)之间的分离。如 Fig 5 所示,每个类质心用三角表示,数据大质心用十字表示。

I]7](YF)$LJY2Y9D6143$GC.png

Fig 5. LDA 处理三分类

LDA 首先找出最能将类质心与大质心分离并使各类的方差最小的线,第二条直线与第一条正交。然后,数据被投影到这些直线上,这样,每个实例都会得到每个判别函数的判别分数(沿着新直线的值)。这些判别分数可以相互作图,形成原始数据的新表示形式。


2.2.2 多个预测变量

8MCVTLLU@LVOGG8[`@[RMDB.png

Fig 6. LDA 多分类多个预测变量问题

Fig 6 所示是三个预测变量分三类的情况。首先,LDA 求出的判别函数使各类质心与大质心之间的距离最大化,同时使各类质心之间的方差最小。接下来,LDA 找到第二个判别函数(与第一个正交),它也试图在最小化方差的同时最大化分离质心(这里读者们可以思考一下为什么只需要两个判别函数)。通过在数据中获取每个实例的判别分数,我们可以只在两个维度上绘制数据。

但如果不是仅仅是三个预测变量,比如有 1000个(前面例子),LDA 将把所有预测变量信息压缩到两个变量中。


3. QDA

通常情况下类有不同的协方差,此时 QDA 往往比 LDA 表现得更好。QDA 不是学习直线,而是学习曲线。因此,它也非常适合于一类由非线性决策边界最好分离的情况。

@R9_FQSG6GR8COS%2VIS8]H.png

image.gifFig 7. 两个类具有相等的协方差(变量 1 和变量 2 之间的关系对两个类来说是相同的)和不等的协方差的例子

Fig 7 左图中两个类有相等的协方差,因为对于每个类来说,变量 1 增加,变量 2 减少的数量相同。在这种情况下,LDA 和 QDA 会找到相似的判别函数,尽管 LDA 由于灵活性较差比 QDA 更不容易出现过拟合。Fig 7 右图中,两个类的协方差不同。在这种情况下,QDA 会找到一个曲线判别函数,当数据被投影到它上面时,它会比线性判别函数在分离类方面做得更好。


4. 使用 LDA 和 QDA 进行预测

假设此时已经构造出判别函数并将高维数据压缩成少量的判别函数。LDA 和 QDA 如何利用这些信息对新的观测结果进行分类? 这里将会使用一个非常重要的统计定理—— Baye’s rule

Baye’s rule 可以告诉我们已知数据中任何一个实例的预测变量的值,这个实例属于 k 类的概率是多少,即 :

。通常要得到 较为困难,更多使用

  • : 先验,为数据集中实例属于类 k 的比例
  • : 似然,将数据投影到它们的判别函数上,再估计它们的概率密度。判别分析假设数据是正态分布的,因此它通过将正态分布拟合到每一类,并结合判别函数来估计概率密度。

]$OX7J9O7MH9NJ$Z{PIY7_3.png

Fig 8. 假设每个类的概率密度是正态分布的,每个分布的中心是类的质心

Fig 8 展示的是有一个和两个判别函数时估计所得的概率密度图。可以看到,沿着判别函数直线靠近类质心的实例概率密度高,而远离类质心的实例概率密度低。

一旦得到先验和概率密度,便可以根据 Baye’s rule 对每一类的后验概率  进行估计,概率最高的一类就是这个实例的分类。


目录
相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
58 3
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
数据采集 算法 搜索推荐
R语言营销数据分析:使用R进行客户分群的实践探索
【9月更文挑战第1天】R语言以其强大的数据处理和统计分析能力,在金融数据分析、营销数据分析等多个领域发挥着重要作用。通过R语言进行客户分群,企业可以更好地理解客户需求,制定精准的营销策略,提升市场竞争力和客户满意度。未来,随着大数据和人工智能技术的不断发展,R语言在营销数据分析中的应用将更加广泛和深入。
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
4月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
7月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
7月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
4月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
91 3