大家好,
我最近开源了一个叫 ganfs(生成对抗网络特征筛选)的 Python 包,想分享给社区
先说问题:在高维数据里挑出最有用的特征,往往是个很大的瓶颈传统方法(比如过滤式包裹式嵌入式)通常要么很难扩展开来,要么抓不住复杂的非线性关系,要么就得靠领域专家手动判断哪些特征重要
我的解法(ganfs):我想用对抗学习把这个过程自动化ganfs 会在你的数据集上训练一个生成对抗网络等 GAN 学到了底层的数据分布后,算法会对判别器施加扰动
通过观察判别器对这些扰动的反应,ganfs 会自动给特征打分排序,核心思路就是看哪些特征“最难伪造”本质上,它是在没有领域监督的情况下,自己学出规律并提取出信息量最大的特征
这个算法最早是我在做大规模 DDoS 检测研究时开发的(那种场景下挑对网络特征特别关键),不过这个包本身不限定领域,干什么都行
用法也很简单:直接 pip install ganfs 就能装它的 API 设计和 scikit-learn 的转换器差不多,上手很容易
目前我正在优化小数据集下的 GPU 显存占用,不过功能已经完整可用了
很希望大家能拿自己的数据试试,然后给我反馈——不管是整体架构代码结构,还是遇到的 bug 都行关于算法原理或者实现细节的问题,我也很乐意解答!