主成分分析(PCA)和线性判别分析(LDA)

线性判别分析(LDA)与主成分分析(PCA):原理、实现与应用 线性判别分析(LDA)与主成分分析(PCA)是两种重要的降维技术,它们在机器学习、数据分析和模式识别中都有着广泛的应用。LDA通过最大化类间距离和最小化类内距离实现对数据的分类,而PCA通过寻找数据的主成分实现降维,保留原始数据的大部分信息。本文详细介绍了LDA和PCA的原理、数学公式,并通过Python代码和LaTeX公式进行了详细解释。希望本文能够帮助读者更好地理解这两种降维方法的原理和实践步骤,并能够在实际项目中灵活运用这些方法。线性判别分析 - 维基百科主成分分析 - 维基百科。 阅读详情
  • 参考

PCA:

PCA发挥作用的实例(实践证明)https://www.jianshu.com/p/0227aa77425f

PCA前的数据预处理:去中心,标准化(理论取胜)https://blog.youkuaiyun.com/u010182633/article/details/45918737

训练集和测试集上的做法(操作上的细节)http://wenda.chinahadoop.cn/question/5926

别人的总结https://blog.youkuaiyun.com/viewcode/article/details/8789524

 

LDA:

LDA原理(二分类以及多分类):https://www.cnblogs.com/jerrylead/archive/2011/04/21/2024384.html

图文代码丰富https://blog.youkuaiyun.com/ruthywei/article/details/83045288

  • 总结

PCA:

对高斯分布有效,因为高斯分布不相关就是独立

在做之前需要进行去中心化和标准化(无量纲),因为去中心化后变换就只用正交变换来去相关,后面的推导容易,无量纲化是考虑到量纲会影响方差的大小比较。

PCA后的特征是正交的

PCA挑选的特征只是对于保留所有数据的分散性有用,对于数据分类未必有用,LDA是针对数据分类的

PCA中协方差矩阵的特征值之和,就是所有样本(去中心、标准化后)与中心(即坐标原点)的距离平方和

如果使用到分类中,适合能够用方差分类的数据,如

0?wx_fmt=png

 

LDA:对于K分类,最多降到K-1维空间上面,并且选出来的特征未必正交

适合使用均值可以区分开的数据

0?wx_fmt=png

 

主成成分分析-PCA 1、 问题描述 下表1是某些学生的语文、数学、物理、化学成绩统计: 首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系。那么一眼就能看出来,数学、物理、化学这三门课的成绩构成了这组数据的主成分(很显然,数学作为第一主成分,因为数学成绩拉的最开)。为什么一眼能看出来?因为坐标轴选对了!下面再看一组学生的数学、物理、化学、语文、历史、英语成绩统计,见表2,还能不能一眼看出来 阅读详情

相关推荐

主成分分析(PCA)和线性判别分析(LDA)原理简介

本文整理自下面的博客,对PCA和LDA的原理进行介绍,并对比了其不同点。 1).主成分分析(PCA)原理详解 2).线性判别分析LDA与主成分分析PCA 3). PCA(主成成分分析)和LDA(线性判别分析)详解-共性和区别 4).什么时候使用PCA和LDA? 5).PCA的数学原理 6).Dimensionality Reduction——LDA线性判别分析原理篇 7).主成分分析...

生命在于折腾! 3万+

机器学习中特征的处理及选择

基础概念 特征工程是通过对原始数据的处理和加工,将原始数据属性通过处理转换为数据特征的过程,属性是数据本身具有的维度,特征是数据中所呈现出来的某一种重要的特性,通常是通过属性的计算,组合或转换得到的。比如主成分分析就是将大量的数据属性转换为少数几个特征的过程。某种程度而言,好的数据以及特征往往是一个性能优秀模型的基础。 既然叫特征工程,自然涵盖了很多内容,而其中涉及到的比较重要的部分是特征的处理...

weixin_34252090的博客 1128

PCA(主成分分析)+LDA(线性判别分析)+区别

PCA(主成分分析)+LDA(线性判别分析)+区别 一、LDA算法   基本思想:LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。   浅显来讲,LDA方法的考虑是,对于一个多类别的分类问题,想要把它们映射到一个低维空间,如一维空间从而达到降维的目的,我们希望映射之后的数据间,两个..

data+scenario+science+insight 766

主成分分析(PCA)与线性判别分析(LDA)的区别与联系

刚整理完PCA的内容,又记得之前用过LDA但是并没有在这里整理,所以今天把这两个算法整理下,方便以后查阅。

梁小憨憨的博客 1万+

线性判别分析与主成分分析及其相关研究评述_王晓慧.pdf

