之前说到数据降维的方法是寻找到一个所有样本到其投影误差的投影平面,那么升维其实就是式子里的矩阵移到另一边即可:
,注意这里没有用x表示是因为除非本身所有样本点的投影误差都很小,可以近似认为就在线上,因为这里的升维并不是完全求出原来的数据矩阵,只是将其在投影平面上的对应点近似认为是原来的样本点,还是存在一定误差的。
在实际应用的场景中,并不是说只有没有标签的数据才能应用PCA算法,假如原始数据集是10000维的,我们可以先提取原来的标签y,在对每个数据都降维之后,再把原来的标签加上,也就是说并不局限于一定要用于为无标签的数据进行分类运用,注意,在降维并将数据训练后,预测样本x需要在原来的PCA映射下转换成对应的降维数据z再进行预测,PCA只会运用于训练集,而不会运用在验证集和预测集上;还有就是一般来说二维或三维的数据比较容易可视化,所以我们会为了可视化数据将其降维到二维或三维。
有时候我们会看到在运用PCA算法后,和其他算法相比其过拟合程度降低了,但这并不意味着它就是用于降低过拟合的。我们可以回顾用于防止过拟合的方法:正则化,PCA在降维的过程中有舍弃一些信息,那么在降维后过拟合程度降低很正常,可是它并没有考虑到y值,只是纯粹地为了降低维度,在保证99%方差被保留的情况下进行的,甚至舍弃的信息是重要的也很正常;而正则化是加在有y的代价函数里的,其运行过程的逻辑有判断过哪个参数不重要,舍弃的参数信息对于模型的构建是不重要的。所以有时候可能算法运用的结果显示是好的,但其内在逻辑并没有考虑到,只是运气好,如果这是中间过程的步骤,很容易在优化后期发现需要重新推倒重来。
还有一点比较重要的是不要把应用PCA算法当成是必要的,就跟之前学的一样,解决一个学习问题时,我们最好能先构建一个比较粗糙的模型去尝试,然后再在他的基础上进行优化,要把PCA当成是优化方法的一种,而不是必备步骤。
异常检测(Anomaly detection)
顾名思义,就是对一个样本是否异常的判断。举一个飞机引擎的例子,假设我们构建了一个飞机引擎的模型,那么如果这个新的样本点落在离训练集还有测试集比较远的地方,这是否是一个异常样本,需要我们进一步补充特征来定义它,还是说它只是比较特殊。
也就是说,我们需要重新选定训练集、验证集,构建并判断函数,如果是就判断为异常样本,这里的
看具体情况而定。
一般需要我们应用异常检测算法的场景,都是工业生产判断产品是否需要重新加工,或者网站检测是否有用户被异常登录需要被验证身份这种。