fscmrmr

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

描述

idx= fscmrmr(TBLResponseVarName属性对特性(预测器)进行排序MRMR算法。桌子TBL包含预测变量和响应变量,和ResponseVarName响应变量的名称在吗TBL。该函数返回idx,其中包含预测器的索引,按预测器的重要性排序。您可以使用idx选择分类问题的重要预测指标。

idx= fscmrmr(TBL公式指定响应变量和预测变量在变量间考虑TBL通过使用公式

idx= fscmrmr(TBLÿ排名预测TBL使用响应变量ÿ

idx= fscmrmr(Xÿ排名预测X使用响应变量ÿ

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

[idx分数] = fscmrmr(___也返回预测分数分数。大分值表示相应的预测是非常重要的。

例子

全部收缩

加载样本数据。

加载电离层

排名基于重要性预测。

[IDX,分数] = fscmrmr(X,Y);

创建预测重要性分数的柱状图。

巴(分数(IDX))xlabel(“预测排名”)ylabel(“预测变量重要性评分”

在第一和第二最重要的预测之间的得分降较大,而第六预测后的液滴都比较小。在重要性得分下降代表特征选择的信心。因此,在大的下降意味着软件有信心选择最重要的预测指标。小液滴表明,在预测重要性的差异不显著。

选择最上面的五个最重要的预测指标。找到这些预测的列X

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

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

查找使用重要的预测fscmrmr。然后比较完整的分类模型的精度(使用所有预测)和一个简化模型使用五个用最重要的预测testckfold

加载census1994数据集。

加载census1994

桌子adultdatacensus1994包含了来自美国人口普查局的人口统计数据预测是否每年超过$ 50,000的个人品牌。显示表的前三行。

头(adultdata,3)
ans =3×15表年龄workClass fnlwgt教育education_num婚姻状况职业关系种族性别capital_gain capital_loss hours_per_week NATIVE_COUNTRY工资___ ________________ __________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ ______ 39国政务77516个学士13未婚ADM-文书不在位家庭白人男性2174 0 40美国-美国<= 50K 50自EMP-未INC 83311所大学13已婚-CIV-配偶Exec的-管理夫白人男性0 0 13美利坚-美国<= 50K 38私人2.1565e + 05 HS-9毕业离婚处理程序,清洁工不在位家庭白人男性0 0 40美国 - 美国<= 50K

的输出参数fscmrmr只包括由功能排名中的变量。通过表格的功能之前,移动的变量,你不想等级,包括响应变量和重量,在表的末尾,这样的输出参数的顺序与表的顺序一致。

在该表adultdata,第三列fnlwgt是样品的重量,并且最后一列薪水为响应变量。移动fnlwgt到左侧薪水通过使用movevars功能。

adultdata = movevars(adultdata,'fnlwgt'“之前”'薪水');头(adultdata,3)
ans =3×15表年龄workClass教育education_num婚姻状况职业关系种族性别capital_gain capital_loss hours_per_week NATIVE_COUNTRY fnlwgt工资___ ________________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ __________ ______ 39国政务学士13未婚ADM-文书不在位家庭白人男性21740 40美国-美国77516 <= 50K 50自EMP-未INC大学13已婚-CIV-配偶Exec的-管理夫白人男性0 0 13美利坚-美国83311 <= 50K 38私人HS-研究所9离婚处理程序的清洁剂未在家庭白人男性0 0 40美国,美国2.1565e + 05 <= 50K

排在预测adultdata。指定的列薪水作为响应变量。

[IDX,分数] = fscmrmr(adultdata,'薪水'“权重”'fnlwgt');

创建预测的重要性分数的柱状图。使用该预测名称X轴刻度标记。

巴(分数(IDX))xlabel(“预测排名”)ylabel(“预测变量重要性评分”)xticklabels(strrep(adultdata.Properties.VariableNames(IDX),'_''\ _'))xtickangle(45)

五个最重要的预测因素是的关系capital_loss资本收益教育每周几小时

对比所有预测到一个与五个最重要的预测指标训练有素的准确性训练的分类树的准确性。

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

C = templateTree;

定义表TBL1包含所有谓词和表TBL2包含五个最重要的预测指标。

TBL1 = adultdata(:,adultdata.Properties.VariableNames(IDX(1:13)));TBL2 = adultdata(:,adultdata.Properties.VariableNames(IDX(1:5)));

将分类树模板和两个表传递给testckfold功能。该功能通过反复的交叉验证两个模型的精度比较。指定“另类”,“大”测试零假设,即所有的预测模型是,顶多是准确的是与五个预测模型。该“更大的”选项可在以下情况下使用“测试”'5x2t'(5×2配对Ť试验)或'10x10t'(10 *重复交叉验证Ť测试)。

[H,P] = testckfold(C,C,TBL1,TBL2,adultdata.salary,“权重”adultdata.fnlwgt,“另类”“更大的”“测试”'5x2t'
h =合乎逻辑0
p = 0.9981

H等于0,p- 值几乎是1,指示故障拒绝零假设。利用该模型的五个预测不会导致相较于所有预测模型精度的损失。

现在,使用所选择的预测训练的分类树。

MDL = fitctree(adultdata,'工资〜+关系+ capital_loss + capital_gain教育+ hours_per_week'“权重”adultdata.fnlwgt)
MDL = ClassificationTree PredictorNames:{1×5细胞} ResponseName: '工资' CategoricalPredictors:[1 2]的类名:[<= 50K> 50K] ScoreTransform: '无' NumObservations:32561的属性,方法

输入参数

全部收缩

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

每行TBL对应于一个观测,并且每一列对应于一个预测变量。(可选)TBL可以包含用于响应变量和权重观察附加列。

响应变量可以是分类,字符或字符串数​​组,逻辑或数字载体,或字符向量的单元阵列。如果响应变量是一个字符数组,然后响应变量的每个元素必须对应于所述阵列的一行。

  • 如果TBL包含响应变量,要使用所有剩余变量TBL作为预测,然后通过使用指定响应变量ResponseVarName。如果TBL还含有观察权重,那么您可以指定使用权权重

  • 如果TBL包含响应变量,您希望只使用其余变量的一个子集TBL作为预测,然后通过使用指定变量的子集公式

  • 如果TBL不包含响应变量,然后通过使用指定的响应变量ÿ。响应变量和TBL必须具有相同的行数。

如果fscmrmr使用的变量中的一个子集TBL如果是预测器,则该函数只使用子集为预测器索引。在值'CategoricalPredictors'名称-值对参数和输出参数idx不计算预测的功能并不靠前。

fscmrmr考虑为NaN“”(空字符向量),“”(空字符串),<缺失><未定义>TBL为响应变量被丢失的值。fscmrmr不为响应变量使用缺失值的观察值。

数据类型:

响应变量名,指定为包含可变的名称中的一个字符向量或标量串TBL

例如,如果一个响应的变量是柱ÿTBLTbl.Y),然后指定ResponseVarName'Y'

数据类型:烧焦|字符串

响应变量和预测器变量的子集的说明模型,指定为形式的字符向量或标量串'Y ~ X1 + X2 + X3'。在这种形式,ÿ表示响应变量,和X1X2X3代表预测变量。

要指定变量的一个子集TBL作为预测,使用一个公式。如果您指定一个公式,然后fscmrmr排名并不靠前的任何变量TBL没有出现在公式

公式中的变量名必须在两个变量名TBLTbl.Properties.VariableNames)和有效MATLAB®身份标识。有关详细信息,请参阅提示

数据类型:烧焦|字符串

响应变量,指定为数字,类别,或逻辑向量,一个字符或字符串数​​组,或字符向量的单元阵列。每行ÿ表示的对应行的标签X

fscmrmr考虑为NaN“”(空字符向量),“”(空字符串),<缺失><未定义>ÿ是缺失值。fscmrmr不使用的观察与缺失值ÿ

数据类型:||明确的|合乎逻辑|烧焦|字符串|细胞

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

数据类型:|

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。的名字是参数的名称和是对应的值。的名字必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:'CategoricalPredictors',[1 2], '冗长',2指定为分类变量,并且指定的详细级别为2的前两个预测变量。

范畴谓词的列表,指定为逗号分隔的对,由'CategoricalPredictors'并在此表中的值之一。

描述
正整数向量 向量中的每一项都是与预测数据列相对应的索引值(X要么TBL),其中包含一个分类变量。
逻辑向量 一个真正项表示预测数据对应的列(X要么TBL)为分类变量。
汉字字模 矩阵的每一行都是一个预测变量的名称。该名称必须在名称匹配TBL。垫多余的空格的名字,这样的字符矩阵的每一行具有相同的长度。
串阵列或字符向量的单元阵列 数组中的每个元素是一个预测变量的名称。该名称必须在名称匹配TBL
'所有' 所有的预测都是绝对的。

默认情况下,如果预测数据是在一个表(TBLfscmrmr假定一个变量是分类,如果它是一个逻辑向量,无序的分类矢量,字符数组,字符串数组,或字符向量的单元阵列。如果预测数据是矩阵(Xfscmrmr假设所有的预测都是连续的。要确定任何其他预测作为分类预测,指定它们通过使用'CategoricalPredictors'名称-值对的论点。

如果fscmrmr使用的变量中的一个子集TBL如果是预测器,则该函数只使用子集为预测器索引。该'CategoricalPredictors'值不计算函数没有排序的谓词。

例:'CategoricalPredictors', '所有'

数据类型:||合乎逻辑|烧焦|字符串|细胞

的类的名称,以用于排名,指定为逗号分隔的一对组成的“类名”和分类,字符或字符串数​​组,逻辑或数字载体,或字符向量的单元阵列。类名必须具有与?相同的数据类型ÿ或者是响应变量TBL

如果类名是一个字符数组,那么每个元素必须对应于数组的一行。

“类名”至:

  • 指定的顺序对应于类顺序尺寸。

  • 选择排名类的子集。例如,假设集所有不同类名的ÿ{ 'A', 'B', 'C'}。排名预测使用意见从班'一个'“c”只是,指定“类名”,{' a ', ' c '}

作为默认值“类名”是集合所有不同的类名ÿ或者是响应变量TBL。默认“类名”值有数学排序如果响应变量是序数。否则,默认值有字母排序。

例:'类名',{ 'B', 'G'}

数据类型:明确的|烧焦|字符串|合乎逻辑|||细胞

每个类的先验概率,指定为逗号分隔对所组成的“在此之前”和以下情况之一:

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

    • “经验”确定概率类从类频率在响应变量ÿ要么TBL。如果你通过观察权重,fscmrmr使用的权重来计算类的概率。

    • “统一”将所有类的概率是相等的。

  • 矢量(每个类标一个值)。要的相应的元件指定类顺序“在此之前”,也可以指定类名名称-值对的论点。

  • 结构体小号有两个字段。

    • S.ClassNames包含类名作为如在响应变量相同类型的变量ÿ要么TBL

    • S.ClassProbs包含相应的概率的向量。

如果为两者都设置值“权重”“在此之前”fscmrmr在归一化每个类别的权重加起来各个类的先验概率的值。

例:“前”、“制服”

数据类型:烧焦|字符串|||结构

指示符用于预测是否使用还是丢弃缺失值,指定为逗号分隔的一对组成的'UseMissing',要么真正使用或丢弃的排名失踪的预测值。

fscmrmr考虑为NaN“”(空字符向量),“”(空字符串),<缺失><未定义>值缺失值。

如果您指定'UseMissing',真, 然后fscmrmr用途缺失值的排名。为分类变量,fscmrmr并将缺失的值作为一个额外的类别。对于连续变量,fscmrmr地方为NaN值的分级独立存仓。

如果您指定'UseMissing',假, 然后fscmrmr对于排名不使用缺失值。因为fscmrmr计算用于每对变量互信息,该函数不丢弃时的行中的值部分地缺少一整行。fscmrmr使用所有对值不包括遗漏值。

例:'UseMissing',真

数据类型:合乎逻辑

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

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

  • 1 -fscmrmr显示计算所需的运行时间互信息和排名预测。

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

例:“详细”,1

数据类型:|

观察权重,指定为逗号分隔的一对组成的“权重”和标量值的向量或一个变量的名称中的TBL。该函数的权重中的每一行的意见X要么TBL与在相应的值权重。的大小权重必须等于行数X要么TBL

如果您指定的输入数据表TBL, 然后权重可以为变量的名称TBL包含数字向量。在这种情况下,你必须指定权重为一个字符向量或标量的字符串。例如,如果权重向量是列w ^TBLTbl.W),然后指定“权重”W”

fscmrmr在归一化每个类别的权重加起来各个类的先验概率的值。

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

输出参数

全部收缩

预测因子的指数X要么TBL根据预测器的重要性排序,返回为1-by-[R数字向量,其中[R为排名预测因子的数量。

如果fscmrmr使用的变量中的一个子集TBL如果是预测器,则该函数只使用子集为预测器索引。例如,假设TBL包括10列和您指定的最后五列TBL通过使用预测变量公式。如果IDX(3),那么第三个最重要的预测是在第10列TBL,这是在该子集中的第五预测。

预测分数,返回为1逐[R数字向量,其中[R为排名预测因子的数量。

大分值表示相应的预测是非常重要的。此外,在功能重要性分数下降代表特征选择的信心。例如,如果软件有信心选择功能X,则下一个最重要特征的分值远远小于的分值X

  • 如果你使用X指定预测或使用中的所有变量TBL作为预测,则在值分数具有相同的顺序在预测X要么TBL

  • 如果指定的变量中的一个子集TBL作为预测,则在值分数具有相同的顺序作为子集。

例如,假设TBL包括10列和您指定的最后五列TBL通过使用预测变量公式。然后,得分(3)中第8列的分数值TBL,这是在该子集中的第三预测值。

更多关于

全部收缩

互信息

两个变量的措施之间的相互信息如何通过了解其他变量来减少一个变量的不确定性。

的互信息一世离散随机变量Xž被定义为

一世 X ž = Σ 一世 Ĵ P X = X 一世 ž = ž Ĵ 日志 P X = X 一世 ž = ž Ĵ P X = X 一世 P ž = ž Ĵ

如果Xž是独立的,那么一世等于0。如果Xž是相同的随机变量,则一世等于熵X

fscmrmr函数使用这个定义来计算互信息值都分类(离散的)和连续变量。fscmrmr离散化连续变量为256个箱或唯一值的变量的数目,如果它是小于256的功能的发现最佳二元箱用于使用所述自适应算法每对变量[2]

提示

  • 如果您使用的输入参数中指定的响应变量和预测变量公式,则在公式中的变量名必须在两个变量名TBLTbl.Properties.VariableNames)和有效的MATLAB标识符。

    您可以验证的变量名中TBL通过使用isvarname功能。下面的代码返回的逻辑1真正)为每个具有有效变量名的变量。

    cellfun(@ isvarname,Tbl.Properties.VariableNames)
    如果变量名中TBL是无效的,然后使用它们转换matlab.lang.makeValidName功能。
    Tbl.Properties.VariableNames=matlab.lang.makeValidName(Tbl.Properties.VariableNames);

算法

全部收缩

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

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

在MRMR算法的目标是找到一个最佳的集小号的功能最大化V小号的相关性小号相对于一个响应变量ÿ,最大限度地减少w ^小号,冗余小号,在那里V小号w ^小号定义与互信息一世

V 小号 = 1 | 小号 | Σ X 小号 一世 X ÿ

w ^ 小号 = 1 | 小号 | 2 Σ X ž 小号 一世 X ž

| S |功能的数量小号

寻找最佳的集小号需要考虑到所有2|Ω|组合,Ω是整个功能集。相反,MRMR算法通过前添加方案,这需要队伍的特点Ø(|Ω|·|小号|)计算,通过使用互信息商数(MIQ)值。

MIQ X = V X w ^ X

在哪里VXw ^X是一个特征,分别的相关性和冗余:

V X = 一世 X ÿ

w ^ X = 1 | 小号 | Σ ž 小号 一世 X ž

fscmrmr功能排列所有特征Ω并返回idx使用MRMR算法(特征的指数下令功能的重要性)。因此,计算成本变得Ø(|Ω|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 MIQ X = 最大 X 小号 C 一世 X ÿ 1 | 小号 | Σ ž 小号 一世 X ž

  5. 重复步骤4,直到相关性是所有功能零小号C

  6. 添加功能的零相关性小号按随机顺序。

该软件可以跳过任何一步,如果它不能找到一个满足条件的步骤中所描述的特征。

兼容性注意事项

全部展开

行为R2020a改变

参考

[1]丁,C.,和H.彭。“从微阵列基因表达数据的最小冗余特征选择”。生物信息学和计算生物学杂志。卷。3,第2号,2005年,页185-205。

[2] Darbellay,G. A.,和I. Vajda。“的由观察空间的自适应分区的信息估计。”IEEE信息理论汇刊。卷。45,第4号,1999年,第1315至1321年。

介绍了在R2019b