首先,这肯定是家庭作业(所以没有完整的代码样本请)也就是说。。。
我需要使用Matlab中的神经网络工具箱,测试监督算法旁边的无监督算法数据集是UCI Artificial Characters Database问题是,我在有人监督的算法上有过一个很好的教程,现在只能在无人监督的情况下学习了。
所以我知道如何使用selforgmap创建一个自组织地图,然后使用train(net, trainingSet)对其进行训练我不知道下一步该怎么办我知道它把我给它的数据聚类成(希望)10个聚类(每个字母一个)。
那么有两个问题:
然后如何标记集群(假设我有一个比较模式)?
当我这样做的时候,我是不是想把它变成一个有监督的学习问题?
如何在(另一个)测试集上创建一个混淆矩阵以与监督算法进行比较?
我想我遗漏了一些基于概念或行话的东西——我所有的搜索都是有监督的学习技巧一个正确的方向将是非常感谢。
我现有的代码如下:

P = load('-ascii', 'pattern');
T = load('-ascii', 'target');

% data needs to be translated
P = P';
T = T';

T = T(find(sum(T')), :);

mynet = selforgmap([10 10]);
mynet.trainparam.epochs = 5000;
mynet = train(mynet, P);


P = load('-ascii', 'testpattern');
T = load('-ascii', 'testtarget');

P = P';
T = T';
T = T(find(sum(T')), :);

Y = sim(mynet,P);
Z = compet(Y);

% this gives me a confusion matrix for supervised techniques:
C = T*Z'

最佳答案

由于不使用标记数据的任何部分,因此根据定义应用了无监督方法。
“然后如何标记群集(假定我有比较模式)
您可以尝试对标签集进行不同的扰动,并使比较模式上的平均误差(或精度)最小化使用集群,您可以用任何方式标记集群想象一下尝试不同的标签分配,直到最小化指定的性能指标。
“当我这样做的时候,我是不是想把这变成一个有监督的学习问题?”
这要看情况如果在聚类过程中显式地使用(已知)数据点,则这是半监督的如果不是,您只需使用标签信息来评估和“比较”监督方法它是一种监督形式,但不是基于训练集,而是基于最佳情况下的预期性能(即“代理”为集群指定正确的标签)。
“如何在(另一个)测试集上创建一个混淆矩阵,以便与监督算法进行比较?”
您需要一种方法将集群转换为带标签的类对于少量的聚类(例如C <= 5),您可以基本上创建C!矩阵,并保留最小化平均分类错误的矩阵然而,在您的情况下,使用C = 10,显然是不切实际的,而且开销很大!
作为替代方案,您可以使用以下方法标记集群(从而获得混淆矩阵):
半监督方法,其中簇可以先验地标记,或者由属于已知簇/类的数据引导通过播种过程。
对估计的聚类中心与地面真值标签之间的距离进行排序或查找这将为每个集群分配最接近的排名或最相似的标签。

10-06 14:55