I want to recommend one of three possible treatments for a patient, based on his blood values A, B and C.

To solve this task, I have constructed a supervised feed-forward NN with back-propagation (input values = blood values | output values = treatments).

My training data-set contains medical records for past treatments. A blood value between [0,1] is good, above is bad. It looks like this:

patient records

As you can see, some patients' blood values improved after the treatment (patient 001). Others partially improved (patient 002). Equally, there are some patients, whose blood values worsened (patient 003).

In training data pre-processing, one would delete patients 002 and 003, since patient 001 is the only "good" example.

Is there any possibility to teach my network to not follow the "bad" example of patient 003? Or is this network topology not capable of doing so at all?


closed as off-topic by Sasho Nikolov, Kaveh, Mohammad Al-Turkistany, Aryeh, Lev Reyzin Apr 18 '17 at 21:03

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Your question does not appear to be a research-level question in theoretical computer science. For more information about the scope, please see help center. Your question might be suitable for Computer Science which has a broader scope." – Sasho Nikolov, Kaveh, Mohammad Al-Turkistany, Aryeh, Lev Reyzin
If this question can be reworded to fit the rules in the help center, please edit the question.


I'll give an answer for generic learning algorithms -- nothing specific to neural nets. For answering basic conceptual questions of what can or cannot be learned by an algorithm, try to put yourself in the algorithm's shoes. If I told you that a certain treatment worked for patients A and B but failed for patient C (and, crucially, that is all the data I gave you), could you possibly predict whether the treatment will work for patient D? Of course not, and neither is it reasonable to expect such magic from a machine.

If I gave you many more details about these patients (say, their ages, maybe some health history, etc) -- what we call features in the ML lingo -- your chances of learning to predict whether a treatment will succeed will be much better. Needless to say, the usual caveat applies: The features must be relevant to your prediction problem. For example, if the features I gave you were actually the movie ratings these patients gave on Netflix, that would probably be (a lot of) useless information.

So that's pretty much your answer. Present the data to the learning algorithm with sufficiently many useful features to make prediction possible (but not too many, because then you'll need huge sample sizes to avoid overfitting). I strongly urge you to take an intro stats/ML class before drawing medical conclusions from running learning algorithms on data. It's rather common for folks lacking a basic statistical foundation to make hair-raising mistakes.

  • $\begingroup$ Indeed, I do have many more features than Blood 1-3 only. In theory, an algorithm should therefore be capable to recommend a treatment for a new patient X, who is very similar to another patient Y in the training data. However, if the training data showed, that patient Y did not ameliorate his values using Treatment 1, the algorithm should advise against this treatment (= which I call "learning from bad examples"). I believe, this is no "magic". Please correct me if I'm wrong. If this is possible, what is the practical implementation of the respective target vector in the NN? $\endgroup$ – G. Werner Apr 15 '17 at 17:40
  • $\begingroup$ How many patients (i.e., data points) do you have? How many features? $\endgroup$ – Aryeh Apr 15 '17 at 19:45
  • $\begingroup$ Around 22 features for 1900 patient records and 9 therapies. $\endgroup$ – G. Werner Apr 16 '17 at 8:23
  • $\begingroup$ OK, the 22/1900 are reasonable numbers. I would try a binary classification problem first: pick 1 therapy and try to predict whether it will succeed for a patient or not, based on the features. Try using a more "classic" classification algorithm such as SVM or decision trees. $\endgroup$ – Aryeh Apr 16 '17 at 8:38
  • $\begingroup$ So you mean I should create one SVM for each therapy, combine them in a decision tree and see which therapy fits best for a new patient, right? Good workaround! Would you thereby say, an ANN cannot solve this task? $\endgroup$ – G. Werner Apr 19 '17 at 13:17

Not the answer you're looking for? Browse other questions tagged or ask your own question.