machine-learning - 使用高斯分布自动选择异常检测的特征
问题描述
对于某些数据,我们可能需要手动创建特征,这些特征是早期特征的组合,以获得更好的算法。下面的分布(以及任何其他分布是椭圆且其轴未与特征轴对齐的分布)是高斯分布不起作用的简单示例。
在那门课程中被告知,多元高斯分布最适合它,或者我们可以开发一个新特征 x_3 = x_2 - x_1 和 x_4 = x_2 + x_1,并使用这两个新特征作为椭圆的轴,因为这些轴椭圆将不再倾斜,正态高斯分布可以工作。
我想自动化这个新的特征选择,并认为使用 PCA(具有高方差 %)将有助于创建“线性类型”的新特征,如 x_2 - x_1。这张图片中的长对角黑线(来自与上面相同的课程)正是我们所需要的,这条黑线是使用 PCA 生成的。
上面的方法有用吗?有没有比我们能做的更好的方法来自动生成新特征(线性类型和其他类型)?神经网络和内核是我也想到的东西,但我有一种预感,它们在计算方面会非常昂贵。
解决方案
您正在寻找的问题系列称为降维。是的,PCA 是此类问题的默认方法,完全类似于线性回归是回归的默认方法。
但是,它不会找到 x_2 / x_1 形式的特征,因为这是一个非线性变换。它将找到的特征将采用 a_1 x_1 + a_2 x_2 的形式(在平均中心坐标中)。有许多方法可让您自动查找此类功能。您提到的内核 PCA 就是这样一种方法,尽管与所有内核方法一样,它不会显式搜索功能,而只会从预定义的集合中选择最有用的功能。在可以搜索无限类非线性特征的方法中,我个人最喜欢的是遗传编程. 它主要关注回归,但应该直接将其应用于降维。请注意,这不是开箱即用的东西,需要一些试验和错误。如果您决定采取这条路线,这里有一些有用的资源:3和4。
搜索大类非线性的方法本质上计算成本很高。如果性能至关重要,请研究生成分布的系统,确定可能有用的一类非线性,并使用内核 PCA 之类的东西进行特征选择。或者采用类似于3中描述的方法,在一次缓慢但自动的研究中从数据中提取有用的特征,然后冻结特征搜索并让位于其顶部的线性选择器为每个特定测量做出决策。
推荐阅读
- c++ - 运行由 protoc 生成的文件时出现分段错误
- plugins - 在 Dynamics CRM 中的自定义按钮后面创建插件
- python - 根据条件选择 Pandas 数据框中的列
- mysql - 可以在查询中使用 IF 吗?
- c - 如何使用 ncurses 修复箭头键的延迟?
- python - 如何在 Python 中使用 OAuth 对 Wikimedia Commons 查询服务进行身份验证?
- java - 多个请求进入 Java gRPC Server 的同一个线程
- java - 如何将列表对象绑定到百里香形式?
- opencv - OpenCV cv::Mat to System::Drawing::Bitmap throw System.ArgumentException (OpenCV C++/CLI, x64)
- python - Python 在文件中搜索字符串时提高性能