首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特征重要性决策算法

特征重要性决策算法
EN

Data Science用户
提问于 2019-01-31 01:15:50
回答 1查看 157关注 0票数 0

我有一个带有100+特性列的数据集。我的客户要求我从100+中选择“十大最重要的特性”。

这个职位,我了解到随机森林可以帮助我对特性的重要性进行排序。

我的问题是,还有其他算法可以做这个工作吗?(此外,如果有人能给我介绍一些tensorflow的例子。)

为了解释,数据集是关于eCommerce的,有100+特性和一列描述“用户在网站上花了多少钱”。所谓“重要特性”,我指的是能够最好地预测用户使用的列的特性。

EN

回答 1

Data Science用户

发布于 2019-01-31 03:33:09

您有与数据集关联的某种结果吗?所谓“十大最重要的特性”,你的意思是在实现一个特定目标时最重要吗?如果您有某种结果列(一个分数或及格/失败),您可以通过一个好的老式回归技术来解决这个问题。如果没有,您可能需要重新定义重要性的含义,并使用PCA这样的技术来查找最易变的特性。

一个有用的例子:学生通过考试最重要的是什么?

例如,我们对30名学生进行了跟踪,看什么对通过测试、智力(IQ)或学习时间(以小时为单位)更为重要。下面的代码在R中,但我只是用它来说明这个过程。

代码语言:javascript
复制
# 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

智商和学习时间似乎对考试成绩都有积极的影响。但是你怎么知道哪一个更重要?线性回归会给你一个方程,它与数据成一条直线,而直线在每个方向的斜率会给出这个特征的相对重要性。

但首先,你必须标准化数字,否则更大的一组数字(智商)会使事情变得不正常。

代码语言:javascript
复制
# 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

产出如下:

代码语言:javascript
复制
Coefficients:
            (Intercept)           standardisedIQ  standardised_study_time  
                 77.133                    2.507                    3.182

这可以理解为:其他一切都一样,平均分数为77.1,智商的“效应”为2.5,学习时间为3.2。由于学习时间较长,所以在这次考试中学习时间比智商有更大的影响。

这如何转化为你的问题?在您的例子中,您有100个变量。将它们标准化,对这100个变量和结果变量进行适当的回归,并选择得分最高(绝对值)最高的10个变量。

您使用的特定类型将取决于您拥有的结果变量。如果这是一个传球/失败而不是分数,你想要使用逻辑回归。

据我所知,这样做在统计上并不完全正确。然而,如果你的客户是非数学的,并且只想要一个关于不同功能的想法,那就无关紧要了。

如果您没有任何可用的结果变量,使用PCA (主成分分析)可能会有帮助。它将突出各种特征的“可变性”或“显着性”,但它们对任何目标的重要性并不必要。请记住,使用PCA有很多注意事项,如果使用度量单位(即一个特征以米为单位,另一个以秒为单位),那么进行某种数据标准化是必要的。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/44840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档