具有 class 不平衡和 class 重叠的多 class 数据集的散点图

scatter plot for a multiclass dataset with class imbalance and class overlapping

我正在使用 Weka 开发一个 classifier 来检测语义关系。假设我有一个 multiclass 数据集。数据集首先包含 4 个数值特征(可能超过 4 个)和一个 class 属性,其中有效的 class 属性值为 "HYPERNYM"、"SYNONYM" 或 "NO",即三个 classes。因此,实例示例可以是:

   feat1   feat2   feat3   feat4   class
    ....
    0.32    0.45    0.15      5       NO
    0.26    0.48    0.93     20       HYPER
    0.65    0.32    0.43     13       NO
    0.43    0.19    0.89     45       SYN
    ...

这是一个典型的class化问题。但是,我们必须考虑到数据集是由 class imbalance problem 造成的(这是机器学习中的一个问题,其中一个 class 数据(正)的总数远远少于另一个 class 数据(负))和 class 重叠(不同 class 的示例具有非常相似的特征)。

问题是:How can I represent each instance in a graph 2D, in a way that I can visualize the degree of overlapping between classes?

我找到了a picture which illustrates a possible example of graph,就像散点图一样。但是,我不知道如何绘制它。

有没有一种简单的方法可以使图形相似,但在 R 中或使用 Weka?

您可以使用 Multidimensional Scaling (MDS) 首先降低数据的维度,然后绘制它。此方法试图在投影到较低维度时保持点之间的距离。

这是虹膜数据集的 R 示例

data <- iris
colors <- as.integer(as.factor(data$Species))
d <- dist(data[,1:4])
fit <- cmdscale(d,k=2)# k is the resulting dimension
x <- fit[,1]
y <- fit[,2]
plot(x, y, xlab="Coordinate 1", ylab="Coordinate 2", main="MDS", pch=19, col=colors)

或者您也可以将其缩小为 3 维并使用 scatterplot3d 库绘制它。

fit <- cmdscale(d,k=3)# k is the resulting dimension
x <- fit[,1]
y <- fit[,2]
z <- fit[,3]
scatterplot3d(x,y,z, color = colors, pch = 19)

关于class不平衡的问题,不知道你想用散点图怎么表示。也许通过增加少数 classes.

点的大小