我正在开始一个机器学习项目(为了好玩!),但我不知道从哪里开始……我是相当新的ML,所以任何提示都会受到赞赏。
我有一个相对较大的数据集,其中每个输入都是大约300个整数(主要是零)的列表。输出是20个is整数的列表。目标是预测给定随机输入的输出(很明显)。我不知道什么是最好的方法。我已经开始研究神经网络,这似乎是解决这类问题的好方法,但似乎有一系列不同的激活等等(不知道它的实际名称),所以我不知道该怎么做。
有什么线索要调查吗?
非常感谢!
发布于 2021-12-04 21:13:50
如果有几个输出列(目标),则模型的选择有限,因为大多数模型预测一个输出列。有关良好的概述,请参见滑雪博士。本质上,您处理的是多输出问题。
回归滑雪板模型的目的仅仅是分别预测每一项产出。考虑到先前的预测,RegressionChain尝试依次预测一个目标值。来自医生们:
多输出回归支持可以添加到任何具有MultiOutputRegressor的回归器中。这一策略包括每个目标拟合一个回归者。由于每个目标都是由精确的一个回归元表示的,所以可以通过检查其对应的回归器来获取关于目标的知识。由于MultiOutputRegressor适合于每个目标的一个回归器,它不能利用目标之间的相关性。回归链(参见RegressorChain)类似于ClassifierChain,它是将许多回归组合成一个能够利用目标间相关性的单一多目标模型的一种方法。
如果您想尝试神经网络,可以使用Keras的"functional“,它允许您定义多个输出(列)。找一个这里的最小例子。简而言之,您需要定义一些输入( X矩阵,也就是解释性变量),并且需要分别定义所有的输出。输入和输出可以输入到模型定义和模型fit语句中,如下所示。
# Input and model architecture
Input_1=Input(shape=(13, ))
x = Dense(1024, activation='relu', kernel_regularizer=regularizers.l2(0.05))(Input_1)
x = Dense(512, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)
x = Dense(256, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)
x = Dense(128, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)
x = Dense(8, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)
# Outputs
out1 = Dense(1)(x)
out2 = Dense(1)(x)
# Compile/fit the model
model = Model(inputs=Input_1, outputs=[out1,out2])
model.compile(optimizer = "rmsprop", loss = 'mse')
# Add actual data here in the fit statement
model.fit(train_data, [train_targets,train_targets2], epochs=500, batch_size=4, verbose=0, validation_split=0.2)https://datascience.stackexchange.com/questions/104775
复制相似问题