如何使用不同格式的数据进行培训和测试?
目前我正在处理分类问题,数据格式因培训和测试而异。所以,它无法正确分类。但我的用例是我必须以这种方式使用。以下是我的格式。
我现在有以下培训结构:
--------------------------------------------------------------
| Attribute_Names | Attribute_Values | Category |
--------------------------------------------------------------
| Brand | Samsung, Nokia, OnePlus | Mobile |
| RAM, Memory | 2 GB, 4 GB, 3 GB, 6GB | Mobile |
| Color,Colour | Black, Golden, White | Mobile |
--------------------------------------------------------------
| Fabric, Material | Cloth, Synthetic, Silk | Ethnic Wear |
| Pattern, Design | Digital, floral print | Ethnic Wear |
--------------------------------------------------------------
测试:'三星Galaxy On Nxt 3 GB RAM 16 GB ROM可扩展至256 GB 5.5英寸全高清显示器'
我也在数据科学小组中解释了这个问题: product-classification-in-e-commerce-using-attribute-keywords
非常感谢任何帮助。
答案 0 :(得分:1)
作为一个非常普遍的原则,培训的格式&测试数据必须相同。对此没有简单的解决方法。当然可能存在这样的情况:所述数据集的属性中包含的信息基本相同,只是格式不同;这种情况通过适当的数据预处理来处理。
如果您的数据收集过程在某个时间点发生变化,收集不同的属性,则有一些选择可用,高度依赖于特定情况:如果您碰巧收集更多属性你已经训练了你的初始分类器,你可以选择简单地忽略它们,但可能会丢掉有用的信息。但是如果您碰巧收集 less 属性,除了可能将它们视为预测管道中的缺失值之外,您可以做的事情并不多(前提是您的分类器确实可以处理此类缺失值而不会显着减少在表现);另一种选择是通过从初始训练集中删除新数据收集过程中未收集的属性来重新训练分类器。
机器学习并不神奇;相反,它受制于非常实际的工程约束,培训和测试数据的兼容性是最基本的一个。如果您四处寻找已部署ML模型的实际案例,您会发现几乎所有地方都会出现可能定期重新培训部署模型的问题......
答案 1 :(得分:0)
因此,基于您的描述,我认为您所拥有的是一堆数据,其中一些是标记的,而大部分都没有,这使您进入半监督的设置。
现在,测试不同于您训练的数据绝对是不行的。您应该做的是混淆数据,以便在训练和测试集中分配您的标签,也就是说,如果您想要使用受监督的方法。鉴于您这样做,您可以使用一些技术进行标签传播,例如,聚类相似的数据并在该组内分配最频繁的标签,这可以像简单的k-means聚类一样简单,也可以像创建自己的图形结构和实现自定义算法一样困难。因此,假设您现在已经完全标记了数据,您可以在真实标签和指定标签的混合物上训练您的模型,并以相同的方式对其进行测试。 这是获得可靠性能评估的唯一方法。您显然也可以尝试仅对完全标记的数据进行训练,并对实际标签和指定标签的混合进行评估,但我认为这会导致过度拟合。
另一种相关的方法是创建某种单词向量(例如google word2vec),然后使用标记数据作为集群(每个类别一个)将新的未标记数据分配给最相似的集群(有很多变体和方法)这样做。)
解决这样一个问题的方法有很多,而不是教科书中的某些标准算法,而是你必须自己实现的东西,或者至少你需要做一些严肃的预处理才能使你的数据适合标准算法。
我希望这有点帮助。