我正在使用h2o autoencoder异常来查找我的模型中的异常数据,但问题是autoencoder只接受数字预测器。我的要求是我找到了基于CardNumber或商号的异常值。和Cardnumber是12位数(342178901244)并且大部分是独一无二的所以它的名义数据和我们不能做热编码以及它会创建许多新的字段,就像唯一的卡号一样多。所以请建议我们可以包含分类数据的任何方式,我们仍然可以运行autoencoder
model=H2OAutoEncoderEstimator(activation="Tanh",
hidden=[70],
ignore_const_cols=False,
epochs=40)
model.train(x=predictors,training_frame=train.hex)
#Get anomalous values
test_rec_error=model.anomaly(test.hex,per_feature=True)
train_rec_error=model.anomaly(train.hex,per_feature=True)
recon_error_df['outlier'] = np.where(recon_error_df['Reconstruction.MSE'] > top_whisker, 'outlier', 'no_outlier')
您不能在预测器(自动编码器或其他任何东西)中放置几乎唯一的分类功能,并期望它能够正常工作。
相反,您需要从中提取有意义的功能,这取决于您要解决的问题。例如,如果是信用卡号,您可以添加编码卡电路的功能(VISA,Mastercard,American Express,...)。 限制只是你的想象力和领域的知识。