回归模型如何确定变量?

m
microsat
楼主 (北美华人网)
准备做回归分析或者机器学习。 目标变量已经确定。只有一个。 输入变量太多,几千个变量。sex,age,education,zipcode,基因,等等。
请问如何从这几千个变量中挑出一些出来,作为模型回归或者学习的变量。
我现在用 y~x (x是一个单变量),来计算出pvalue,pvalue小,就说明这个变量值得保留作为回归的变量。
但是,我最近,听说一种观点。基因都是组网工作的,一些单独工作时pvalue很高的基因,并不意味着不值得引入模型。
这个说法,就如同挑选学生做工程,理论上按照成绩进行挑。如果你挑选学习好的学生来完成一个工程,然后你发现有个学习成绩不好的女学生,你如果引进,会更好。因为男女搭配,干活不累。
如果是这样的话,请问,我该如何从几千个变量中找出需要的变量作为回归模型的变量呢?
谢谢!
z
zhangaa2004
回复 1楼microsat的帖子
楼主你去看看model selection吧。有一套步骤和算法可以做,比如stepwise。
m
microsat
回复 1楼microsat的帖子
楼主你去看看model selection吧。有一套步骤和算法可以做,比如stepwise。
zhangaa2004 发表于 2022-06-09 15:26

不是选择model,是选择变量。
c
castleonsands
准备做回归分析或者机器学习。 目标变量已经确定。只有一个。 输入变量太多,几千个变量。sex,age,education,zipcode,基因,等等。
请问如何从这几千个变量中挑出一些出来,作为模型回归或者学习的变量。
我现在用 y~x (x是一个单变量),来计算出pvalue,pvalue小,就说明这个变量值得保留作为回归的变量。
但是,我最近,听说一种观点。基因都是组网工作的,一些单独工作时pvalue很高的基因,并不意味着不值得引入模型。
这个说法,就如同挑选学生做工程,理论上按照成绩进行挑。如果你挑选学习好的学生来完成一个工程,然后你发现有个学习成绩不好的女学生,你如果引进,会更好。因为男女搭配,干活不累。
如果是这样的话,请问,我该如何从几千个变量中找出需要的变量作为回归模型的变量呢?
谢谢!
microsat 发表于 2022-06-09 15:22

先单独变化其中一个变量,其他变量不变,看目标对这个变量是不是敏感,然后依次类推,用这个方法找出一些敏感的变量作为学习变量。这个办法对有互作用的变量不够好,但作为起步分析还是不错的。
S
SSBN826
ANOVA
z
zhegufei
准备做回归分析或者机器学习。 目标变量已经确定。只有一个。 输入变量太多,几千个变量。sex,age,education,zipcode,基因,等等。
请问如何从这几千个变量中挑出一些出来,作为模型回归或者学习的变量。
我现在用 y~x (x是一个单变量),来计算出pvalue,pvalue小,就说明这个变量值得保留作为回归的变量。
但是,我最近,听说一种观点。基因都是组网工作的,一些单独工作时pvalue很高的基因,并不意味着不值得引入模型。
这个说法,就如同挑选学生做工程,理论上按照成绩进行挑。如果你挑选学习好的学生来完成一个工程,然后你发现有个学习成绩不好的女学生,你如果引进,会更好。因为男女搭配,干活不累。
如果是这样的话,请问,我该如何从几千个变量中找出需要的变量作为回归模型的变量呢?
谢谢!
microsat 发表于 2022-06-09 15:22

"果你挑选学习好的学生来完成一个工程,然后你发现有个学习成绩不好的女学生,你如果引进,会更好。因为男女搭配,干活不累."
你这个例子好,完美的解释了Interaction effect。
G
Giovanna
Feature selection
c
chjn1990531
这个是feature selection,如果有几千个变量,实际上需要考虑的是dimension reduction。传统的方法有svd,也有更general用factorization machine的,或者用tree based model算feature importance的。
奇异老鼠
非常好的帖子,真美的例子。
枫丹白露
如果自变量之间也有相关性,建议看一下结构方程模型structural equation modeling是否适用。十几年前我毕业论文也是用到比较多的自变量,自变量之间还可以互相影响。但是结构方程模型回归起来特别麻烦,当时用的SPSS,SAS分别做了几次。时间太久远,我自己也荒废学术很多年了,不知道是否对你有用。
P
PeterinLA
你做模型的准备工作没做好。不能这样挑。这样挑出来的跑模型会有自相关性,多重共线性,单独跑的时候t检验能过,合在一起跑的时候就过不了了。
首先你要看你的原始数据,对于原始数据要有一定的把握。数据都是什么,你有多少样本量,留多少自由度等等。自己研究的题目是什么。这样才能有所选择。
然后做描述性统计,相关系数分析,协方差都看看。
这些准备工作做好,才能开始弄模型。前面的工作不做好,后面模型根本做不出来。

家有小可乐
回复 1楼microsat的帖子
楼主你去看看model selection吧。有一套步骤和算法可以做,比如stepwise。
zhangaa2004 发表于 2022-06-09 15:26

