【问题标题】:Tensorflow Beginner, Basic Question On Linear ModelTensorflow 初学者,关于线性模型的基本问题
【发布时间】:2020-11-19 21:55:32
【问题描述】:

https://www.tensorflow.org/tutorials/estimator/linear

我正在按照 Tensorflow 文档来实现线性分类器,但我喜欢使用自己的数据而不是教程集。我只是有几个一般性问题。

我的数据集如下。这不是时间序列。

row[0] - 浮点数(更改为二进制,0 = 负数,1 = 正数)估计值

row[1] - 字符串(分类,改为词汇表,整数 1,2,3,4,5,6,7,8,9)

row[2-19] - 浮点数(正负)

row[20-60] - 整数(百分位数,整数 10,20,30,40,50,60,70,80,90)

row[61-95] - 整数(二进制 1, 0)

我首先使用 50k(45k 训练)行数据和 num_epochs=100,batch_size=256。

{'accuracy': 0.8912, 'accuracy_baseline': 0.8932, 'auc': 0.7101819, 'auc_precision_recall': 0.2830853, 'average_loss': 0.30982444, 'label/mean': 0.1068, 'loss': 0.31013006, 'precision': 0.4537037, 'prediction/mean': 0.11840516, 'recall': 0.0917603, 'global_step': 17600}

  1. 我要估计的列是否需要是此模型的二进制列?

  2. 像这样混合数据类型是个坏主意吗?是否有必要使用 preprocessing.Normalization ? 之类的东西来规范化数据

  3. 如果我想使用更多数据,是否应该更改 epochs/batch?

  4. 准确率似乎很高,但损失也似乎很高,这是为什么呢?

  5. 还有其他建议吗?

感谢您的任何帮助或建议。

【问题讨论】:

  • 尽量少问一些问题,并改写它们以提出客观的问题,而不是偏离主题的主观问题。

标签: python tensorflow


【解决方案1】:

这里是您问题的答案。

  1. 默认情况下,tf.estimator.LinearClassifiern_classes=2 视为二元分类,但您也可以拥有 2 个以上的类。
  2. 对于线性分类,与对相同数据进行归一化后的非线性分类器精度变化相比,归一化数据不会对精度产生太大影响。
  3. 你可以观察accuracy和loss的变化,如果5-10个epoch左右变化不大,你可以只限制那里的epoch数。同样,您可以通过更改批量大小来重复相同的步骤。
  4. 准确度和损失不相互依赖,请考虑将 0 和 1 分类的案例示例。具有 2 个类别的模型始终预测真实类别的 0.51 与预测 0.99 的模型具有相同的准确度。如果您的模型具有良好的准确性和高损失,那么最好的模型将具有较高的准确性和较少的损失,这意味着您的模型在很少的数据上出现了巨大的错误。

尝试根据多个观察结果调整您的模型超参数,并通过一些预处理提供质量数据始终是达到高精度和减少损失的最佳方法,并且始终拥有一些额外的数据会很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-04
    • 2011-01-12
    • 2018-01-08
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多