Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

特征分布 #1

Open
aa147138 opened this issue May 29, 2018 · 6 comments
Open

特征分布 #1

aa147138 opened this issue May 29, 2018 · 6 comments

Comments

@aa147138
Copy link

你好大佬,判断特征是否在训练数据与测试数据是同分布,这个怎么操作?是把特征在训练集和测试集的分布曲线画出来?还是求方差?

@fanfanda
Copy link
Owner

最最简单的办法就是加上该特征之后,然后看线下和线上是不是同增或者同减的,假如不是那就说明不同分布,其余的方法像画图啊还是求方差都不行,因为我们不知道线上的y的分布,所以无法判断,特征选择一般也是线下划分了验证集的,一般来说验证集的logloss下降了,我们就可以去线上试试,一般来说,只要你提取特征的时候注意逻辑一致(比如滑动窗口提取特征就是为了保持逻辑一致),那么基本线上线下就是同增同减的。

@aa147138
Copy link
Author

复赛一开始的时候我用了10-11点作为验证集,这个还是基本上能够线上线下同增减的。但是到复赛b榜换榜之后,我融合了队友的特征,竟然过拟合了。而且队友跟我用的是同样的验证集,我过拟合了他没过拟合。所以在特征选择方面,我做得不好。
如果说按照线上成绩来判断特征是否分布一致的话,提交次数有限,这个不太可行的吧?
另外,我看第三名的方案,蛇佬是利用 Std/Mean 训练集测试集分布一致的思想 进行特征选择。这个我的疑问点就是 因为测试集的数据的条数跟训练集不一样,这个怎么求均值或者方差?难道是把验证集划分得和测试集一样大小之后在求均值方差?但是你又不一定能保证验证集划分得一定合理啊。大佬有什么见解

@fanfanda
Copy link
Owner

你的第一个问题原因我不太清楚,因为你也没有具体描述你的特征是哪些,应该是有一些线上线下逻辑不一致的特征。
第二个问题,Std/Mean跟数据条数没有关系的呀,蛇佬的意思应该是说观察某一特征在训练集上的std/mean以及测试集合上的std/mean,相差不大的话就保留该特征?但是我并不觉得这是一个好方法,我们主要考查的是分布P(y|x)是不是线上线下一致的,所以说特征选择一般来说就是在验证集上做的,假设验证集取得够好(够好的意思是说验证集的分布和测试集的分布是一致的,如何保证我的经验就是保证取特征的逻辑一致基本就没有问题,至于有没有数学上的方法我就不清楚了,你可以看看数理统计相关的知识,来测试两个分布的差异性,比如KL散度),那么我们在验证集上做特征选择才是有意义的。

@aa147138
Copy link
Author

你说的有道理,我理解错蛇佬的意思了。另外保证在验证集和测试集取特征的逻辑一致那不是很容易的吗,把训练集和测试集concat起来之后再一起提取特征不就是一致的吗

@fanfanda
Copy link
Owner

逻辑一致本身就是需要对数据进行考量,滑动窗口提取特征就是为了保持逻辑一致性,滑动窗口虽然损失了部分数据,但是却保证了逻辑一致性

@aa147138
Copy link
Author

虽然还是不理解保持逻辑一致性是什么意思,但是还是谢谢大佬

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants