我是数据科学模型选择的新手,希望您能为我当前的问题提供模型选择方面的帮助。
我正在尝试根据带有数字标签的分类特征来预测事件列表。例如:
x1 x2 x3 x4 x5 y1
1 1 3 4 5 Injury
2 2 2 1 3 Flood
3 1 2 3 2 Injury
3 2 1 1 1 Fire
1 1 1 1 1 Protest
我希望根据分类特征来预测前3个事件。我假设它涉及机器学习中的概率方法,您建议我使用哪种算法/ ML /深度学习方法?
预期输出如下:
1. Injury
2. Fire
3. Flood
答案 0 :(得分:1)
我假设您有固定大小的输入和五个类别变量。
第一个建议尝试使用嵌入矢量而不是简单的整数进行分类值编码。最简单的方法是使用嵌入层,然后让网络为you创建嵌入。
第二个建议,为此目的,我觉得可以使用多层感知器或一维卷积层(可能将两者结合)。哲学上应该是,您应用了输入要素,这些要素将在密集或一维CNNN层之后进行处理,输出层将是密集层。如果这些只是可能的诊断
伤害
洪水
着火
抗议
比您的输出将有4个单位。如果需要列表,则可以尝试使用阈值方法,因此,如果将通过阈值传递的单元激活视为可能的诊断列表的一部分。
关于技术方面,您不会提及您的背景。因此,我建议使用一些标准的ML库tensorflow,pytorch ...相对易于设置和执行实验。
修改
网络可能看起来像:
model = Sequential()
model.add(Dense(units, activation="relu", input_shape=appropriate_shape))
model.add(Dense(output_units, activation="softmax"))
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=['acc']))
如果以这种方式构造网络(请参见输出层的softmax并将categorical_crossentropy视为损失),网络自然会产生概率作为输出。训练后,如果您将模型用作:
results = model.predict(input_data)
结果将是概率列表的列表(每个输入样本一个列表)。如果您计算一个这样的列表的总和,则会得到1.。