Answers.Body: <p>I am very thankful to the people who responded with hints and suggestions. However, I think what seems most applicable for my case is <a href="https://probcomp.github.io/Gen/" rel="nofollow noreferrer">Gen</a> - A general-purpose probabilistic programming system with programmable inference from MIT described in the paper <a href="http://Gen:%20A%20General-Purpose%20Probabilistic%20ProgrammingSystem%20with%20Programmable%20Inference" rel="nofollow noreferrer">"Gen: A General-Purpose Probabilistic Programming System with Programmable Inference"</a> by M. F. Cusumano-Towner et al.</p>
  
  <p>In case you are looking for something along these lines it looks like a very good start for an application in probabilistic programming.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-07-23T08:55:36.817Z
Answers.LastActivityDate: 2019-07-23T08:55:36.817Z
Answers.UserDisplayName: sophros
Answers.Body: <p>Firstly, before we commence I will recommend that you refer to similar questions on the network i.e <a href="https://stackoverflow.com/questions/39386936/machine-learning-with-incomplete-data">https://stackoverflow.com/questions/39386936/machine-learning-with-incomplete-data</a> , <a href="https://stats.stackexchange.com/questions/103500/machine-learning-algorithms-to-handle-missing-data">https://stats.stackexchange.com/questions/103500/machine-learning-algorithms-to-handle-missing-data</a></p>
  
  <p><strong>Row Deletion</strong></p>
  
  <p>If a particular row has more than 70% missing values, you can delete the row to handle the null values. This method is advised only when there are enough samples in the data set. The major disadvantage of this method is that it reduces the power of the model because it reduces the sample size. </p>
  
  <p><strong>Replacing With Mean/Median/Mode</strong></p>
  
  <p>We can calculate the mean, median or mode of the feature and replace the missing values with it. Another approach is to approximate it with the deviation of neighbouring values. </p>
  
  <p>Although this approach adds variance to the data set, it yields better results compared to removing rows and columns. </p>
  
  <p><strong>KNN or Random Forest imputation</strong></p>
  
  <p>In this approach, the missing values of an attribute are imputed using existing attributes that are most similar to the attribute whose values are missing. The similarity of two attributes is determined using a distance function. </p>
  
  <p>The advantage of this approach is that k-nearest neighbour can predict both qualitative and quantitative attributes. Additionally you do not need to create a prediction model for each attribute with missing data in the dataset. </p>
  
  <p><strong>Predicting the Missing Values</strong></p>
  
  <p>Prediction is one of the more sophisticated methods for handling missing data.
  Using the features which do not have missing values, we can predict the null values with the help of a machine learning algorithm. </p>
  
  <p>In this case, we divide our data set into two. One set with no missing values and another set with missing values. The first data set becomes the training data set of the model while the second data set with missing values is the test data set. </p>
  
  <p>We then create a model to predict target variables based on other attributes of the training data set and populate the missing values of the test data set.(Sayali S 2016) </p>
  
  <p><strong>Caret or randomForestSRC packages in R</strong></p>
  
  <p>The R package randomForestSRC can handle missing data for a wide class of analyses i.e. regression, classification, unsupervised and multivariate (Ankur C 2014). 
  Additionally, the Caret R package can be used to predict missing data. </p>
  
  <p>Reference : <a href="https://analyticsindiamag.com/5-ways-handle-missing-values-machine-learning-datasets/" rel="nofollow noreferrer">https://analyticsindiamag.com/5-ways-handle-missing-values-machine-learning-datasets/</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-08-17T14:53:31.377Z
Answers.Text: Thank you for your answer but it is on the borderline of what I am asking about. There is a difference between "patching holes"  in the data and proceeding as if the data was fully valid (and this seems to me the approach you are suggesting by enumerating ways to "patch" the data) vs. an approach that to **reason** (e.g. draw conclusions, i.e. perform logical operations) on the data taking into account that it is not certain that the values are as they are or knowing there is a missing value somewhere among the variables taken into consideration.
Answers.UserDisplayName: sophros
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-14T17:58:28.577Z
Answers.LastActivityDate: 2018-02-14T17:58:28.577Z
Answers.UserDisplayName: Seth Simba
Body: <p>I was wondering if anyone can suggest a good framework for reasoning with <strong>incomplete information</strong>.</p>
  
  <p>I have found <a href="http://larkc.org/" rel="nofollow noreferrer">Large Knowledge Collider</a> but it appears dead for some time. Do you possibly have any other suggestions for a maintained project worth checking?</p>
  
  <p>Since many comments are gravitating towards a different direction let me add one approach that I found a potentially good answer to my question - <a href="https://www.researchgate.net/publication/220802281_Rough_Set_Based_Decision_Tree_Model_for_Classification" rel="nofollow noreferrer">Rough Set Based Decision Trees</a>.</p>
  
  <p>I would hope there is more than only this approach... could you please help me identify them?</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-09-07T17:11:04.670Z
