5
$\begingroup$

I used a script in R language that uses nnet library to predict promoter bacteria and i would like to know how to extract rules from this neural network results.

As my input of the neural network i have n positive examples of promoter and n false examples. I use as input these examples and the FASTA file with the genome of the bacteria. As a result, i have a value of 0 to 1 for each network tested corresponding to its learning. I want to discover roles that can improve my network in future experiments in the same bacteria.

Which algorithms or softwares could i use?

$\endgroup$
  • 1
    $\begingroup$ Welcome to Bioinformatics! Could you post an example? What kind of rules do you expect? What have you found/tried (to avoid proposing things you already did/search) ? $\endgroup$ – llrs Jun 10 '17 at 11:21
  • $\begingroup$ Please edit it into the question. What have you looked for to solve your problem? $\endgroup$ – llrs Jun 10 '17 at 11:33
  • $\begingroup$ I am starting to search for possible solutions to rule extraction. $\endgroup$ – Rafael Coelho Jun 10 '17 at 11:39
  • $\begingroup$ That would be the first thing before other people start to freely invest their time $\endgroup$ – llrs Jun 10 '17 at 14:13
4
$\begingroup$

Short answer: you can't.

Neural networks use positive and negative examples to add weights to the neural network architecture that is provided to it. Trying to deconvolve the meaning behind the weights is nigh-on impossible except for the simplest perceptron.

This is common to many machine learning algorithms: they work very much like black boxes. One exception is decision trees. They will report what features are used to classify the positive vs negative datasets.

However, as with all ML methods, you need to be very careful of your training datasets. This is especially true of motif searching and especially for negative datasets. It's quite easy to find a negative dataset which is completely inappropriate for learning and give you misleading accuracies.

Like @user172818, I would try traditional methods as they can work well, again, if given appropriate data. The MEME-suite would be a good start.

| improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ You may have a look at the paper under a link in my answer. For CNN, the weights in the first convolutional layer is interpretable. $\endgroup$ – user172818 Jul 11 '17 at 20:45
  • $\begingroup$ Agree. Which is what I said about "the simplest perceptron". $\endgroup$ – ithinkiam Aug 18 '17 at 8:40
7
$\begingroup$

R's nnet package only supports fully connected neural networks with one hidden layer. This is the most primitive type of network. I doubt it will work well for promotors finding. In addition, such network won't give you useful interpretations.

If you want to explore neural networks, you should use a one-dimension convolution layer as is described in this paper. This layer effectively represents a positional weight matrix (PWM). You can know which motifs are used. With backtracking, you can also identify the coordinates of motifs. To deploy such a model, you need to be fairly familiar with deep learning and to learn one deep learning framework. For framework, you may start with keras. Once you get used to keras, you can implement your full promotor finder in less than 100 lines of python code. Alternatively, you may try dragonn. It is supposed to simplify deploying models for DNA sequences. I have no experience with it, though.

For promotor finding, it is also worth trying traditional methods. It is interesting that few/no neuralNet-based publications have evaluated traditional methods, probably because many ML people know little about classical motif finding. These methods could work well, too.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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