Answers.Body: <p>Another specific way to do this if one uses a neural network for this. Use a dropout a layer in your network and instead of scaling the activations at test time, one can sample the activations (just like in training-time) and predict multiple times for a given input, then look at distribution of your outputs. Intuitively this would add "probabilistic, bayesian effect" to you neural network.
  I think this method was first proposed in <a href="https://arxiv.org/pdf/1506.02142.pdf" rel="nofollow noreferrer">Dropout as a Bayesian Approximation:
  Representing Model Uncertainty in Deep Learning</a> which is called <em>Monte Carlo Dropout</em>.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-09-11T00:44:00.763Z
Answers.LastActivityDate: 2019-09-11T00:44:00.763Z
Answers.UserDisplayName: Anuar Y
Answers.Body: <p><a href="https://scottlocklin.wordpress.com/2016/12/05/predicting-with-confidence-the-best-machine-learning-idea-you-never-heard-of/" rel="nofollow noreferrer">Predicting with confidence: the best machine learning idea you never heard of</a> by Scott Locklin might provide you an idea.  </p>
  
  <blockquote>
    <p>The name of this basket of ideas is “conformal prediction.”</p>
  </blockquote>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-02-27T12:34:52.303Z
Answers.LastActivityDate: 2019-02-27T12:34:52.303Z
Answers.UserDisplayName: Xpector
Body: <p>Suppose I want to build a neural network regression model that takes one input and return one output.</p>
  
  <p>Here's the training data:</p>
  
  <pre><code>0.1 =&gt; 0.1
  0.2 =&gt; 0.2
  0.1 =&gt; -0.1
  </code></pre>
  
  <p>You will see that there are 2 inputs <code>0.1</code> that matches to different output values <code>0.1</code> and <code>-0.1</code>. So what will happen with most machine learning models is that they will predict the average when <code>0.1</code> is fed to the model. E.g. the output of <code>0.1</code> will be <code>(0.1 + (-0.1))/2 = 0</code>.</p>
  
  <p>But this <code>0</code> as an average answer is an incorrect answer. I want the model to be telling me that the input is ambiguous/insufficient to infer the output. Ideally, the model would report it as a form of confidence.</p>
  
  <p><strong>How do I report predictability confidence from the input?</strong></p>
  
  <p>The application that I find very useful in many areas is that I could then later ask the model to show me inputs that are easy to predict and inputs that are ambiguous. This would make me able to collect the data that are making sense.</p>
  
  <p>One way I know is to train the model then check the error on each training data, if it's high then it probably means that the input is ambiguous. But if you know any other papers or better techniques, I would be appreciated to know that!</p>
  
Tags: <neural-networks><machine-learning><linear-regression><probability>
Title: How to make machine learning model that reports ambiguity of the input?
UserDisplayName: offchan
ThreadText: # How to make machine learning model that reports ambiguity of the input?
  
  (Asked by: username_0 on 2019-02-27)
  
  Suppose I want to build a neural network regression model that takes one input and return one output.
  
  Here's the training data:
  
  ```
  0.1 => 0.1
  0.2 => 0.2
  0.1 => -0.1
  
  ```
  
  You will see that there are 2 inputs `0.1` that matches to different output values `0.1` and `-0.1`. So what will happen with most machine learning models is that they will predict the average when `0.1` is fed to the model. E.g. the output of `0.1` will be `(0.1 + (-0.1))/2 = 0`.
  
  But this `0` as an average answer is an incorrect answer. I want the model to be telling me that the input is ambiguous/insufficient to infer the output. Ideally, the model would report it as a form of confidence.
  
  **How do I report predictability confidence from the input?**
  
  The application that I find very useful in many areas is that I could then later ask the model to show me inputs that are easy to predict and inputs that are ambiguous. This would make me able to collect the data that are making sense.
  
  One way I know is to train the model then check the error on each training data, if it's high then it probably means that the input is ambiguous. But if you know any other papers or better techniques, I would be appreciated to know that!
  
  **Tags:** neural-networks, machine-learning, linear-regression, probability
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2019-09-11. Score: 2
  
  Another specific way to do this if one uses a neural network for this. Use a dropout a layer in your network and instead of scaling the activations at test time, one can sample the activations (just like in training-time) and predict multiple times for a given input, then look at distribution of your outputs. Intuitively this would add "probabilistic, bayesian effect" to you neural network.
  I think this method was first proposed in [Dropout as a Bayesian Approximation:
  Representing Model Uncertainty in Deep Learning](https://arxiv.org/pdf/1506.02142.pdf) which is called *Monte Carlo Dropout*.
  
  
  ---
  
  ### Answer by username_2 on 2019-02-27. Score: 1
  
  [Predicting with confidence: the best machine learning idea you never heard of](https://scottlocklin.wordpress.com/2016/12/05/predicting-with-confidence-the-best-machine-learning-idea-you-never-heard-of/) by Scott Locklin might provide you an idea.
  
  > The name of this basket of ideas is “conformal prediction.”
  
  
  ---
  
  