我目前正在从事eCommerce产品名称分类的工作,因此我在产品数据中有类别和子类别。我注意到使用子类别作为标签带来的结果(84% acc)比类别(94% acc)更糟糕。但是子类别作为标签更精确,对于整个任务来说,什么是重要的。然后,我有了一个想法,先做分类,然后在结果的基础上,继续预测范畴内的子类别。
这里的问题是,我不知道如何处理这个问题/定义网络架构。对神经网络有什么提示,该如何处理?
目前,我定义了这样的网络:
model = Sequential()
model.add(Dense(400, input_shape=(FEATURE_NUM,)))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))发布于 2021-01-25 20:56:00
对于这个问题,您需要开发三个模型:
Model 1- for two main categories
Model 2- for sub-category A
Model 3- For sub-category B因此,当您想要预测未知数据的结果时,首先要使用Model 1来查找主类别。根据预测,通过使用if- you语句,您决定使用Model 2或Model 3执行另一个预测。
因此,模型1是一个二进制分类任务,而模型2和3是多类分类任务.你的网络可能是这样的:
模式1:
model1 = Sequential()
model1.add(Dense(60, input_dim=X.shape[1], activation='relu'))
...
model1.add(Dense(1, activation='sigmoid'))
model1.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])模式2和3:
model2 = Sequential()
model2.add(Dense(8, input_dim=X.shape[1], activation='relu'))
...
model2.add(Dense(n_subcats, activation='softmax'))
model2.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])只是不要忘记对每个模型的主类别和子类别使用正确的y(标签)。
发布于 2021-04-13 12:54:42
你试图解决的是一个分级分类的问题,而不是我们非常熟悉的平面分类。
已经做了一些工作来解决这些问题,并且已经证明,对于单个任务(例如,在您的案例类别和子类别中),单个统一模型的性能优于多个平面分类器的分层体系结构。然而,对于您正在处理的问题,我没有任何参考可供分享,但是,这里有一个链接到一篇关于产品图像一种用于服装形象分类的结构化输出统一模型的分层分类的论文。
https://datascience.stackexchange.com/questions/46192
复制相似问题