Comments.Text: Welcome to AI!  (This type of question is a little bit on the line in terms of community guidelines, but I like it and think it is useful.  Decision making in a condition of incomplete information may be said to be the primary concern of game theory.)
Comments.UserDisplayName: DukeZhou
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-09-22T17:11:18.183Z
Comments.Text: What is your original problem? In a way, Reinforcement Learning is (almost) always dealing with incomplete information.
Comments.UserDisplayName: Maxim
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-10-05T16:41:05.577Z
Comments.Text: I can see the direction you are heading but RL is not an answer for my problem. I am looking for a usable software / libraries that can be used to derive new knowledge (i.e. claims about relationships between entities / variables) from an existing, provided set of "axioms" with an additional caveat that there is a variability in the degree of trust in those statements (that somehow can be quantified).
Comments.UserDisplayName: sophros
Tags: <reasoning><incomplete-information>
Title: Reasoning with incomplete information
UserDisplayName: sophros
ThreadText: # Reasoning with incomplete information
  
  (Asked by: username_0 on 2017-09-07)
  
  I was wondering if anyone can suggest a good framework for reasoning with **incomplete information**.
  
  I have found [Large Knowledge Collider](http://larkc.org/) but it appears dead for some time. Do you possibly have any other suggestions for a maintained project worth checking?
  
  Since many comments are gravitating towards a different direction let me add one approach that I found a potentially good answer to my question - [Rough Set Based Decision Trees](https://www.researchgate.net/publication/220802281_Rough_Set_Based_Decision_Tree_Model_for_Classification).
  
  I would hope there is more than only this approach... could you please help me identify them?
  
  **Tags:** reasoning, incomplete-information
  > **Comments:**
  > **username_1**: Welcome to AI!  (This type of question is a little bit on the line in terms of community guidelines, but I like it and think it is useful.  Decision making in a condition of incomplete information may be said to be the primary concern of game theory.)  
  > **username_2**: What is your original problem? In a way, Reinforcement Learning is (almost) always dealing with incomplete information.  
  > **username_0**: I can see the direction you are heading but RL is not an answer for my problem. I am looking for a usable software / libraries that can be used to derive new knowledge (i.e. claims about relationships between entities / variables) from an existing, provided set of "axioms" with an additional caveat that there is a variability in the degree of trust in those statements (that somehow can be quantified).  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_0 on 2019-07-23. Score: 0 | Accepted answer
  
  I am very thankful to the people who responded with hints and suggestions. However, I think what seems most applicable for my case is [Gen](https://probcomp.github.io/Gen/) - A general-purpose probabilistic programming system with programmable inference from MIT described in the paper ["Gen: A General-Purpose Probabilistic Programming System with Programmable Inference"](http://Gen:%20A%20General-Purpose%20Probabilistic%20ProgrammingSystem%20with%20Programmable%20Inference) by M. F. Cusumano-Towner et al.
  
  In case you are looking for something along these lines it looks like a very good start for an application in probabilistic programming.
  
  
  ---
  
  ### Answer by username_3 on 2018-02-14. Score: 0
  
  Firstly, before we commence I will recommend that you refer to similar questions on the network i.e <https://stackoverflow.com/questions/39386936/machine-learning-with-incomplete-data> , <https://stats.stackexchange.com/questions/103500/machine-learning-algorithms-to-handle-missing-data>
  
  **Row Deletion**
  
  If a particular row has more than 70% missing values, you can delete the row to handle the null values. This method is advised only when there are enough samples in the data set. The major disadvantage of this method is that it reduces the power of the model because it reduces the sample size.
  
  **Replacing With Mean/Median/Mode**
  
  We can calculate the mean, median or mode of the feature and replace the missing values with it. Another approach is to approximate it with the deviation of neighbouring values.
  
  Although this approach adds variance to the data set, it yields better results compared to removing rows and columns.
  
  **KNN or Random Forest imputation**
  
  In this approach, the missing values of an attribute are imputed using existing attributes that are most similar to the attribute whose values are missing. The similarity of two attributes is determined using a distance function.
  
  The advantage of this approach is that k-nearest neighbour can predict both qualitative and quantitative attributes. Additionally you do not need to create a prediction model for each attribute with missing data in the dataset.
  
  **Predicting the Missing Values**
  
  Prediction is one of the more sophisticated methods for handling missing data.
  Using the features which do not have missing values, we can predict the null values with the help of a machine learning algorithm.
  
  In this case, we divide our data set into two. One set with no missing values and another set with missing values. The first data set becomes the training data set of the model while the second data set with missing values is the test data set.
  
  We then create a model to predict target variables based on other attributes of the training data set and populate the missing values of the test data set.(Sayali S 2016)
  
  **Caret or randomForestSRC packages in R**
  
  The R package randomForestSRC can handle missing data for a wide class of analyses i.e. regression, classification, unsupervised and multivariate (Ankur C 2014).
  Additionally, the Caret R package can be used to predict missing data.
  
  Reference : <https://analyticsindiamag.com/5-ways-handle-missing-values-machine-learning-datasets/>
  
  > **Comments:**
  > **username_0**: Thank you for your answer but it is on the borderline of what I am asking about. There is a difference between "patching holes"  in the data and proceeding as if the data was fully valid (and this seems to me the approach you are suggesting by enumerating ways to "patch" the data) vs. an approach that to **reason** (e.g. draw conclusions, i.e. perform logical operations) on the data taking into account that it is not certain that the values are as they are or knowing there is a missing value somewhere among the variables taken into consideration.  
  
  ---
  
  