I'm trying to come up with the right algorithm for a system in which the user enters a few symptoms and the system has to predict or determine the likelihood that a few selected symptoms are associated with those existing in the system. Then, after associating them, the result or output should be a specific disease for the symptoms.

The system is comprised of a series of diseases with each assigned to specific symptoms, which also exist in the system.

Let's assume that the user entered the following input:

A, B, C, and D

The first thing the system should do is check and associate each symptom (in this case represented by alphabetical letters) individually against a data table of symptoms that already exist. And in cases where the input doesn't exist, the system should report or send feedback about it.

And also, let's say that A and B were in the data table, so we are 100% sure that they're valid or exist and the system is able to give out the disease based on the input. Then let's say that the input now is C and D, where C doesn't exist in the data table, but there is a possibility that D exists.

We don't give D a score of 100%, but maybe something lower (let's say 90%). Then C just doesn't exist at all in the data table. So, C gets a score of 0%.

Therefore, the system should have some kind of association and prediction techniques or rules to output the result by judging the user's input.

Summary of generating the output:

If A and B were entered and exist, then output = 100%
If D was entered and existed but C was not, then output = 90%
If all entered don't exist, then output = 0%

What techniques would be used to produce this system?


1 Answer 1


I think you're coming at your problem slightly wrong... what you're essentially talking about is a belief network.

You may want to look into existing Bayesian Learning techniques to get your head around this, but belief networks commonly use the exact scenario you're talking about; using a set of known (or uncertain facts) statements to produce some inferred probability of a particular output.

Even more, they often express this through disease-symptom based examples in tutorials! Try here.

My point is that it would be better to use a belief network as the theoretical groundwork is all already there for you, instead of an ANN.

  • 1
    $\begingroup$ If you want to implement a bayesian network from scratch, you're going to have to understand the raw mathematics that drive them. There are a couple of suites out there to run bayesian networks on without having to understand all of the (somewhat confusing at times) maths, such as Netica (norsys.com/netica.html) $\endgroup$ Commented Aug 23, 2016 at 16:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .