Do you have some kind of outcome associated with the dataset? By 'top 10 most important features', do you mean most important in achieving a specific goal? If you have some kind of outcome column (a score or pass/fail) you can solve this through a good old fashioned regression technique. If you don't, you might have to redefine what importance means and use a technique like PCA to find the most variable features.
A worked example: What is most important for students to pass a test?
For this made up example, we are tracking 30 students and seeing what is more important for passing a test, intelligence (IQ) or study time (in hours). The code below is in R, but I'm just using it to illustrate the process.
# Generating some sample data
set.seed(300)
IQ <- as.integer(rnorm(30,mean=100,sd=10))
study_hours <- as.integer(rlnorm(30,mean=1.5,sd=0.75))
score <- as.integer(100*tanh( 0.0012*(6*IQ + 20*study_hours
+rnorm(30,mean=150,sd=10))))
IQ study_hours score
1 113 3 78
2 108 5 80
3 104 2 75
4 107 3 76
5 99 8 80
6 115 5 80
7 108 2 77
8 103 4 76
9 112 3 78
10 103 1 73
11 122 8 84
12 99 2 72
13 86 3 69
14 100 6 77
15 105 12 84
16 100 12 83
17 114 9 84
18 87 7 74
19 97 6 76
20 102 5 77
21 96 9 79
22 106 15 86
23 96 1 71
24 101 4 76
25 88 4 71
26 96 4 75
27 102 2 74
28 113 4 79
29 99 2 73
30 110 2 77
Both IQ and study time seem to have a positive effect on exam score. But how do you tell which one is more important? Linear regression will give you an equation that fits a straight line to the data, and the slope of the line in each direction gives the relative importance of that feature.
But first you have to standardise the numbers, otherwise the bigger set of numbers (IQ) is going to throw things out of whack.
# Standardising the variables.
# (You take the number, subtract the mean and divide by the standard deviation)
standardisedIQ <- (IQ-mean(IQ))/sd(IQ)
standardised_study_time <- (study_hours-mean(study_hours))/sd(study_hours)
# Perform linear regression. Output variable is score and input variables are
standardised IQ and standardised study time
L <- lm(score ~ standardisedIQ + standardised_study_time)
L
The output is:
Coefficients:
(Intercept) standardisedIQ standardised_study_time
77.133 2.507 3.182
which can be read as: Everything else being equal, the average score is 77.1, and IQ has an 'effect' of 2.5 and study time an 'effect' of 3.2. Since the study time number is larger, study time has more of an effect than IQ in this particular exam.
How does this translate to your problem? In your case, you have 100 variables. 650
Just standardise them, set up the appropriate regression on those 100 variables and the outcome variable, and choose the top ten variables with the highest (absolute value) scores.
The specific type of you use will depend on what outcome variable you have. If it's a pass/fail rather than a score, you want to use logistic regression.
As far as I can tell, doing things this way isn't completely statistically sound. However, if your client is non-mathematical and only wants 'an idea' of what the different features are doing, that shouldn't matter.
If you do not have any usable outcome variables, using PCA (principal component analysis) may help. It will highlight the 'variability' or 'salience' of the various features, but not necessary their importance towards any goal. Keep in mind that there are a bunch of caveats with using PCA, and doing some sort of data standardisation is necessary if you're using units of measurement (i.e. one feature is measured in metres, another in seconds, etc.). 964