精华内容
下载资源
问答
  • 核主成分分析(Kernel Principal Component Analysis, KPCA) PCA方法假设从高维空间到低维空间的函数映射是线性的,但是在不少现实任务中,可能需要非线性映射才能找到合适的低维空间来降维。 非线性降维的额一种常用...
  • 核主成分分析法,使用python实现。应对非线性数据,先使用核技巧映射高维使之线性可分,之后再用PCA方法将高维降到低维,理论上可从无穷维降到一维或二维,将数据变为线性可分。此程序中既包含了手工制作的KPCA全...
  • 核主成分分析法 matlab源代码,非常好的一个例子 核主成分分析法 matlab源代码,非常好的一个例子
  • 主成分分析(PCA)、核主成分分析(KPCA)和概率主成分分析(PPCA)是已经取得广泛应用的特征提取方法。提出一种基于概率核主成分分析(PKPCA)的检测液晶屏幕亮点的方法。作为对PPCA的一种非线性扩展,PKPCA在PPCA...
  • 核主成分分析法matlab源代码

    热门讨论 2011-11-23 10:07:12
    核主成分分析法 matlab源代码,非常好的一个例子
  • 核主成分分析_KPCA

    2017-07-04 22:23:05
    核主成分分析
  • 核主成分分析算法

    2018-03-21 22:04:43
    主成分析算法,可用于多目标优化和决策问题,比较主成分分析有更多的优势
  • 核主成分分析

    2017-09-30 10:15:40
    一个核主成分分析的m文件,文件有详细的注释解读代码,简洁易懂,适合初学者,亲测可用
  • 核主成分分析在三维综合信息成矿预测中的应用研究,段长生,王绪本,三维综合信息成矿预测是深部成矿预测的关键技术之一。本文以湖北省铜绿山铜铁矿为研究区,在收集勘探和生产基础资料基础上,对地
  • 核主成分分析KPCA,核主成分分析 matlab,Python源码
  • PCA是一种常用的数据分析方法。**PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。**这样做的好处是数据的主要信息还能保留下来,同时数据的维度降低...

    PCA是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 这样做的好处是数据的主要信息还能保留下来,同时数据的维度降低了,并且变换后的维度两两不相关。

    为什么需要PCA?

    我们知道维数越大通常越难处理,在机器学习中,得到的数据维数通常都很高,处理起来比较麻烦,资源消耗很大,因此对数据进行降维处理是很必要的。
    但是降维就意味着信息丢失吗?多少是有一点的。但是总有一些情况,让我们能够在信息损失相对较少的同时完成降维。比如:
    1.如果某两个特征之间存在关联。举个比较极端的的例子,一个正方形的边长和它的面积,各属于两个特征,但是知道了边长面积肯定是确定的,那么就可以直接丢掉一列(边长或面积)。
    2.如果某个维度存在并没有什么价值。这里举个比较经典的例子,就是电视转播球赛,把现场的三维转成平面的二维呈现在你眼前,减少了一维但是对于观众来说,并无太大影响。
    3…
    通过减少冗余信息,降低了维度,让数据处理更加容易,而有大部分有价值的信息都保留下来。而到底哪些信息是重要的?哪些可以删去?在这里需要注意,降维并不是简单的删除某个维度,大部分情况下,降维的同时基也改变了。 那么如何选择新的基就是PCA需要解决的问题。

    理论基础

    向量的表示及基变换

    内积与投影

    两个维数相同的向量的内积被定义为:
    (

    展开全文
  • 核主成分分析方法(KPCA原理篇)

    千次阅读 2020-10-07 21:03:58
    (1)方法的基本思想是:对样本进行非线性变换,在变换空间进行主成分分析来实现在原空间的非线性主成分分析; (2)算法步骤: ① 通过函数计算矩阵,其元素为。其中和为原空间的样本,是函数。 ② 计算K的...

    (1)方法的基本思想是:对样本进行非线性变换,在变换空间进行主成分分析来实现在原空间的非线性主成分分析;

    (2)算法步骤:

    ① 通过核函数计算矩阵K=\{ K_{ij}\}_{n \times n},其元素为K_{ij}=k(x_i,x_j)。其中x_ix_j为原空间的样本,k(\cdot,\cdot)是核函数。

    ② 计算K的特征值,并从大到小进行排列。找出由特征值对应的特征向量\alpha^l(表示第l个特征向量),并对\alpha^l进行归一化(||\alpha^l||=1)。

    ③ 原始样本在第l个非主成分下的坐标为:

                                                                      Z^l(x)=\sum^n_{i=1}\alpha_i^lk(x_i,x)

    这里的x_i是指第i个样本,\alpha^l的维度与样本数相同。如果选择m个非线性主成分(即计算K的前m大个特征值及相应的特征向量),则样本x在前m个非线性主成分上的坐标就构成了样本在新空间中的表示[Z^1(x),Z^2(x),...,Z^m(x)]^T

    展开全文
  • 机器学习:Kernel PCA核主成分分析

    千次阅读 2020-07-12 17:59:02
    核主成分分析(Kernelized PCA,KPCA)利用核技巧将d维线性不可分的输入空间映射到线性可分的高维特征空间中,然后对特征空间进行PCA降维,将维度降到d′ 维,并利用核技巧简化计算。也就是一个**先升维后降维【数据...

    1. kernel PCA 概述

    核主成分分析(Kernelized PCA,KPCA)利用核技巧将d维线性不可分的输入空间映射到线性可分的高维特征空间中,然后对特征空间进行PCA降维,将维度降到d′ 维,并利用核技巧简化计算。也就是一个**先升维后降维【数据先通过核函数(kernel function)转换成一个新空间,也就是升维过程,然后再用PCA进行降维处理】**的过程,这里的维度满足d′<d<D
    在这里插入图片描述
    线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而在有些时候,高维空间是线性不可分的,需要找到一个非线性函数映射才能进行恰当的降维,这就是非线性降维。

    KPCA就是一种非线性降维方法

    2. KPCA的实施步骤

    以 Radial Basis Function(RBF) kernel PCA(不同的核,体现在代码上仅仅是一处细微的差别)为例进行说明:

    • 计算核矩阵***K***【相似度矩阵】
      在这里插入图片描述
      这是最为常见的RBF(Rational Basis Function)核函数,也有多项式核:
      在这里插入图片描述
      和sigmoid型(hyperbolic tangent)核:
      在这里插入图片描述
      其矩阵形式也即:
      在这里插入图片描述
    • center the K
      在这里插入图片描述
      其中 1n是 n×n 的元素值全为1/n矩阵
    • 对 K′进行特征值分解,获得对应于前 k个特征值的特征向量。与标准PCA算法不同的是,这里获得特征向量不再是 principal component axes,而已经是全部样本在这些轴上的投影了,也即是我们所需的进行降维后的数据了。

    3. Python实现KPCA与PCA

    3.1 Case1:

    import numpy as np
    import matplotlib.pyplot as plt
    
    #构建样本数据
    A1_mean = [1, 1]
    A1_cov = [[2, .99], [1, 1]]
    A1 = np.random.multivariate_normal(A1_mean, A1_cov, 50)
    A2_mean = [5, 5]
    A2_cov = [[2, .99], [1, 1]]
    A2 = np.random.multivariate_normal(A2_mean, A2_cov, 50)
    A = np.vstack((A1, A2))
    B_mean = [5, 0]
    B_cov = [[.5, -1], [.9, -.5]]
    B = np.random.multivariate_normal(B_mean, B_cov, 100)
    f = plt.figure(figsize=(10, 10))
    ax = f.add_subplot(111)
    ax.set_title("$A$ and $B$ processes")
    ax.scatter(A[:, 0], A[:, 1], color='r')
    ax.scatter(A2[:, 0], A2[:, 1], color='r')
    ax.scatter(B[:, 0], B[:, 1], color='b')
    
    #KPCA处理结果
    from sklearn.decomposition import KernelPCA
    kpca = KernelPCA(kernel='cosine', n_components=1)
    AB = np.vstack((A, B))
    AB_transformed = kpca.fit_transform(AB)
    A_color = np.array(['r']*len(B))
    B_color = np.array(['b']*len(B))
    colors = np.hstack((A_color, B_color))
    f = plt.figure(figsize=(10, 4))
    ax = f.add_subplot(111)
    ax.set_title("Cosine KPCA 1 Dimension")
    ax.scatter(AB_transformed, np.zeros_like(AB_transformed), color=colors)
    
    #PCA处理结果
    from sklearn.decomposition import PCA
    pca = PCA(1)
    AB_transformed_Reg = pca.fit_transform(AB)
    f = plt.figure(figsize=(10, 4))
    ax = f.add_subplot(111)
    ax.set_title("PCA 1 Dimension")
    ax.scatter(AB_transformed_Reg, np.zeros_like(AB_transformed_Reg), color=colors)
    

    构建的样本数据散点图如下:
    在这里插入图片描述
    KPCA处理后的结果如下:
    在这里插入图片描述
    PCA处理的结果如下:
    在这里插入图片描述
    从上述三张图片可以看出,针对非线性数据降维,KPCA的降维效果优于PCA方法

    3.2 Case2:

    样本数据散点图如下:
    在这里插入图片描述
    将样本数据升维又降维处理后的结果如下图:
    在这里插入图片描述
    具体实现代码

    #构建样本数据
    from sklearn.datasets import make_moons
    from scipy.spatial.distance import pdist, squareform
    
    X, y = make_moons(n_samples=200, random_state=123)
    plt.scatter(X[y==0, 0], X[y==0, 1], color='r', marker='^', alpha=.4)
    plt.scatter(X[y==1, 0], X[y==1, 1], color='b', marker='o', alpha=.4)
    
    #KPCA处理结果
    def rbf_kpca(X, gamma, k):
        sq_dist = pdist(X, metric='sqeuclidean')
                                # N = X.shape[0]    
                                # sq_dist.shape = N*(N-1)/2
        mat_sq_dist = squareform(sq_dist)
                                # mat_sq_dist.shape = (N, N)
        # step 1
        K = np.exp(-gamma*mat_sq_dist)
    
        # step 2
        N = X.shape[0]
        one_N = np.ones((N, N))/N
        K = K - one_N.dot(K) - K.dot(one_N) + one_N.dot(K).dot(one_N)
    
        # step 3
        Lambda, Q = np.linalg.eig(K)
        eigen_pairs = [(Lambda[i], Q[:, i]) for i in range(len(Lambda))]
        eigen_pairs = sorted(eigen_pairs, reverse=True, key=lambda k: k[0])
        return np.column_stack((eigen_pairs[i][1] for i in range(k)))
    
    #调用上述自定义函数
    X_kpca = rbf_kpca(X, gamma=15, k=2)
    
    #将降维处理后的数据绘制出来
    fig, ax = plt.subplots(1, 2, figsize=(8, 4))
    ax[0].scatter(X_kpca[y==0, 0], X_kpca[y==0, 1], color='r', marker='^', alpha=.4)
    ax[0].scatter(X_kpca[y==1, 0], X_kpca[y==1, 1], color='b', marker='o', alpha=.4)
    label_count = np.bincount(y)
                                    # 统计各类别出现的次数
                                    # label_count[0] = 500
                                    # label_count[1] = 500
    ax[1].scatter(X_kpca[y==0, 0], np.zeros(label_count[0]), color='r')
    ax[1].scatter(X_kpca[y==1, 0], np.zeros(label_count[1]), color='b')
                                    # y轴置零
                                    # 投影到x轴
    ax[1].set_ylim([-1, 1])
    ax[0].set_xlabel('PC1')
    ax[0].set_ylabel('PC2')
    ax[1].set_xlabel('PC1')
    plt.show()
    

    注:核函数处理非线性分离效果很好,但是一不小心就可能导致拟合过度。

    参考文献:

    1. http://blog.csdn.net/u013719780
    2. https://blog.csdn.net/lanchunhui/article/details/50492482

    展开全文
  • 要在只有标准主光谱和次光谱可用的情况下转移校准模型,则可以使用基于主成分分析(PCA)和核主成分分析(KPCA)的联合光谱空间(称为JPCA或JKPCA)方法建议的。 作为主光谱和从光谱共享的特征子空间,JPCA和JKPCA中...
  • LTSA算法利用数据的局部结构构造一种特殊的核矩阵,然后利用该核矩阵进行核主成分分析。本文针对局部切空间对齐这种流形学习算法,重点研究了LTSA算法与核PCA的内在联系。研究表明,LTSA在本质上是一种基于核方法的...
  • 预处理(4):python实现用scikit-learn的核主成分分析(核PCA)-分离半月形 如果面对的是非线性问题(在现实世界中可能会遇到相当多这样的问题),像PCA和LDA这样的线性变换降维技术可能并不是最好的选择。 现介绍...

    python实现用scikit-learn的核主成分分析(核PCA)-分离半月形

    如果面对的是非线性问题(在现实世界中可能会遇到相当多这样的问题),像PCA和LDA这样的线性变换降维技术可能并不是最好的选择。 现介绍涉及核支持向量机的概念的核版PCA,或叫作 KPCA。讨论如何利用核PCA把不可线性分离的数据转换至适合线性分类器的新的低维子空间。

    from sklearn.decomposition import KernelPCA
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.datasets import make_moons
    
    # 创建二维数据集,其中100个样本组成两个半月形
    X, y = make_moons(n_samples=100, random_state=123)
    plt.scatter(X[y == 0, 0], X[y == 0, 1],
                color='red', marker='^', alpha=0.5)
    plt.scatter(X[y == 1, 0], X[y == 1, 1],
                color='blue', marker='o', alpha=0.5)
    plt.show()
    scikit_kpca = KernelPCA(n_components=2, kernel='rbf', gamma=15)
    X_skernpca = scikit_kpca.fit_transform(X)
    
    plt.scatter(X_skernpca[y == 0, 0], X_skernpca[y == 0, 1],
                color='red', marker='^', alpha=0.5)
    plt.scatter(X_skernpca[y == 1, 0], X_skernpca[y == 1, 1],
                color='blue', marker='o', alpha=0.5)
    
    plt.xlabel('PC1')
    plt.ylabel('PC2')
    plt.tight_layout()
    # plt.savefig('images/05_19.png', dpi=300)
    plt.show()
    

    运行结果图:
    三角形符号的半月代表一类样本,而圆符号的半月代表另一类,这两个半月形显然不能线性可分
    在这里插入图片描述
    线性可分:
    在这里插入图片描述

    展开全文
  • 本文将在前一篇博客学习笔记|主成分分析(PCA)及其若干应用的基础上介绍核主成分分析(Kernel Principle Component Analysis, KPCA)。
  • 它使用的默认是字符串,默认情况下可以正常输出,但是切换成高斯时会报错 <code>kpca(finance,kernel="rbfdot",features=2) Error in rbfdot(length = 4, lambda = 0.5...
  • 任何股票都会同时面临许多不同的风险因素。 风险因素之间的共线性通常使得难以确定有效因素。... 结果表明,核主成分分析和多因素选股模型的结合得到了很好的验证,可以高概率击败市场,有效地克服了随机选股的问题。
  • kpca 核主成分分析

    2010-12-10 22:45:56
    kpca 核主成分分析,别人写的,据说很好用,跟大家分享一下
  • 1. 核化线性降维   线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而在有些时候,高维空间是线性不可分的,需要找到一个...  下面我们将要介绍的核主成分分析(KPCA)就是一种经典的核化线性降维...
  • 文章目录KPCAKPCA, PCA与...核主成分分析-kernel principal component analysis,是一种用于非线性分类的降维工具,实现非线性映射降维 右图维典型的非线性分类问题 KPCA, PCA与LDA PCA:主要用于线性非监督学习...
  • 核主成分分析算法MATLAB代码
  • 求解核主成分分析模型的技术关键是确定核矩阵端部的较大特征对。把求解大规模对称矩阵端部特征对问题的基本方法-Lanczos算法应用于核主成分分析模型的求解,设计了大样本核主成分分析模型求解的实用算法。在clapack...
  • 自编matlab核主成分分析程序
  • 用matlab实现kpca(核主成分分析法)

    万次阅读 多人点赞 2019-05-16 15:50:13
    核主成分分析法是对非线性的高维数据进行降维的一种方法,理论部分这里就不再介绍了,我是在300×12维的数据上进行降维的,代码如下: data=Untitled; [Xrow, Xcol] = size(data); % Xrow:样本个数 Xcol:样本属性...
  • 主成分分析的经典图像如下 直观的解释就是,在长箭头方向上,数据点要比短箭头方向上分散。如果用长箭头的方向来区分样本点,基本上就能代表长短两个方向。那么我们就可以用长箭头作为分类、回归...
  • 一种新的非线性“主成分分析(PCA)”方法被提出了。 通过对函数的积分,利用非线性映射,我们可以有效地计算与输入空间相关的高维特征空间中的主成分。 例如,在图像中所有可能的d个像素的空间。 我们给出了该...
  • 核主成分分析(Kernel-PCA)

    万次阅读 多人点赞 2014-06-13 17:13:09
    核主成分分析

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,241
精华内容 4,096
关键字:

核主成分分析