主要内容

fscmrmr

采用最小冗余最大相关性(MRMR)算法对特征进行分类排序

描述

idx= fscmrmr (资源描述ResponseVarName排序功能(预测器)使用MRMR算法.表资源描述包含预测变量和响应变量,以及ResponseVarName响应变量的名称在吗资源描述.函数返回idx,其中包含按预测因子重要性排序的预测因子指数。你可以使用idx为分类问题选择重要的预测因子。

idx= fscmrmr (资源描述公式中的变量中指定要考虑的响应变量和预测变量资源描述通过使用公式

例子

idx= fscmrmr (资源描述Y在预测器中排名资源描述使用响应变量Y

例子

idx= fscmrmr (XY在预测器中排名X使用响应变量Y

idx= fscmrmr (___名称,值除前面语法中的任何输入参数组合外,还使用一个或多个名称-值对参数指定其他选项。例如,您可以指定先验概率和观测权重。

idx分数= fscmrmr(___还返回预测器分数分数.得分越大,说明相应的预测因子很重要。

例子

全部折叠

加载样例数据。

负载电离层

根据重要性对预测因素进行排序。

[idx,scores] = fscmrmr(X,Y);

创建预测器重要性分数的条形图。

栏(分数(idx))包含(“预测排名”) ylabel (“预测者重要性评分”

图中包含一个轴对象。axis对象包含一个bar类型的对象。

第一个和第二个最重要的预测因素之间的得分下降很大,而第六个预测因素之后的下降相对较小。重要性分数的下降表示特征选择的可信度。因此,大幅下降意味着软件有信心选择最重要的预测因素。小滴表示预测因子重要性的差异不显著。

选择前五个最重要的预测因素。找到这些预测因子的列X

idx (1:5)
ans =1×55 4 1 7 24

第五列X最重要的预测因素是什么Y

通过使用找到重要的预测因素fscmrmr.然后比较完整分类模型(使用所有预测因子)和使用五个最重要预测因子的简化模型的准确性testckfold

加载census1994数据集。

负载census1994

adultdatacensus1994包含美国人口普查局的人口数据,以预测一个人的年收入是否超过5万美元。显示表的前三行。

头(adultdata, 3)
年龄workClass fnlwgt教育education_num marital_status种族职业关系性capital_gain capital_loss hours_per_week native_country薪水  ___ ________________ __________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ ______ 39 State-gov 77516单身汉13未婚Adm-clerical家族的白人男性2174 0 40美国< = 50 k 50 Self-emp-not-inc 83311单身汉13已婚-公民-配偶-行政-管理-丈夫-白人男性0 0 13美国<=50K 38二等兵2.1565e+05 hs -毕业生9离婚处理人-清洁工没有家庭的白人男性0 0 40美国<=50K

的输出参数fscmrmr只包含按函数排序的变量。在将表传递给函数之前,将不希望排序的变量(包括响应变量和权重)移动到表的末尾,以便输出参数的顺序与表的顺序一致。

在表格中adultdata,第三列fnlwgt是样本的权重,和最后一列工资是响应变量。移动fnlwgt在的左边工资通过使用movevars函数。

成人数据= movevars(成人数据,“fnlwgt”“之前”“工资”);头(adultdata, 3)
种族性别年龄workClass教育education_num marital_status职业关系capital_gain capital_loss hours_per_week native_country fnlwgt薪水  ___ ________________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ __________ ______ 39 State-gov单身汉13未婚Adm-clerical家族的白人男性2174 0 77516美国< = 50 k 50 Self-emp-not-inc单身汉13已婚-公民-配偶-行政-管理-丈夫-白人男性0 0 13美国83311 <=50K 38私人hs -毕业生9离婚处理-清洁工-非家庭白人男性0 0 40美国2.1565e+05 <=50K

对预测因子进行排序adultdata.指定列工资作为响应变量。

[idx,scores] = fscmrmr(成人数据,“工资”“重量”“fnlwgt”);

创建一个预测器重要性分数的条形图。的预测器名称x-轴标记标签。

栏(分数(idx))包含(“预测排名”) ylabel (“预测者重要性评分”) xticklabels (strrep (adultdata.Properties.VariableNames (idx),“_”“\ _”) xtickangle (45)

图中包含一个轴对象。axis对象包含一个bar类型的对象。

最重要的五个预测因素是的关系capital_losscapital_gain教育,hours_per_week

比较用所有预测器训练的分类树的准确性与用五个最重要的预测器训练的分类树的准确性。

使用默认选项创建一个分类树模板。

C = templateTree;

定义表tbl1以包含所有预测器和表tbl2包含五个最重要的预测因子。

tbl1 = adultdata(:,adultdata. properties . variablenames (idx(1:13)));tbl2 = adultdata(:,adultdata. properties . variablenames (idx(1:5)));

将分类树模板和两个表传递给testckfold函数。该函数通过重复交叉验证来比较两个模型的准确性。指定“替代”、“大”检验零假设,即包含所有预测因子的模型最多与包含五个预测因子的模型一样准确。的“更大的”选项在以下情况下可用“测试”“5 x2t”(5×2配对t测试)或“10 x10t”(10 × 10重复交叉验证t测试)。

[h,p] = testckfold(C,C,tbl1,tbl2,成人数据。“重量”adultdata.fnlwgt,“替代”“更大的”“测试”“5 x2t”
h =逻辑0
P = 0.9969

h等于0p-value几乎为1,表示拒绝零假设失败。与使用所有预测因子的模型相比,使用带有五个预测因子的模型并不会导致准确性的损失。

现在使用选定的预测器训练分类树。

MDL = fitctree(成人数据,“工资~关系+资本损失+资本收益+教育+每周小时数”...“重量”adultdata.fnlwgt)
mdl = ClassificationTree PredictorNames: {1x5 cell} ResponseName: 'salary' CategoricalPredictors: [1 2] ClassNames: [<=50K >50K] ScoreTransform: 'none' NumObservations: 32561 Properties, Methods

输入参数

全部折叠

示例数据,指定为表。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。

每行资源描述对应一个观测值,每一列对应一个预测变量。可选地,资源描述可以包含响应变量和观察权重的附加列。

响应变量可以是类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。如果响应变量是字符数组,则响应变量的每个元素必须对应于数组中的一行。

  • 如果资源描述包含响应变量,您希望在中使用所有剩余变量资源描述作为预测器,然后通过使用指定响应变量ResponseVarName.如果资源描述还包含观测权重,然后可以通过使用指定权重权重

  • 如果资源描述包含响应变量,并且您希望仅在中使用其余变量的子集资源描述作为预测器,然后通过使用指定变量的子集公式

  • 如果资源描述不包含响应变量,然后通过使用Y.响应变量和资源描述必须有相同的行数。

如果fscmrmr中使用变量的子集资源描述作为预测器,函数仅使用该子集对预测器进行索引。中的值“CategoricalPredictors”名称-值对参数和输出参数idx不要计算函数没有排序的预测因子。

fscmrmr认为(空字符向量),""(空字符串),< >失踪,<定义>资源描述响应变量缺少值。fscmrmr不使用缺少值的观察值作为响应变量。

数据类型:表格

响应变量名,指定为包含变量名的字符向量或字符串标量资源描述

例如,如果响应变量是列Y资源描述资源描述。Y),然后指定ResponseVarName作为“Y”

数据类型:字符|字符串

响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”.在这种形式下,Y表示响应变量,和x1x2,x3表示预测变量。

中指定变量的子集资源描述作为预测因素,使用公式。如果你指定一个公式,那么fscmrmr不排名任何变量资源描述没有出现在公式

公式中的变量名必须同时为资源描述Tbl.Properties.VariableNames)和有效的MATLAB®标识符。中的变量名可以验证资源描述通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:字符|字符串

响应变量,指定为数字、类别或逻辑向量、字符或字符串数组或字符向量的单元格数组。每行Y的对应行的标签X

fscmrmr认为(空字符向量),""(空字符串),< >失踪,<定义>Y丢失的值。fscmrmr不使用缺少值的观察Y

数据类型:||分类|逻辑|字符|字符串|细胞

预测器数据,指定为数值矩阵。每行X对应一个观测值,每一列对应一个预测变量。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“CategoricalPredictors”,[1 - 2],“详细”,2将前两个预测变量指定为分类变量,并将详细级别指定为2。

类别预测符的列表,指定为此表中的值之一。

价值 描述
正整数向量

向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间p,在那里p用于训练模型的预测器的数量。

如果fscmrmr使用输入变量的子集作为预测器,然后函数仅使用该子集对预测器进行索引。的CategoricalPredictors值不计算响应变量、观察权重变量或函数不使用的任何其他变量。

逻辑向量

一个真正的Entry表示对应的预测器是分类的。向量的长度是p

字符矩阵 矩阵的每一行都是一个预测变量的名称。名称必须与中的名称相匹配资源描述.用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。
字符向量的字符串数组或单元格数组 数组中的每个元素都是一个预测变量的名称。名称必须与中的名称相匹配资源描述
“所有” 所有预测因素都是绝对的。

默认情况下,如果预测器数据在表(资源描述),fscmrmr如果一个变量是逻辑向量、无序分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定它是分类的。如果预测器数据为矩阵(X),fscmrmr假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用CategoricalPredictors名称-值参数。

例子:“CategoricalPredictors”、“所有”

例子:分类预测=[1 5 6 8]

数据类型:||逻辑|字符|字符串|细胞

用于排序的类的名称,指定为逗号分隔的对,由“类名”以及类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。一会必须具有相同的数据类型Y或者响应变量资源描述

如果一会是字符数组,则每个元素必须对应数组中的一行。

使用“类名”:

  • 的顺序之前与类顺序相对应的维度。

  • 选择一个类的子集进行排名。例如,假设集合中所有不同的类名Y{' a ', ' b ', ' c '}.使用类的观察对预测器进行排序“一个”而且“c”只是,指定“类名”,{' a ', ' c '}

的默认值“类名”所有不同类名的集合在吗Y或者响应变量资源描述.默认的“类名”如果响应变量是有序的,则值具有数学顺序。否则,默认值按字母顺序排列。

例子:“类名”,{' b ', ' g '}

数据类型:分类|字符|字符串|逻辑|||细胞

每个类别的先验概率,指定为以下之一:

  • 字符向量或字符串标量。

    • “经验”从响应变量中的类频率确定类概率Y资源描述.如果你传递观察权重,fscmrmr使用权重来计算类概率。

    • “统一”将所有类的概率设置为相等。

  • 向量(每个类有一个标量值)。的对应元素的类顺序“之前”,设置“类名”名称-值参数。

  • 结构年代有两个字段。

    • S.ClassNames中响应变量类型相同的变量包含类名Y资源描述

    • S.ClassProbs包含一个对应概率的向量。

fscmrmr规范化每个类中的权重(“重量”),使其相加为各类别的先验概率值。

例子:“前”、“制服”

数据类型:字符|字符串|||结构体

指示是否在预测器中使用缺失值的指示器,指定为任意一种真正的使用这些值进行排序,或者丢弃值。

fscmrmr认为(空字符向量),""(空字符串),< >失踪,<定义>值为缺失值。

如果你指定UseMissing作为真正的,然后fscmrmr使用缺失值进行排序。对于一个分类变量,fscmrmr将缺失值作为一个额外类别处理。对于一个连续变量,fscmrmr的地方值放在单独的bin中进行装箱。

如果你指定UseMissing作为,然后fscmrmr不使用缺失值进行排序。因为fscmrmr计算每对变量的互信息,当行中缺少部分值时,函数不会丢弃整行。fscmrmr使用不包括缺失值的所有对值。

例子:“UseMissing”,真的

例子:UseMissing = true

数据类型:逻辑

详细级别,指定为逗号分隔的对,由“详细”和一个非负整数。的价值详细的控制软件在命令窗口中显示的诊断信息的数量。

  • 0 -fscmrmr不显示任何诊断信息。

  • 1 -fscmrmr显示计算所消耗的时间互信息对预测因素进行排序。

  • ≥2 -fscmrmr显示与计算互信息相关的运行时间和更多消息。信息的数量随着你的增加而增加“详细”价值。

例子:“详细”,1

数据类型:|

观察权重,由逗号分隔的对组成“重量”和标量值的向量或变量的名称资源描述.函数对每一行的观察值进行加权X资源描述中对应的值权重.的大小权重必须等于行数X资源描述

如果将输入数据指定为表资源描述,然后权重可以是变量名中的资源描述它包含一个数值向量。在这种情况下,您必须指定权重作为字符向量或字符串标量。例如,如果权重向量是列W资源描述资源描述。W),然后指定“权重”W”

fscmrmr将每个类中的权重归一化,使其加起来等于各自类的先验概率值。

数据类型:||字符|字符串

输出参数

全部折叠

的预测指标X资源描述按预测器重要性排序,返回为1 × -r数字向量,其中r是排序预测器的数量。

如果fscmrmr中使用变量的子集资源描述作为预测器,函数仅使用该子集对预测器进行索引。例如,假设资源描述包含10列,您指定的后5列资源描述作为预测变量公式.如果idx (3)5,那么第三个最重要的预测因子是第10列资源描述这是该子集中的第五个预测因子。

预测分数,以1 × -的形式返回r数字向量,其中r是排序预测器的数量。

得分越大,说明相应的预测因子很重要。此外,特征重要性分数的下降代表了特征选择的置信度。例如,如果软件有信心选择一个功能x,则下一个最重要特征的分数值远小于的分数值x

  • 如果你使用X中指定预测器或使用所有变量资源描述作为预测器,则分数和预测因子的顺序一样吗X资源描述

  • 如果指定变量的子集资源描述作为预测器,则分数与子集的顺序相同。

例如,假设资源描述包含10列,您指定的后5列资源描述作为预测变量公式.然后,分数(3)中第8列的分数值资源描述这是子集中的第三个预测因子。

更多关于

全部折叠

互信息

两个变量之间的互信息衡量了一个变量通过知道另一个变量可以减少多少不确定性。

互信息离散随机变量的X而且Z定义为

X Z j P X x Z z j 日志 P X x Z z j P X x P Z z j

如果X而且Z那么它们是独立的= 0。如果X而且Z是相同的随机变量吗等于X

fscmrmr函数使用此定义来计算分类(离散)变量和连续变量的互信息值。fscmrmr将连续变量离散为256个容器或变量中唯一值的数量(如果小于256)。该函数使用自适应算法为每对变量查找最优双变量箱[2]

算法

全部折叠

最小冗余最大相关性(MRMR)算法

MRMR算法[1]找到一个最优的特征集,是相互的和最大不同的,可以有效地表示响应变量。该算法使特征集的冗余最小化,并使特征集与响应变量的相关性最大化。该算法利用变量的互信息、特征的成对互信息和特征与响应的互信息来量化冗余度和相关性。你可以用这个算法来解决分类问题。

MRMR算法的目标是找到一个最优的集合年代最大化的特征V年代的相关性年代对于响应变量y,并将W年代的冗余度年代,在那里V年代而且W年代定义为互信息

V 年代 1 | 年代 | x 年代 x y

W 年代 1 | 年代 | 2 x z 年代 x z

|的|功能的数量是多少年代

寻找最优集合年代需要考虑所有2|Ω|组合,Ω是整个特性集。相反,MRMR算法通过前向添加方案对特征进行排序,这需要O(|Ω|·|年代|)利用互信息商(MIQ)值进行计算。

进行筛选 x V x W x

在哪里Vx而且Wx为特征的相关性和冗余度,分别为:

V x x y

W x 1 | 年代 | z 年代 x z

fscmrmrFunction对所有的特性进行排序Ω并返回idx(根据特征重要性排序的特征指数)使用MRMR算法。因此,计算代价变成O(|Ω|2.该函数使用启发式算法量化特征的重要性,并返回一个分数(分数).得分越大,说明相应的预测因子很重要。此外,特征重要性分数的下降代表了特征选择的置信度。例如,如果软件有信心选择一个功能x,则下一个最重要特征的分数值远小于的分数值x.您可以使用输出来查找最优集年代对于给定数量的特征。

fscmrmr排名特征如下:

  1. 选择相关性最大的特征, 马克斯 x Ω V x .将所选特性添加到空集年代

  2. 的补体中寻找具有非零相关性和零冗余的特征年代年代c

    • 如果年代c不包含非零相关性和零冗余的特性,请转到步骤4。

    • 否则,选择相关性最大的特征, 马克斯 x 年代 c W x 0 V x .将所选特性添加到集合中年代

  3. 重复步骤2,直到所有特征的冗余不为零年代c

  4. 选择中MIQ值最大、相关性和冗余度非零的特征年代c,并将所选特征添加到集合中年代

    马克斯 x 年代 c 进行筛选 x 马克斯 x 年代 c x y 1 | 年代 | z 年代 x z

  5. 重复步骤4,直到所有特征的相关性为零年代c

  6. 添加与之无关的特性年代顺序是随机的。

如果软件无法找到满足该步骤中描述的条件的特性,则可以跳过任何步骤。

参考文献

[1]丁、C、彭。从微阵列基因表达数据中选择最小冗余特征。生物信息学与计算生物学杂志。Vol. 3, no . 2, 2005, pp. 185-205。

[2]达贝雷,g.a.和i.w ajda。“通过对观测空间的自适应划分来估计信息。”IEEE信息论汇刊。卷45,第4期,1999,第1315-1321页。

版本历史

R2019b引入

全部展开