我正在构建一个包含 6 列和 6700 行的数据集。该数据是从不同研究中的各种蒙特卡罗模拟中提取的光子剂量转换系数获得的。数据中的列包括能量、器官名称、器官质量、器官密度、AP 剂量、PA 剂量和侧向剂量。能量行代表从 1keV 到 20 MeV 的每个能量仓的计算剂量,分为 20 个仓。每个箱重复器官名称、器官质量和器官密度。 如果我们排除器官名称,则数据可用于数值拟合。然而,如果我们使用 one-hot 编码器对器官名称进行编码,则可以更有效地使用数据,并且交叉验证显示与仅数字数据相比更好的结果。不同器官的剂量取自不同的模型,一些模型比其他模型具有更多的器官。使用one-hot编码器后,组合器官总数为32个。 当尝试从新模型预测器官时会出现问题,因为模型显示输入文件和目标文件之间存在对称错误。我的问题是,我们如何解决这个问题? 如果假设我使用一个包含 1000 个容器的模型来表示 20 个器官,并预测另一个模型包含 1000 个容器和 20 个器官,则该模型与不同的器官质量和密度完全相同
如何使用分类整体数据(来自 32 个器官的 6700 个容器)要预测的器官(32 个器官有 1000 个箱)?
遇到的问题是,的模型学习了训练数据中特定器官和它们对应剂量之间的虚假相关性,而不是学习器官特性和剂量之间的真实关系。当尝试用不同的器官集预测剂量时,这就会成为一个问题,因为模型没有学习到如何将这些器官的特性推广到它们的剂量。
以下是一些可以解决此问题的可能方法:
1. 基于物理的特征工程:
-
不要依赖 one-hot 编码,而是专注于可以从器官名称派生的具有物理意义的特征。这些特征可能包括:
- 器官类型: 将器官分为几类,如肺、骨骼、软组织等。可以使用 one-hot 编码或其他合适的编码方案来表示这些类别。
- 元素组成: 使用来自文献或数据库的信息,包含有关每个器官中氢、碳、氮、氧等元素比例的数据。
- 密度范围: 不要使用单个密度值,而是为每个器官提供一个密度范围,以更好地反映实际变化。
通过包含这些基于物理的特征,可以帮助的模型学习器官特性与其剂量响应之间的更普遍和有意义的关系。
2. 数据增强:
-
由于的训练数据有限,可以通过创建现有数据的修改版本来人为地增加其大小。这可以通过以下方式实现:
- 添加噪声: 向输入特征(能量、质量、密度)添加少量随机噪声,以模拟实际数据中的变化。
- 混合器官: 创建模拟不同器官组合的新数据点。例如,可以组合代表两个不同器官的两个数据点的特征,并根据其各自的贡献计算相应的剂量。
数据增强有助于的模型更好地概括并防止过度拟合训练数据中的特定器官组合。
3. 模型架构:
-
考虑使用更适合处理器官之间关系的模型架构。一些选项包括:
- 图神经网络(GNN): GNN 擅长处理图形结构数据,并且可以学习器官之间复杂关系的表示。
- 基于注意力的模型: 注意力机制可以帮助模型关注输入特征中最相关的部分,例如特定器官的特性,从而提高预测的准确性。
4. 训练策略:
-
在训练过程中,请务必使用适当的正则化技术来防止过度拟合。一些常见的正则化技术包括:
- 权重衰减: 通过向损失函数添加惩罚项来防止模型的权重变得过大。
- Dropout: 在训练过程中随机丢弃网络中的一些神经元,这有助于防止模型过度依赖任何单个神经元。
5. 评估指标:
-
除交叉验证外,还要使用其他指标来评估模型在不同器官组合上的性能。一些选项包括:
- 按器官类型分组的性能: 分析模型在预测不同器官类型(例如肺、骨骼、软组织)的剂量方面的表现。
- 新器官的性能: 如果可能,请保留一些数据以进行测试,这些数据包含训练期间模型未见过的器官。这将为提供模型泛化能力的更现实的评估。
通过实施这些建议,可以提高模型学习器官特性与其剂量响应之间真实关系的能力,从而产生更准确和可靠的预测,即使对于新的或未见过的器官组合也是如此。
标签:python,database,machine-learning,xgboost,one-hot-encoding From: 78776322