0

我有一个回归数据集,其中大约 95% 的目标变量为零(另外 5% 在 1 到 30 之间),我正在尝试设计一个 Tensorflow 模型来对该数据进行建模。我正在考虑实现一个结合了分类器和回归器的模型(检查分类器子模型的输出,如果它小于阈值,则将其传递给回归子模型)。我有直觉认为这应该使用功能 API 构建但我找不到有用的资源。有任何想法吗?

这是生成我用来复制问题的数据的代码:

n = 10000
zero_percentage = 0.95
zeros = np.zeros(round(n * zero_percentage))
non_zeros = np.random.randint(1,30,size=round(n * (1- zero_percentage)))
y = np.concatenate((zeros,non_zeros))
np.random.shuffle(y)
a = 50
b = 10
x =  np.array([np.random.randint(31,60) if element == 0 else  (element - b) / a for element in y])
y_classification = np.array([0 if element == 0 else 1 for element in y])

注意:我尝试了概率模型(泊松回归和离散逻辑混合分布回归),它们提供了很好的结果,但训练不稳定(损失经常发散)。

4

1 回答 1

0

与其尝试找到一些启发式方法来平衡零值和其他值之间的训练,不如尝试一些可以更好地处理不平衡训练集的输入预处理方法(通常通过在运行模型之前映射到另一个空间,然后执行与结果相反);例如,嵌入层。或者,将值标准化到一个小范围(如 [-1, 1])并在评估数据模型之前应用激活函数。

于 2021-05-31T21:48:00.657 回答