主要内容

fscmrmr

使用最小冗余最大相关性等级特性分类(MRMR)算法

描述

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

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

例子

idx= fscmrmr (资源描述,Y)排名预测资源描述使用响应变量Y

例子

idx= fscmrmr (X,Y)排名预测X使用响应变量Y

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

(idx,分数)= fscmrmr (___)还返回预测分数分数。大的得分值表明,相应的预测是很重要的。

例子

全部折叠

加载示例数据。

负载电离层

根据重要性等级的预测因子。

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

创建一个酒吧的情节预测重要性分数。

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

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

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

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

第五列X是最重要的预测Y

通过使用找到重要的预测因子fscmrmr。然后比较完整的分类模型的精度(它使用所有预测)和减少模型使用使用的五个最重要的预测因子testckfold

加载census1994数据集。

负载census1994

adultdatacensus1994包含统计数据来自美国人口普查局预测一个人是否使每年超过50000美元。显示表的前三行。

头(adultdata, 3)
ans =3×15表年龄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 Married-civ-spouse Exec-managerial丈夫13美国白人男性0 0 < = 50 k 38私人2.1565 e + 05 HS-grad 9离婚Handlers-cleaners家族的白人男性40 0 0美国< = 50 k

的输出参数fscmrmr排名只包括变量的函数。前一个表传递给函数,把你不想等级变量,包括响应变量和重量,表的结束,这样的顺序输出参数与表的顺序是一致的。

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

adultdata = movevars (adultdata,“fnlwgt”,“之前”,“工资”);头(adultdata, 3)
ans =3×15表种族性别年龄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 Married-civ-spouse Exec-managerial丈夫白人男性0 0 83311年美国13日< = 50 k 38私人HS-grad 9离婚Handlers-cleaners家族的白人男性40 0 0美国2.1565 e + 05 < = 50 k

等级的预测adultdata。指定的列工资作为反应变量。

[idx,分数]= fscmrmr (adultdata,“工资”,“重量”,“fnlwgt”);

创建一个酒吧图预测重要的分数。使用预测的名称x设在标记标签。

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

五个最重要的预测因子的关系,capital_loss,capital_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 *重复交叉验证t测试)。

(h p) = testckfold (C, C, tbl1、tbl2 adultdata.salary,“重量”adultdata.fnlwgt,“替代”,“更大的”,“测试”,“5 x2t”)
h =逻辑0
p = 0.9969

h= 0和p值几乎是1,表示失败拒绝零假设。使用模型的五个因素不会导致精确度损失相比,模型的预测。

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

