在百面机器学习一书中,第一章特征工程中的第三节高维组合特征处理,有2个一阶离散特征,每个特征的可选择类别分别为m和n,如果进行常规组合特征,可以得到的m*n个组合特征,在m和n非常大的情况下,会使得模型的参数非常庞大(例如逻辑回归),因此需要对高维组合特征进行处理。

书中提到将这两个特征分别用低维的k维向量表示,这里具体是如何表示?如此处理,模型参数会从m*n减少到m*k+n*k,这又是如何得到的?

这里贴出百面机器学习知乎上的电子书:https://www.zhihu.com/pub/book/119582175

谢谢大家!


poly2-》fm


利用矩阵分解 将m*n的矩阵分解为一个m*k和一个k*n的矩阵乘积


PCA和全连接都可以


降维可以吗?传统的pca,或者dl里用一个小一点的全连接层fine tune一下


特意去了翻了一下纸质书,其实书中(1.4)的公式下面第三行已经说了,「熟悉推荐系统的同学应该看出这个就等价于矩阵分解」。设这个原始的高维稀疏矩阵是 [公式] ,需求就是要找到两个低维稠密矩阵 [公式][公式] ,使得:

[公式]

这样就等于我们用两个参数量为m*k的矩阵P以及n*k的矩阵Q,来近似表示原来有m*n个参数的矩阵R。

求解两个低维矩阵P,Q参数的过程用到了机器学习的方法,用恢复最小误差作为目标函数,具体的求解过程你可以去搜索关键词 推荐系统的Matrix Factorization。

当然,高维稀疏特征的低维表示除了文中提到的这种方法,还有SVD,NMF等等,也可以去搜索相应的关键词。


特征降维其实从大的方面来讲有两种思路可以走:

  • 基于原有的特征进行降维
  • 基于原有的特征进行筛选

第一种降维方法中,常见的有:PCA、LDA、SVD、稀疏自编码、word2vec等

第二种筛选的方法主要是对原有特征和目标label进行重要性分析,将那些不重要的特征进行剔除,比如使用gbdt、random forest等模型进行简单的模型训练,并输出特征的权重,继而进行筛选

但有时为了能更有效地找出输入数据内部的结构和模式,会寻找一组超完备基向量,其维度可能比输入的特征维度还要高。

补充一下特征降维的好处:

  • 数据维度降低,存储所需的空间减少
  • 减少计算和训练模型的时间
  • 剔除无用或关系不大的特征,减小对模型的影响,提高模型可用性
  • 删除冗余特征(比如某几维特征存在多重共线性)
  • 便于数据可视化

更多关于演算法和特征方面的知识可以关注我的公众号进行技术交流。

http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDU3OTgyOQ==hid=1sn=8fd2e718341c2dfb59493084c3ed7a76scene=18#wechat_redirect?

mp.weixin.qq.com


PCA,SVD等传统降维方法,当然DNN也可以干这个事


类似于fm模型,将每个特征处理为低维特征


推荐阅读:
相关文章