看楼主对层主的回复,也能估计没有看过类似的书。不过话说要面ds工作,这个是一定要准备的问题之一。
长影
同问 如果feature engineering 做了很多,比如一小时内xx,四小时内xx,24小时内xx。。所以几百上千个变量有很多相关性
对模型是好的嘛?有啥坏作用吗?还是说应该尽量挑不相关的变量呢
P
PeterinLA
回复 13楼长影的帖子
会有多重共线性。这样模型就不对了。
长影
回复 13楼长影的帖子
会有多重共线性。这样模型就不对了。
PeterinLA 发表于 2022-06-09 17:30

不用逻辑回归 比如tree based, 或者nn model. 那还会受影响嘛
l
lonesun
回复 13楼长影的帖子
会有多重共线性。这样模型就不对了。
PeterinLA 发表于 2022-06-09 17:30

只能说对linear model 不对了 但是tree based model 还是可以的
c
castleonsands
原来楼主问的就是变量间的互作用啊,这个是很难的问题,尤其互作用还有不一样得先后次序作用不一样的情况。特殊的有一些经验模型套用,普遍的很难。整个deep learning本质上就是把互作用变量通过多层矩阵变换而分离。不过几千个变量,可以想象真正敏感的不会有多少个,首先需要的是去掉大量无效变量,然后再考虑互作用的分离,本质上是压缩大型稀疏矩阵,然后近似分解,尽量对角化的数学问题。
l
lonesun
不用逻辑回归 比如tree based, 或者nn model. 那还会受影响嘛

长影 发表于 2022-06-09 17:51

跑个结果试试看好了 如果categorical的多 那就上lightGBM 如果都是numerical / binary的 那就上XGBoost 然后丢掉feature importance绝对值小的然后继续迭代;SageMaker也有工具帮你选;除非是纯粹的time series 不然一开始先不要尝试nn model; 有time series可以用kernal 做moving window提取变量放到tree based model里面学;
另外你也没说你的model 背景; 有没有model auditor要给他们做validation / document?他们会很picky为啥选这些数据/能不能用;还是说自己own的model 能跑出结果就行? 这么多feature是怎么弄出来的?如果是timeseries自己aggregate出来的 那倒是可以试试LSTM / auto-regression等专门处理time series的model 你的模型打算怎么跑?是要放到专门的platform online score 还是自己在机器上batch evaluation?如果是前者 那你还要看啥数据latency太大要踢掉;后者的话 你开心就好了
b
bearcat
would shapley value be helpful here?
伪猴王
准备做回归分析或者机器学习。 目标变量已经确定。只有一个。 输入变量太多,几千个变量。sex,age,education,zipcode,基因,等等。
请问如何从这几千个变量中挑出一些出来,作为模型回归或者学习的变量。
我现在用 y~x (x是一个单变量),来计算出pvalue,pvalue小,就说明这个变量值得保留作为回归的变量。
但是,我最近,听说一种观点。基因都是组网工作的,一些单独工作时pvalue很高的基因,并不意味着不值得引入模型。
这个说法,就如同挑选学生做工程,理论上按照成绩进行挑。如果你挑选学习好的学生来完成一个工程,然后你发现有个学习成绩不好的女学生,你如果引进,会更好。因为男女搭配,干活不累。
如果是这样的话,请问,我该如何从几千个变量中找出需要的变量作为回归模型的变量呢?
谢谢!
microsat 发表于 2022-06-09 15:22

你挑选变量没有理论的? 你的理论有了当然就知道挑些什么变量了。 要不然不是garbage in garbage out?
d
dadaoxiaomai
Lasso
a
aidaibiao
我觉得上千个开始肯定不可行 先找理论依据 没啥鸟用的先去掉 还有factor analysis 先做做试试 看看能不能降维先? 最后因变量太多 既没法解释又没法应用 建模的价值就没有了呀
m
microsat
跑个结果试试看好了 如果categorical的多 那就上lightGBM 如果都是numerical / binary的 那就上XGBoost 然后丢掉feature importance绝对值小的然后继续迭代;SageMaker也有工具帮你选;除非是纯粹的time series 不然一开始先不要尝试nn model; 有time series可以用kernal 做moving window提取变量放到tree based model里面学;
另外你也没说你的model 背景; 有没有model auditor要给他们做validation / document?他们会很picky为啥选这些数据/能不能用;还是说自己own的model 能跑出结果就行? 这么多feature是怎么弄出来的?如果是timeseries自己aggregate出来的 那倒是可以试试LSTM / auto-regression等专门处理time series的model 你的模型打算怎么跑?是要放到专门的platform online score 还是自己在机器上batch evaluation?如果是前者 那你还要看啥数据latency太大要踢掉;后者的话 你开心就好了
lonesun 发表于 2022-06-09 18:03

谢谢! 这些变量是来自于Next Generation Sequencing。每个变量其实是一个基因,或者一个变异。 现在的目的,就是通过这些基因,或者变异,来判断和预测一个人是不是得了癌症。
这些基因和变异总共加起来有5百万个。我已经过滤掉了许多,最后剩下3000个左右。我需要从这3000个里面,再挑出300个出来。
如何挑选。