mdl = fitctree (adultdata,的工资~关系+ capital_loss + capital_gain +教育+ hours_per_week ',“重量”adultdata.fnlwgt)
mdl = ClassificationTree PredictorNames: {1} x5细胞ResponseName:“工资”CategoricalPredictors:[1 - 2]一会:(< = 50 k > 50 k) ScoreTransform:“没有一个”NumObservations: 32561属性,方法

输入参数

全部折叠

样本数据,指定为一个表。多列变量和细胞数组以外的细胞阵列的特征向量是不允许的。

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

响应变量可以是一个直言,字符,或字符串数组,逻辑或数值向量,或单元阵列的特征向量。如果响应变量是一个字符数组,每个元素的响应变量必须对应一行的数组。

  • 如果资源描述包含响应变量,你想使用所有剩余的变量资源描述作为预测因子,然后通过使用指定的响应变量ResponseVarName。如果资源描述还包含观察权重,那么您可以指定使用的重量权重

  • 如果资源描述包含响应变量,和你想使用剩余的变量的一个子集资源描述作为预测因子,然后由使用指定变量的子集公式

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

如果fscmrmr使用变量的子集资源描述预测,那么函数索引预测仅使用子集。中的值“CategoricalPredictors”名称-值对参数和输出参数idx不计数函数的预测没有排名。

fscmrmr认为,(空字符向量),”“(空字符串),<失踪>,<定义>资源描述一个反应变量缺失值。fscmrmr不使用观测与失踪的响应变量的值。

数据类型:

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

例如,如果一个响应变量的列Y资源描述(Tbl.Y),然后指定ResponseVarName作为“Y”

数据类型:字符|字符串

响应变量的解释模型和预测变量的一个子集,指定为一个特征向量或字符串标量形式“Y ~ X1 + X2 + X3”。在这种形式,Y代表的响应变量,X1,X2,X3代表了预测变量。

指定变量的子集资源描述为预测因子,使用一个公式。如果您指定一个公式fscmrmr没有等级变量吗资源描述不出现在公式

公式中的变量名必须两变量名资源描述(Tbl.Properties.VariableNamesMATLAB)和有效®标识符。有关详细信息,请参见提示

数据类型:字符|字符串

响应变量、指定为一个数字分类,或逻辑向量,字符或字符串数组或单元阵列的特征向量。每一行的Y代表的标签对应的行X

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

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

预测数据,指定为一个数字矩阵。每一行的X对应于一个观察,每一列对应一个预测变量。

数据类型:|

名称-值对的观点

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:“CategoricalPredictors”,[1 - 2],“详细”,2将前两个预测变量指定为分类变量和指定冗长水平2。

分类预测列表,指定为逗号分隔组成的“CategoricalPredictors”在这个表的一个值。

价值 描述
向量的正整数 中的每个条目对应列向量索引值的预测数据(X资源描述包含一个分类变量)。
逻辑向量 一个真正的条目意味着预测数据的对应的列(X资源描述)是一个分类变量。
字符矩阵 矩阵的每一行是一个预测变量的名字。名称必须匹配的名称资源描述。垫的名字与额外的空格字符矩阵的每一行有相同的长度。
字符串数组或单元阵列的特征向量 数组中的每个元素是一个预测变量的名字。名称必须匹配的名称资源描述
“所有” 所有预测都直言。

默认情况下,如果预测数据表(资源描述),fscmrmr假设变量是直言如果它是一个逻辑向量,无序分类向量,字符数组,字符串数组或单元阵列特征向量。如果预测数据是一个矩阵(X),fscmrmr假设所有的预测都是连续的。识别任何其他预测分类预测,通过使用指定它们“CategoricalPredictors”名称-值对的论点。

如果fscmrmr使用变量的子集资源描述预测,那么函数索引预测仅使用子集。的“CategoricalPredictors”值不计数函数的预测没有排名。

例子:“CategoricalPredictors”、“所有”

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

类的名称用于排名,指定为逗号分隔组成的“类名”和分类、字符或字符串数组,一个逻辑或数值向量,或单元阵列的特征向量。一会必须具有相同的数据类型Y或响应变量资源描述

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

使用“类名”:

  • 指定的顺序之前维对应于类订单。

  • 选择一个子集类排名。例如,假设所有不同的类名称的集合Y{' a ', ' b ', ' c '}。从类等级预测使用的观察“一个”“c”只是,指定“类名”,{' a ', ' c '}

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

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

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

先验概率为每个类,指定为逗号分隔组成的“之前”和下列之一:

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

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

    • “统一”集所有类概率相等。

  • 向量(一个标量值为每个类)。指定的类订单对应的元素“之前”,还指定一会名称-值对的论点。

  • 结构年代两个字段。

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

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

如果你设置的值“重量”“之前”,fscmrmr规范化的权重在每个类的值添加到相应的类的先验概率。

例子:“前”、“制服”

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

指标在预测是否使用或丢弃缺失值,指定为逗号分隔组成的“UseMissing”,要么真正的使用或抛弃缺失值的预测排名。

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

如果您指定“UseMissing”,真的,然后fscmrmr使用缺失值排名。分类变量,fscmrmr把缺失的值作为一个额外的类别。连续变量,fscmrmr的地方装箱的值在一个单独的本。

如果您指定“UseMissing”,假的,然后fscmrmr不使用缺失值排名。因为fscmrmr计算互信息为每一对变量,函数不丢弃整个行值时行部分失踪。fscmrmr使用对所有值不包括缺失值。

例子:“UseMissing”,真的

数据类型:逻辑

冗长的层面上,指定为逗号分隔组成的“详细”和一个非负整数。的价值详细的控制软件的诊断信息显示在命令窗口。

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

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

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

例子:“详细”,1

数据类型:|

观察体重、指定为逗号分隔组成的“重量”和一个向量的标量值或变量的名称资源描述。每一行的观测函数权重X资源描述与相应的价值权重。的大小权重必须等于中的行数X资源描述

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

fscmrmr规范化的权重在每个类的值添加到相应的类的先验概率。

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

输出参数

全部折叠

指数的预测X资源描述下令预测的重要性,作为一个1 -返回r数字矢量,r是排名的数量预测。

如果fscmrmr使用变量的子集资源描述预测,那么函数索引预测仅使用子集。例如,假设资源描述包括10列和你指定的最后5列资源描述通过使用作为预测变量公式。如果idx (3)5,然后第三个最重要的因素是第十列资源描述,这是第五个预测的子集。

预测成绩,作为1 -返回r数字矢量,r是排名的数量预测。

大的得分值表明,相应的预测是很重要的。同时,功能重要性评分下降代表了特征选择的信心。例如,如果选择一个功能的软件很有信心x,然后下一个最重要的得分值特性比的得分值小得多x

  • 如果你使用X指定预测或使用的所有变量资源描述作为预测因子,然后中的值分数同一订单的预测吗X资源描述

  • 如果您指定变量的子集资源描述作为预测因子,然后中的值分数子集的顺序相同。

例如,假设资源描述包括10列和你指定的最后5列资源描述通过使用作为预测变量公式。然后,分数(3)包含8列的得分值资源描述第三因素子集。

更多关于

全部折叠

互信息

两个变量之间的互信息措施可以减少多少一个变量的不确定性通过了解其他变量。

的互信息离散随机变量XZ被定义为

( X , Z ) = , j P ( X = x , Z = z j ) 日志 P ( X = x , Z = z j ) P ( X = x ) P ( Z = z j )

如果XZ是独立的,那么= 0。如果XZ随机变量是相同的吗=的熵X

fscmrmr函数使用这个定义计算互信息值分类(离散)和连续变量。fscmrmr可获得一个连续变量的数量到256箱或独特的变量中的值是否小于256。函数找到最优二元垃圾箱对于每一对变量使用自适应算法[2]

提示

  • 如果指定的响应变量和预测变量通过使用输入参数公式,那么公式中的变量名必须是变量名资源描述(Tbl.Properties.VariableNames)和有效的MATLAB标识符。

    您可以验证变量名资源描述通过使用isvarname函数。以下代码返回逻辑1(真正的),每个变量都有一个有效的变量名。

    cellfun (@isvarname Tbl.Properties.VariableNames)
    如果变量名资源描述是无效的,那么把他们通过使用matlab.lang.makeValidName函数。
    Tbl.Properties.VariableNames=matlab.lang.makeValidName(Tbl.Properties.VariableNames);

算法

全部折叠

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

MRMR算法[1]找到一组最优的特性是相互和最大限度地不同,可以表示响应变量有效。特性集的算法最小化冗余和最大化的相关性响应变量的特性集。算法量化使用互信息的冗余和相关性variables-pairwise互信息的特征和互信息的特性和响应。您可以使用此算法分类问题。

MRMR算法的目标是找到一组最优年代最大化的功能V年代的相关性,年代对响应变量y,最大限度地减少W年代的冗余年代,在那里V年代W年代定义与互信息:

V 年代 = 1 | 年代 | x 年代 ( x , y ) ,

W 年代 = 1 | 年代 | 2 x , z 年代 ( x , z )

|的|特征的数量吗年代

寻找一组最优年代需要考虑所有2|Ω|组合,Ω是整个特性集,而是MRMR算法中特征通过远期计划,这需要吗O(|Ω|·|年代|)计算,利用互信息商(筛选)值。

进行筛选 x = V x W x ,

在哪里VxWx的相关性和冗余功能,分别为:

V x = ( x , y ) ,

W x = 1 | 年代 | z 年代 ( x , z )

fscmrmr函数中所有功能Ω并返回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. 选择最大的特征进行筛选值非零相关性和非零冗余年代c,并添加选中的特性集年代

    马克斯 x 年代 c 进行筛选 x = 马克斯 x 年代 c ( x , y ) 1 | 年代 | z 年代 ( x , z )

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

  6. 添加的特性与零相关年代以随机的顺序。

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

兼容性的考虑

全部展开

行为改变R2020a

引用

[1],C。,H. Peng. "Minimum redundancy feature selection from microarray gene expression data."生物信息学和计算生物学》杂志上。3卷,第二,2005年,页185 - 205。

[2]Darbellay, g。,即Vajda。“估计的自适应分区信息的观测空间”。IEEE信息理论。45卷,4号,1999年,页1315 - 1321。

介绍了R2019b