:线性判别分析(LDA)和主成分分析(PCA)都在各个领域有着重 要的作用。他们各自抓住样本在特征空间的不同特征, 一般情况下更趋向于使 用LDA, 因为LDA直接处理类间的分析问题, 而PCA则没有突出类的结构。 然而实验证明PCA在某些问题上又明显优于LDA。于是, 改进或结合使用 LDA与PCA成了非常必要的课题。现阶段在这个领域上已经有许多优秀的研 究成果, 本文简单的介绍了其中几种效果较好的相关分析方法, 其中又以混合 判别分析(HDA)最优。HDA不仅同时抓住了样本的判别信息和描述信息, 使PCA与LDA在各种情况下达到平衡, 而且在二维参数空间中提供了一系列 的分析方法, 更有利于解决小样本问题和高维问题。BoostedHDA的提出通过 用迭代的方法改进弱分类器, 避免了HDA复杂的参数搜索, 并得到一种统一 计算HDA的方法。文章将在第三部分引用一些已有的实验结果来验证HDA的 优越性。

PCA 主成分提取

PCA 主成分提取

机器学习---线性判别分析和主成分分析

机器学习—线性判别分析和主成分分析 1.通俗解释: 线性判别分析(Linear Discriminant Analysisi,LDA)与主成分分析(Principle Component Analysis,PCA)都是线性降维(Dimension Reduction)的算法,区别在于LDA是有监督的降维,而PCA是无监督的降维。LDA旨在寻找一个有标签的训练数据集上的最佳投影,是这个投影中同类的数据点较为集中,而不同类的数据点之间尽量分散,从而实现对新样本的判别。 PCA则是对于一个无标签的高维的训练样本集

J 1419

【R语言-生存分析之观察生存率计算】

全人群肿瘤登记资料常用的统计分析指标包括发病率、死亡率、现患率以及生存率等,其中肿瘤生存率是评估肿瘤治疗效果和肿瘤负担的必要指标,其计算涉及肿瘤患者的发病、 死亡和随访三个方面的资料, 数据整理和计算过程均较为复杂, 如何及时、 准确地计算肿瘤生存率, 并使其可以在不同地区、 不同人群、不同时期间被客观公正地比较和评价,仍然是统计学家们一直在研究的主题。

weixin_46579654的博客 5440

机器学习 | 线性判别分析LDA和主成分分析PCA

LDA的两种含义1 背景2 线性判别分析LDA3 主成分分析PCA4 LDA和PCA有什么区别和联系? 1 背景 聊到LDA,大部分可能都会想到是线性判别分析,甚至在面试的时候,我简历上明明写的是LDA主题模型,但面试官其实不太懂,直接就问了线性判别分析。。。所以今天我们就来聊一聊线性判别分析LDA以及和其很相近的PCA! 2 线性判别分析LDA 3 主成分分析PCA 4 LDA和PCA有什么区别...

RUC_Lee的博客 1829

ROS+Gazebo仿真入门:用TurtleBot3模拟扫地机器人全流程

本文详细介绍了如何利用ROS和Gazebo仿真平台,以TurtleBot3 Waffle Pi模型为核心,从零搭建并运行一个虚拟扫地机器人的全流程。内容涵盖仿真环境搭建、世界与机器人模型解析,并重点演示了SLAM建图、自适应蒙特卡罗定位以及全局与局部路径规划等核心算法实战,为机器人算法开发与验证提供了高效、低成本的解决方案。

sre5engineer的博客 1087

eda、gnm、anm究竟是个啥?

eda:主成分分析 gnm:高斯网络模型 anm:各向异性网络模型

药研猿的博客 1243

主成分分析(PCA)/线性判别分析(LDA)总结

1 PCA PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。 关于PCA的原理强烈推荐这篇文章PCA的数学原理 2 LDA 之前我们讨论的 PCA降维,对样本数据来言,可以是没有类别标签 y 的。如果我们做回归时,如果特征太多,那么会产生不相关特征引入、过度拟合等问题。我们可以使...

J~的博客 2049

华为OD机试真题 新系统 2026-09-06 Python&JS【仓储货物有序出库】

某仓储中心有一个货物堆放区,货物编号按乱序堆叠存放,只能从顶部取货,管理员需要将货物按编号从小到大取出。

MISAYAONE的博客 116

PCA(主成分分析)和LDA(线性判别分析)的异同处及应用场景

