神经网络:如何准备真实世界的数据来检测低概率事件?

数据挖掘 机器学习 神经网络 数据清理 预报
2021-09-22 15:59:19

我有一个真实世界的信贷借款人数据集(50,000 条记录)。该集合包含已婚、单身、离婚等类别以及收入、年龄等连续数据。部分记录不完整或包含异常值。因变量为默认/良好 (0,1)。我们正在尝试训练一个神经网络来根据训练数据预测默认值。我有使用神经网络的经验,并将它们用于样本数据并取得了很好的结果,但是,我从来不需要对嘈杂的现实世界数据进行归一化。

关于以下方面我应该记住的任何想法: - 如何标准化类别。我可以分配一个索引号吗?我应该尝试对它们进行分层吗?- 如何处理丢失的数据。分配 0 ? - 如何处理默认值仅占数据集约 5% 的事实。什么传递函数对预测这些低概率有用。- 基本上任何其他现实世界的数据建议都非常感谢。

提前致谢!

1个回答

你在这里提出了一些很好的问题。我将尽我所能依次覆盖它们中的每一个。这不是一个详尽的治疗,但希望它有助于...

1.如何规范分类。

首先,评估您的分类变量是否可以被视为零方差(例如,所有记录仅拥​​有一个类别)或接近零方差(绝大多数记录属于极少数类别)。创建一个基本频率分布来识别这一点。

虽然在神经上下文本身中并不重要,但考虑从模型中过滤低方差变量是一个好主意。请小心,因为消除接近零的方差变量可能会让您将婴儿与洗澡水一起扔掉。

您之前使用过神经网络,因此您知道需要将类别转换为数值。一个很好的问题是给定的分类值是否本质上是有序的(例如,在 1 到 5 的李克特量表上)以及您是否想要保持有序性。这会将您推向一个领域,例如 Pinto da Costa 和 Cardoso 所描述的领域 ( https://www.researchgate.net/publication/221112186_Classification_of_Ordinal_Data_Using_Neural_Networks )。

2.如何处理缺失数据。

假设您正在谈论缺失的连续值,您将希望根据整个属性中存在的值共同估算这些数值。这里有许多方法可以使用,但要记住的重要一点是分散。从基本意义上说,如果您的属性因异常值而出现偏差,您将需要避开基于均值的计算并采用基于中值的方法。

3. 如何处理“默认值”约占数据的 5% 的事实。

这不是一个直接的问题,因为您有 2500 个表示“默认”的示例(在 50,000 个数据集中)。这里一个理智的方法是确保您使用 K 折交叉验证方案(例如 10 折),以确保您真正随机化训练与测试。这将有助于防止过度拟合。同样,这是相当高水平的指导,但它是谨慎的。

额外积分: 我还没有涉及其他标准策略,例如连续属性的标准化,但您可能希望加快速度以更好地概括您的模型(同时更深入地了解数据中的动态)。这可能会指向您尝试其他算法等。