Tensorflow初学者,线性模型的基本问题

时间:2020-10-24 18:40:19

标签: python tensorflow

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

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

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

row [0]-浮点型(已更改为二进制,0 =负,1 =正)要估算的值

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

行[2-19]-浮动(正负)

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

行[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. 如果我想使用更多数据,是否应该更改时代/批次?

  4. 精度似乎很高,但损耗也很高,为什么?

  5. 还有其他建议吗?

感谢您的帮助或建议。

1 个答案:

答案 0 :(得分:0)

这是您问题的答案。

  1. 默认情况下,tf.estimator.LinearClassifier被认为是n_classes=2的二进制分类,但是您也可以拥有两个以上的类。
  2. 对于线性分类,与对相同数据进行归一化之后的非线性分类器精度变化相比,归一化数据对准确性影响不大。
  3. 您可以观察到准确性和损失的变化,如果在大约5-10个纪元内变化不大,则只能限制该纪元的数量。同样,您可以通过更改批次大小来重复同一步骤。
  4. 准确性和损失并不相互依赖,请考虑您的案例的一个例子,将0和1进行分类。一个具有2个类别的模型始终为真实类别预测0.51,其准确性与预测0.99的准确性相同。如果您的模型具有较高的准确性和较高的损失,那么最好的模型将具有较高的准确性和较少的损失,这意味着您的模型在很少的数据上会犯巨大的错误。

尝试基于多个观察值来调整模型的超参数,并通过一些预处理来提供质量数据,这始终是达到高精度和减少损失的最佳方法,而拥有一些额外的数据将永远是最好的。