优点:主成分分析是一项多用途技术,实用效果非常好。它部署起来快速、简单,也就是说,你可以很方便地测试算法性能,无论使用还是不使用主成分分析。此外,主成分分析还有好几种变体和扩展(如:核主成分分析(kernel PCA),稀疏主成分分析(sparse PCA)),用以解决特定的问题。 缺点:新创造出来的主成分并不具备可解释性,因而在某些情况下,新特征与应用实际场景之间很难建立起联系。此外,你仍然需要手动设置、调整累积可解释方差的阈值。 实现: Python - R - https://stat.ethz.ch/R-manual/R-devel/library/stats/html/prcomp.html 5.2 线性判别分析 线性判别分析不是隐含狄利克雷分布,它同样用来构造原始特征集的线性组合。但与主成分分析不同,线性判别分析不会最大化可解释方差,而是最大化类别间的分离程度。 因此,线性判别分析是一种监督式学习方式,它必须使用有标记的数据集。那么,线性判别分析与主成分分析,到底哪种方法更好呢?这要视具体的情况而定,“没有免费的午餐”原理在这里同样适用。 线性判别分析同样依赖于特征值的数量级,你同样需要先对特征值做归一化处理。 优点:线性判别分析是一种监督式学习,基于这种方式获取到的特征可以(但并不总是能)提升模型性能。此外,线性判别分析还有一些变体(如二次线性判别分析),可用来解决特定的问题。 缺点:与主成分分析一样,新创造出来的特征不具有可解释性。而且,你同样要手动设置、调整需要保留的特征数量。线性判别分析需要已经标记好的数据,因此,这也让它更加接地气儿。 实现: Python - #sklearn.discriminant_analysis.LinearDiscriminantAnalysis R - https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/lda.html 5.3 自编码机 自编码机是一种人工神经网络,它是用来重新构建原始输入的。例如,开奖,图像自编码机是训练来重新表征原始数据的,而非用以区分图片里面的小猫、小狗。 但这有用吗?这里的关键,是在隐含层搭建比输入层和输出层更少数量的神经元。这样,隐含层就会不断学习如何用更少的特征来表征原始图像。 因为是用输入图像来作为目标输出,自编码机被视为无监督学习。它们可被直接使用(如:图像压缩)或按顺序堆叠使用(如:深度学习)。 优点:自编码机是人工神经网络中的一种,这表示它们对某些特定类型的数据表现会非常好,比如图像和语音数据。 缺点:自编码机是一种人工神经网络。这就是说,它们的优化需要更多的数据来进行训练。它们并不能作为一般意义上的数据降维算法来用。 实现: Python - https://keras.io/ R - 小结 基于我们的经验,以下是一些有用的建议: 练习,练习,练习。要找到一些数据集,趁热打铁。了解这些算法只是一个开头,掌握好它们就需要你不停地实践。 掌握好基础。掌握这里算法,能为你去运用机器学习打下坚实的基础,因为其他所有的算法都是基于上述算法的一些变形。举例来说,先掌握主成分分析和线性判别分析之前的区别,而后再去学习线性判别分析的相关细节以及二次线性判别分析之间的差别,效果会更好。 铁律,好的数据远胜于花哨的算法。在机器学习应用领域,算法总是可以替换的;而有效的探索性分析、数据清洗与特征工程总是能大力提升你的结果。我们会经常提及这一点,因为这就是该死的真相! 原文链接: https://elitedatascience.com/machine-learning-algorithms https://elitedatascience.com/dimensionality-reduction-algorithms (责任编辑:本港台直播) |