<p>The importance of a feature is captured by computing how much the learned model depends on a feature <em>f</em>.</p>

<p>A perceptron is a simple feed-forward neural network, and for a neural network (which is a real-valued nonlinear function), dependency corresponds to the partial derivative of output function with respect to <em>f</em>.</p>

<p>The relative importance of a feature is proportional to its average absolute weight on a trained perceptron. This is not always true for neural networks in general. For instance, this need not hold true for multi-layer perceptrons.</p>

<p>For more details (typing the exact formula here will be a notational mess), look at <a href="http://arxiv.org/pdf/1005.5556.pdf" rel="nofollow">sections 2 and 3 of this paper</a>. I believe equation (8) (in section 3) is what you are looking for.</p>

<p>There, the score is a summation over multiple learners. If yours is a single-layer perceptron, the function learned is a single weight vector</p>

<p><strong>w</strong> = (<em>w1</em>, <em>w2</em>, ... <em>wn</em>)</p>

<p>Then, the <em>average absolute weight</em> I mention at the beginning is simply the absolute weight |<em>wi</em>| of the <em>i</em>-th feature. This seems too simple a measure to be ranking the importance of features, right? But ... if you think about it, an n-dimensional input <strong>x</strong> gets transformed to <strong>w</strong> . <strong>x</strong> (the vector dot product). That is, the <em>i</em>-th weight <em>wi</em> fully controls how much the input changes along one dimension of the vector space.</p>

<p>By the way, in most (if not all) classifiers, the feature weight is itself the measure of its importance. It's just that the weights are computed in more complicated ways for most other classifiers.</p>
Perceptron learning - most important feature
<p>For one of my assignments in my AI class we were tasked with creating a perceptron learning implementation of the Widrow Hoff delta rule.  I've coded this implementation in java:</p>

<p>The following github link contains the project:
<a href="https://github.com/dmcquillan314/CS440-Homework/tree/master/CS440-HW2-1" rel="nofollow">https://github.com/dmcquillan314/CS440-Homework/tree/master/CS440-HW2-1</a></p>

<p>The issue that I'm having is not with the creation of the perceptron.  That is working fine.</p>

<p>In the project after training the perceptron I then applied an unclassified dataset to the perceptron to then learn the classifications of each input vector.  This also worked fine.</p>

<p>My issue pertains to learning which feature of the inputs is the most important.</p>

<p>For example, if the feature set within each input vector was color, car model, and car make and we wanted to classify which feature was the most important.  How would one go about doing so.</p>

<p>My original understanding of this led me to believe that calculating the correlation coefficient the value of that feature for each input and the classification vector that is produced.  However, this turned out to be a false assumption.</p>

<p>Is there some other way that the most important feature can be learned?</p>

<p><strong>EDIT</strong></p>

<p>Sample weight vector:</p>

<p>( -752, 4771, 17714, 762, 6, 676, 3060, -2004, 5459, 9591.299, 3832, 14963, 20912 )</p>

<p>Sample input vectors:</p>

<p>(55, 1, 2, 130, 262, 0, 0, 155, 0, 0, 1, 0, 3, 0)</p>

<p>(59, 1, 3, 126, 218, 1, 0, 134, 0, 2.2, 2, 1, 6, 1)</p>

<p>(45, 1, 2, 128, 308, 0, 2, 170, 0, 0, 1, 0, 3, 0)</p>

<p>(59, 1, 4, 110, 239, 0, 2, 142, 1, 1.2, 2, 1, 7, 1)</p>

<p>The last element is the classification.</p>

<p>I will post an answer here when I find one.  So far I believe that the answer given by the instructor is inaccurate.</p>