在机器学习领域,PCA和LDA都可以看成是数据降维的一种方式。但是PCA是无监督的,也就是说不需要知道样本对应的标签,而LDA是有监督的,需要知道每一个数据点对应的标签。 图的左边是PCA,它所作的只是将整组数据整体映射到最方便表示这组数据的坐标轴上,映射时没有利用任何数据内部的分类信息。因此,虽然做了PCA后,整组数据在表示上更加方便(降低了维数并将信息损失降到最低),但在分类上也许会变得...

weixin_41690708的博客 6628

软解调详解

在这个示例中,生成了一个随机的比特序列,将其调制为QPSK信号,添加了高斯白噪声,然后计算了每个比特的LLR,并根据LLR的符号进行了解调判决。软解调是一种基于接收信号的概率估计进行解调的方法。与传统的硬解调相比,软解调不仅考虑了接收信号的幅度和相位信息,还利用统计特性计算每个比特为0或1的概率,从而提高了解调性能。软解调过程中涉及的主要公式包括对数似然比(LLR)的计算公式、信号的概率分布函数以及解调判决公式等。软解调的计算处理流程包括信号接收、预处理、相位估计、LLR计算、解调判决和输出等步骤。

ahah12345678的博客 1226

使用Transformer实现自动调制识别(RML2016a)

image_size = 128 # resize重置输入大小patch_size = 2 # 从输入图片(信号看作图片)中将被提取的块大小# 分成 num_patches 个块num_patches = (image_size // patch_size) #(72/6)**2 横着裁剪),],return x)(x1, x1)# MLP.# Add MLP.x=x_train,y=y_train,filepath,round。

QAQIknow的博客 6276

数据降维:主成分分析PCA、线性判别分析LDA、基于核的KPCA

通过降维实现数据压缩 特征提取:将原始特征空间映射变换到新的特征子空间中去 特征提取可以理解为一种保持大部分相关信息,同时对数据进行压缩的一种方法。特征提取不仅可以用来提高学习算法的存储空间或计算效率 还可以通过减少维数灾难来提高预测性能,尤其是在使用了非正则化模型的时候。 from IPython.display import Image %matplotlib inline 1.通过主成分分析PCA实现无监督降维 主成分分析是一种广泛应用于不同领域的无监督线性变换技术,经常被用于特征提取和降维。 PC

AIHUBEI的博客 1万+

基于Simulink进行步进电机的重复控制仿真建模

目的:通过引入一个周期延迟环节来补偿系统的周期性误差,从而提高系统对周期性参考信号或扰动的跟踪性能。方法内部模型原理:在控制器中嵌入一个与周期性信号相关的模型(例如周期延迟环节),以实现对周期性误差的零稳态误差控制。滤波器设计:为了避免高频噪声放大,通常会在重复控制器中加入低通滤波器。优势对周期性信号具有良好的跟踪性能。不需要精确的数学模型即可实现高性能控制。挑战:需要合理设计重复控制器的参数以避免系统不稳定。

MHD0815的博客 382

线性判别分析(LDA), 主成分分析(PCA)

前言:    第二篇的文章中谈到,和部门老大一宁出去outing的时候,他给了我相当多的机器学习的建议,里面涉及到很多的算法的意义、学习方法等等。一宁上次给我提到,如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了。   谈到LDA,就不得不谈谈PCA,PCA是一个和LDA非常相关的算法,从

2675

SerDes系列之FFE均衡技术

FFE的基本结构可以在RX侧或TX侧实现,其基本工作原理相同:它通过从同一信号源应用适当的延迟来产生多径信号,然后对它们进行线性缩放和组合以消除信道ISI。

一只豌豆象的博客 4243

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

线性判别分析(LDA)与主成分分析(PCA)

简介 线性判别分析(LDA) 什么是LDA 线性判别分析(Linear Discriminant Analysis,LDA)是一种经典的降维方法。LDA是一种监督学习的降维技术,数据集的每个样本有类别输出。 LDA的特点 多维空间中,数据处理分类问题较为复杂,LDA算法将多维空间中的数据投影到一条直线上,将d维数据转化成1维数据进行处理。 对于训练数据,设法将多维数据投影到一条直线上,同...

weixin_44327656的博客 1616

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数据降维方法(主成分分析PCA、线性判别分析LDA)

机器学习数据降维方法推导(主成分分析PCA、线性判别分析LDA)

weixin_50232758的博客 1068

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)

版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com 前言: 第二篇的文章中谈到,和部门老大一宁出去outing的时候,他给了我相当多的机器学习的建议,里面涉及到很多的算法的意义、学习方法等等。一宁上次给我提到,如果...

weixin_34185320的博客 1330
上一篇: 机器学习算法选择策略
下一篇: python中的随机数生成
math_computer
博客等级 码龄8年 43粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值