Answers.Body: <p>Assuming that you have access to the training data set, you could use an <a href="https://medium.com/pytorch/implementing-an-autoencoder-in-pytorch-19baa22647d1" rel="nofollow noreferrer">autoencoder network</a> to predict what features f4, f5, f6 'could be' for the test data set. The way to do this is to train the autoencoder on the training data set with features f1, f2, f3 as inputs, and then use f1,f2,f3,f4,f5,f6 as the output of the network. The autoencoder then effectively learns to map any input samples with (f1,f2,f3) to (f1,f2,f3,f4,f5,f6). By passing your test data through the autoencoder, you can then use the output and pass it to your model.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-07-28T01:00:19.150Z
Answers.Text: Thank you so much! I will attempt to learn this network model
Answers.UserDisplayName: Dae-Young Park
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-07-27T10:13:51.037Z
Answers.LastActivityDate: 2020-07-27T10:13:51.037Z
Answers.UserDisplayName: rich
Answers.Body: <p>I assume you trained your model on <code>(f1, f2, f3, f4, f5, f6)</code> and in your test data you sometimes have <code>(f1, f2, f3)</code> and sometimes have for example <code>(f1, f2, f3, f4, f5, f6)</code>, right? Because if your test data always have <code>(f1, f2, f3)</code>, then isn't it better to just train a model on available features?</p>
  <p>So if my assumption is correct what I would do is to manipulate the training set a bit, keeping some training set with <code>(f1, f2, f3, f4, f5, f6)</code> and some others with <code>(f1, f2, f3)</code> with replacement of real values in their <code>(f4, f5, f6)</code> by e.g. mean of respective feature. So all training set still have <code>(f1, f2, f3, f4, f5, f6)</code> but some of them have manipulated <code>(f4, f5, f6)</code>. Then finally when testing, do the same manipulation to those test data that have a smaller number of features.</p>
  <p>I think like this your model learn how to predict base on <code>(f1, f2, f3)</code> when other features are not available. but at the same time, take advantage of all features if they are all available.</p>
  <p>It's probably not the best approach but it worth to try.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-07-28T01:12:55.520Z
Answers.Text: I think your explanation means 'imputation' for missing value
Answers.UserDisplayName: Dae-Young Park
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-07-27T04:00:26.930Z
Answers.LastActivityDate: 2020-07-27T04:00:26.930Z
Answers.UserDisplayName: pedrum
Body: <p>Suppose I have a model that was trained with a dataset that contains the features <code>(f1, f2, f3, f4, f5, f6)</code>. However, my test dataset does not contain all features of the training dataset, but only <code>(f1, f2, f3)</code>. How can I predict the true label of the entries of this test dataset without all features?</p>
  
Tags: <machine-learning><deep-learning><training><datasets><testing>
Title: How can I predict the true label for data with incomplete features based on the trained model with data with more features?
UserDisplayName: Dae-Young Park
ThreadText: # How can I predict the true label for data with incomplete features based on the trained model with data with more features?
  
  (Asked by: username_0 on 2020-07-23)
  
  Suppose I have a model that was trained with a dataset that contains the features `(f1, f2, f3, f4, f5, f6)`. However, my test dataset does not contain all features of the training dataset, but only `(f1, f2, f3)`. How can I predict the true label of the entries of this test dataset without all features?
  
  **Tags:** machine-learning, deep-learning, training, datasets, testing
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2020-07-27. Score: 1
  
  Assuming that you have access to the training data set, you could use an [autoencoder network](https://medium.com/pytorch/implementing-an-autoencoder-in-pytorch-19baa22647d1) to predict what features f4, f5, f6 'could be' for the test data set. The way to do this is to train the autoencoder on the training data set with features f1, f2, f3 as inputs, and then use f1,f2,f3,f4,f5,f6 as the output of the network. The autoencoder then effectively learns to map any input samples with (f1,f2,f3) to (f1,f2,f3,f4,f5,f6). By passing your test data through the autoencoder, you can then use the output and pass it to your model.
  
  > **Comments:**
  > **username_0**: Thank you so much! I will attempt to learn this network model  
  
  ---
  
  ### Answer by username_2 on 2020-07-27. Score: 0
  
  I assume you trained your model on `(f1, f2, f3, f4, f5, f6)` and in your test data you sometimes have `(f1, f2, f3)` and sometimes have for example `(f1, f2, f3, f4, f5, f6)`, right? Because if your test data always have `(f1, f2, f3)`, then isn't it better to just train a model on available features?
  
  So if my assumption is correct what I would do is to manipulate the training set a bit, keeping some training set with `(f1, f2, f3, f4, f5, f6)` and some others with `(f1, f2, f3)` with replacement of real values in their `(f4, f5, f6)` by e.g. mean of respective feature. So all training set still have `(f1, f2, f3, f4, f5, f6)` but some of them have manipulated `(f4, f5, f6)`. Then finally when testing, do the same manipulation to those test data that have a smaller number of features.
  
  I think like this your model learn how to predict base on `(f1, f2, f3)` when other features are not available. but at the same time, take advantage of all features if they are all available.
  
  It's probably not the best approach but it worth to try.
  
  > **Comments:**
  > **username_0**: I think your explanation means 'imputation' for missing value  
  
  ---
  
  