为了将矩阵X的行归一化为单位长度,我通常使用: X /= np.linalg.norm(X, axis=1, keepdims=True) 尝试为算法优化此操作时,我非常惊讶地发现,在我的机器上写出归一化的速度大约快了40%: X /= np.sqrt(X[:,0]**2+X[:,1]**2+X[:,2]**2)[:,np.newaxis]X = np.
在这段时间里(特别是在Netflix竞赛中),我总是会遇到这个博客(或排行榜论坛),他们提到如何通过对数据应用简单的SVD步骤来帮助他们减少数据的稀疏性,或者总体上提高他们手头算法的性能。我试着思考(很长一段时间),但我不能猜测为什么会这样。一般来说,我手中的数据是非常嘈杂的(这也是bigdata的有趣部分),然后我确实知道一些基本的特征缩放东西,比如对数变换东西,平均归一化。但是像SVD这样的东西有什么用呢?假设我有一个巨大的用户评分movies..and矩阵,然后在这个矩阵中,我实现了一些版本的推荐系统(比如协同过滤):2) With SVD
它有什么帮助?