Hot*_*ips 7 matlab machine-learning neural-network unsupervised-learning
首先,这肯定是家庭作业(所以请不要提供完整的代码示例).那说......
我需要使用Matlab中的神经网络工具箱测试监督算法旁边的无监督算法.数据集是UCI人工角色数据库.问题是,我有一个关于监督算法的好教程,并且在没有监督的情况下被抛弃了.
所以我知道如何使用创建自组织地图 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'
Run Code Online (Sandbox Code Playgroud)
由于您未使用标记数据的任何部分,因此您根据定义应用了无监督方法.
"然后,我如何标记集群(假设我有比较模式)?"
您可以尝试不同的标签集扰动,并保持标准集最小化比较模式的平均误差(或准确度).通过群集,您可以以您喜欢的任何方式标记群集.您可以将其视为尝试不同的标签分配,直到最小化指定的性能指标.
"当我这样做时,我是否想把它变成一个有监督的学习问题?"
这取决于.如果在聚类过程中明确使用(已知)数据点,则这是半监督的.如果没有,您只需使用标签信息来评估并与监督方法进行"比较".它是一种监督形式,但不是基于训练集,而是基于最佳情况预期性能(即"代理"指定对集群的正确标签).
"如何在(另一个)测试集上创建混淆矩阵以与监督算法进行比较?"
您需要一种方法将群集转换为带标签的类.对于少量的聚类(例如C <= 5),你可以基本上创建C!矩阵,并保持最小化你的平均分类错误.但在你的情况下,C = 10,这显然是不切实际的和严重的开销!
作为替代方案,您可以使用以下方式标记聚类(从而获得混淆矩阵):