# relieff


使用 ReliefF 算法对特征重要性进行排序

函数库: TyMachineLearning

# 语法

idx, weights = relieff(X, y)
idx, weights = relieff(X, y, Name=Value)

# 说明

idx, weights = relieff(X, y) 该函数使用ReliefF算法和 k 近邻来对预测变量的重要性进行排序。输入矩阵 X 包含预测变量,向量 y 包含响应向量。该函数返回 idx,其中包含预测变量重要性的索引排序,以及weights,其中包含预测变量的权重(重要性)。



# 示例

确定预测变量的重要性

使用 relieff 确定鸢尾花数据集中预测变量的重要性。

加载示例数据集 iris dataset:

using DataFrames
using TyMachineLearning
using CSV
iris_X, iris_y = get_irsdata()

使用 10 个 k 近邻计算特征重要性:

index, weights = relieff(iris_X, iris_y, k=10)

查看计算结果:

print("index = $(index)\n weights = $(weights)")
index = [3, 4, 1, 2]
weights = [0.14881517676612965, 0.11137491575271126, 0.5145096807793637, 0.2253002267017953]

index 显示了特征的排名,第 3 个特征的重要性最高,第 2 个特征的重要性最低;weights 显示了每一个特征的重要性,第一个特征的重要性约为 0.15,第 4 个特征的重要性约为 0.23.

# 输入参数

X - 预测数据
数值型 Matrix

预测数据,指定为数值型 Matrix。X 的每一行对应一个观测值,每一列对应一个预测变量。

数据类型: Numerical Matrix

y - 响应值
数值型 Vector

响应值,指定为数值型 Vector,每一行对应 X 中的每一个观测的响应值。

数据类型: Numerical Vector

# 名称-值对组参数

指定可选的、以逗号分隔的 Key=Value 对组参数。Key 为参数名称,Value 为对应的值。您可采用任意顺序指定多个名称-值对组参数,如 Key1=Value1,...,KeyN=ValueN 所示。

示例:

k - 最近邻个数
5 (默认) | 数值

算法过程中,对于每一个观测值进行最近邻选取时的最近邻个数。

数据类型: Int64

updates - 迭代次数
size(y) (默认) | 数值

进行 relieff 算法的迭代次数,默认等于所有观测值的数量。

数据类型: Int64

# 输出参数

idx - 预测变量的重要性序列
数值型 Vector

X 中的预测变量的索引所构成的数组,其中按照预测变量的权重进行降序排序。如果 idx[3] 为 5,则表示第 3 重要预测变量为 X 中第 5 列对应的预测变量。

weights - 预测变量的权重
数值型 Vector

预测变量的权重,即预测变量的重要性。weights 中权重的顺序与 X 中的预测变量一一对应。