【问题标题】:Neural network regression with skewed data带有倾斜数据的神经网络回归
【发布时间】:2019-05-13 08:43:30
【问题描述】:

我一直在尝试使用 Keras 构建机器学习模型,该模型根据预处理参数预测辐射剂量。我的数据集有大约 2200 个样本,其中 20% 用于验证和测试。

目标变量的问题在于它非常偏斜,因为大辐射剂量比小辐射剂量少得多。因此,我怀疑我的回归模型根本无法预测大值,而是预测平均值附近的所有内容,这从图中很明显。我试图对目标变量进行日志标准化以使其更正态分布,但它没有任何效果。

有什么建议可以解决这个问题吗?

Target variable

Regression predictions

【问题讨论】:

  • 您是否尝试过任何其他转换? docs.scipy.org/doc/scipy/reference/generated/…
  • 感谢您的提示。我也尝试过使用 boxcox-transform (lambda = 0.15),但效果或多或少与对数变换相同。所以不多。
  • 您可以尝试“sample_weights”,在fit 方法中为每个示例传递不同的重要性。 keras.io/models/model/#fit
  • 我曾想过使用单个样本权重,但不清楚应该使用什么样的权重。例如,与辐射剂量成正比或其他什么?
  • 将数据分组,如直方图,权重与每组中的样本数成反比。 (样本少的组将获得较大的权重,因此它们不会变得无关紧要)

标签: keras regression


【解决方案1】:

根据 10 个直方图箱计算单个样本权重对我来说很有帮助。请看下面的代码:

import pandas as pd
import numpy as np
from sklearn.utils.class_weight import compute_sample_weight

hist, bin_edges = np.histogram(training_targets, bins = 10)
classes = training_targets.apply(lambda x: pd.cut(x, bin_edges, labels = False, 
                                                  include_lowest = True)).values
sample_weights = compute_sample_weight('balanced', classes)

【讨论】:

    猜你喜欢
    • 2019-01-27
    • 2016-09-03
    • 2021-09-13
    • 1970-01-01
    • 2020-10-24
    • 2020-05-12
    • 2018-04-30
    • 2018-05-08
    • 1970-01-01
    相关资源
    最近更新 更多