精华内容
下载资源
问答
  • 降维

    2017-05-23 01:40:11
    为什么要降维? 找出规律,压缩数据量。...特征向量矩阵E的特点,E*E^T = E^T*E = I。 (2)PCA(主成分分析) 利用特征向量进行降维。 原理: 将矩阵与一个正交单位向量矩阵相乘,意味着在欧式空间上的

    为什么要降维?

    找出规律,压缩数据量。

    (1)特征值与特征向量

    M矩阵,λ常数,e非零列向量

    Me = λe (e为unit vector,第一个非零元素为正)


    特征向量是单位向量;特征向量之间正交;特征向量矩阵E的特点,E*E^T = E^T*E = I。

    (2)PCA(主成分分析)

    利用特征向量进行降维。

    原理:

    将矩阵与一个正交单位向量矩阵相乘,意味着在欧式空间上的旋转。

    求MM^T或者M^T的特征矩阵E,对高维数据进行旋转。

    原数据变成在新的坐标上的投影。

    新的坐标上,第一维是主特征向量指向的那个方向,能量最强。以后依次递减。使降维成为可能。

    (3)SVD(奇异值分解)

    r是A的秩(Rank)

    A[m*n] = U[m*r] ∑[r*r] V[n*r]^T

    U:左奇异向量(Left singular vectors),单位正交矩阵。

    ∑:奇异值矩阵(Singular values),对角阵。

    V:右奇异向量(Right Singular vectors),单位正交矩阵。


    基于SVD的降维:降概念强度最低的那一维。∑矩阵中对角线的值最小。

    误差评估:Forbenius norm

    实践中:保持80-90%的能量。

    与PCA的关系:∑是AA^T的特征值对角阵;U是AA^T的特征向量矩阵;V是A^T*A的特征向量矩阵。

    SVD的问题:结果难以解释?为什么那么多维度?

        U和V很Dense!占空间多。

    (4)CUR分解

    SVD存在问题。With SVD, even if M is sparse, U and V will be dense. Σ, being diagonal, will be sparse, but Σ is usually much smaller than U and V , so its sparseness does not help.

    M = CUR

    正确地选择行/列。

    构造中间矩阵。

    消除冗余的行/列。

    展开全文
  • 特征降维

    2021-01-01 22:38:56
    降维的两种方式 1.特征选择 2.主成分分析:可以理解为特征的提取 特征选择 Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联。 方差选择法:低方差特征过滤.例如鸟类是否可以飞作为特征值是不...


    降维实际上就是降低特征的个数,最终的结果就是特征和特征之间不相关。

    降维:降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程

    降维的两种方式

    1.特征选择
    2.主成分分析:可以理解为特征的提取

    特征选择

    • Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联。

      方差选择法:低方差特征过滤.例如鸟类是否可以飞作为特征值是不合适的,此时的方差为0

      相关系数:目的是去除冗余,确定特征与特征之间的相关性

    • Embedded(嵌入式):算法自动选择特征(特征与目标值之间的关联)

      决策树:信息熵、信息增益

      正则化:L1、L2

      深度学习:卷积等

    API

    模块
    sklearn.feature_selection

    特征选择_过滤式

    API

    sklearn.feature_selection.VarianceThreshold( threshold = 0.0 )

    删除所有低方差特征

    返回值:
    X:numpy array格式的数据 [n_samples, n_features]

    返回:训练集差异低于 threshold的特征将被删除。默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。

    数据计算
    #删除低方差特征Demo
    
    from sklearn.datasets import load_iris
    from sklearn.feature_selection import VarianceThreshold
    import pandas as pd
    
    def variance_demo():
        iris = load_iris()
        data = pd.DataFrame(iris.data, columns = iris.feature_names)
        data_new = data.iloc[:, :4].values
        
        print("data_new:\n", data_new)
        
        transfer = VarianceThreshold(threshold = 0.5)
        
        data_variance_value = transfer.fit_transform(data_new)
        print("data_variance_value:\n", data_variance_value)
        
        return None
    
    if __name__ == '__main__':
        variance_demo()
    
    
    
    
    
    输出结果:
    data_new:
     [[5.1 3.5 1.4 0.2]
     [4.9 3.  1.4 0.2]
     [4.7 3.2 1.3 0.2]
     [4.6 3.1 1.5 0.2]
     [5.  3.6 1.4 0.2]
     [5.4 3.9 1.7 0.4]
     [4.6 3.4 1.4 0.3]
     [5.  3.4 1.5 0.2]
     [4.4 2.9 1.4 0.2]
     [4.9 3.1 1.5 0.1]
     [5.4 3.7 1.5 0.2]
     [4.8 3.4 1.6 0.2]
     [4.8 3.  1.4 0.1]
     [4.3 3.  1.1 0.1]
     [5.8 4.  1.2 0.2]
     [5.7 4.4 1.5 0.4]
     [5.4 3.9 1.3 0.4]
     [5.1 3.5 1.4 0.3]
     [5.7 3.8 1.7 0.3]
     [5.1 3.8 1.5 0.3]
     [5.4 3.4 1.7 0.2]
     [5.1 3.7 1.5 0.4]
     [4.6 3.6 1.  0.2]
     [5.1 3.3 1.7 0.5]
     [4.8 3.4 1.9 0.2]
     [5.  3.  1.6 0.2]
     [5.  3.4 1.6 0.4]
     [5.2 3.5 1.5 0.2]
     [5.2 3.4 1.4 0.2]
     [4.7 3.2 1.6 0.2]
     [4.8 3.1 1.6 0.2]
     [5.4 3.4 1.5 0.4]
     [5.2 4.1 1.5 0.1]
     [5.5 4.2 1.4 0.2]
     [4.9 3.1 1.5 0.1]
     [5.  3.2 1.2 0.2]
     [5.5 3.5 1.3 0.2]
     [4.9 3.1 1.5 0.1]
     [4.4 3.  1.3 0.2]
     [5.1 3.4 1.5 0.2]
     [5.  3.5 1.3 0.3]
     [4.5 2.3 1.3 0.3]
     [4.4 3.2 1.3 0.2]
     [5.  3.5 1.6 0.6]
     [5.1 3.8 1.9 0.4]
     [4.8 3.  1.4 0.3]
     [5.1 3.8 1.6 0.2]
     [4.6 3.2 1.4 0.2]
     [5.3 3.7 1.5 0.2]
     [5.  3.3 1.4 0.2]
     [7.  3.2 4.7 1.4]
     [6.4 3.2 4.5 1.5]
     [6.9 3.1 4.9 1.5]
     [5.5 2.3 4.  1.3]
     [6.5 2.8 4.6 1.5]
     [5.7 2.8 4.5 1.3]
     [6.3 3.3 4.7 1.6]
     [4.9 2.4 3.3 1. ]
     [6.6 2.9 4.6 1.3]
     [5.2 2.7 3.9 1.4]
     [5.  2.  3.5 1. ]
     [5.9 3.  4.2 1.5]
     [6.  2.2 4.  1. ]
     [6.1 2.9 4.7 1.4]
     [5.6 2.9 3.6 1.3]
     [6.7 3.1 4.4 1.4]
     [5.6 3.  4.5 1.5]
     [5.8 2.7 4.1 1. ]
     [6.2 2.2 4.5 1.5]
     [5.6 2.5 3.9 1.1]
     [5.9 3.2 4.8 1.8]
     [6.1 2.8 4.  1.3]
     [6.3 2.5 4.9 1.5]
     [6.1 2.8 4.7 1.2]
     [6.4 2.9 4.3 1.3]
     [6.6 3.  4.4 1.4]
     [6.8 2.8 4.8 1.4]
     [6.7 3.  5.  1.7]
     [6.  2.9 4.5 1.5]
     [5.7 2.6 3.5 1. ]
     [5.5 2.4 3.8 1.1]
     [5.5 2.4 3.7 1. ]
     [5.8 2.7 3.9 1.2]
     [6.  2.7 5.1 1.6]
     [5.4 3.  4.5 1.5]
     [6.  3.4 4.5 1.6]
     [6.7 3.1 4.7 1.5]
     [6.3 2.3 4.4 1.3]
     [5.6 3.  4.1 1.3]
     [5.5 2.5 4.  1.3]
     [5.5 2.6 4.4 1.2]
     [6.1 3.  4.6 1.4]
     [5.8 2.6 4.  1.2]
     [5.  2.3 3.3 1. ]
     [5.6 2.7 4.2 1.3]
     [5.7 3.  4.2 1.2]
     [5.7 2.9 4.2 1.3]
     [6.2 2.9 4.3 1.3]
     [5.1 2.5 3.  1.1]
     [5.7 2.8 4.1 1.3]
     [6.3 3.3 6.  2.5]
     [5.8 2.7 5.1 1.9]
     [7.1 3.  5.9 2.1]
     [6.3 2.9 5.6 1.8]
     [6.5 3.  5.8 2.2]
     [7.6 3.  6.6 2.1]
     [4.9 2.5 4.5 1.7]
     [7.3 2.9 6.3 1.8]
     [6.7 2.5 5.8 1.8]
     [7.2 3.6 6.1 2.5]
     [6.5 3.2 5.1 2. ]
     [6.4 2.7 5.3 1.9]
     [6.8 3.  5.5 2.1]
     [5.7 2.5 5.  2. ]
     [5.8 2.8 5.1 2.4]
     [6.4 3.2 5.3 2.3]
     [6.5 3.  5.5 1.8]
     [7.7 3.8 6.7 2.2]
     [7.7 2.6 6.9 2.3]
     [6.  2.2 5.  1.5]
     [6.9 3.2 5.7 2.3]
     [5.6 2.8 4.9 2. ]
     [7.7 2.8 6.7 2. ]
     [6.3 2.7 4.9 1.8]
     [6.7 3.3 5.7 2.1]
     [7.2 3.2 6.  1.8]
     [6.2 2.8 4.8 1.8]
     [6.1 3.  4.9 1.8]
     [6.4 2.8 5.6 2.1]
     [7.2 3.  5.8 1.6]
     [7.4 2.8 6.1 1.9]
     [7.9 3.8 6.4 2. ]
     [6.4 2.8 5.6 2.2]
     [6.3 2.8 5.1 1.5]
     [6.1 2.6 5.6 1.4]
     [7.7 3.  6.1 2.3]
     [6.3 3.4 5.6 2.4]
     [6.4 3.1 5.5 1.8]
     [6.  3.  4.8 1.8]
     [6.9 3.1 5.4 2.1]
     [6.7 3.1 5.6 2.4]
     [6.9 3.1 5.1 2.3]
     [5.8 2.7 5.1 1.9]
     [6.8 3.2 5.9 2.3]
     [6.7 3.3 5.7 2.5]
     [6.7 3.  5.2 2.3]
     [6.3 2.5 5.  1.9]
     [6.5 3.  5.2 2. ]
     [6.2 3.4 5.4 2.3]
     [5.9 3.  5.1 1.8]]
    data_variance_value:
     [[5.1 1.4 0.2]
     [4.9 1.4 0.2]
     [4.7 1.3 0.2]
     [4.6 1.5 0.2]
     [5.  1.4 0.2]
     [5.4 1.7 0.4]
     [4.6 1.4 0.3]
     [5.  1.5 0.2]
     [4.4 1.4 0.2]
     [4.9 1.5 0.1]
     [5.4 1.5 0.2]
     [4.8 1.6 0.2]
     [4.8 1.4 0.1]
     [4.3 1.1 0.1]
     [5.8 1.2 0.2]
     [5.7 1.5 0.4]
     [5.4 1.3 0.4]
     [5.1 1.4 0.3]
     [5.7 1.7 0.3]
     [5.1 1.5 0.3]
     [5.4 1.7 0.2]
     [5.1 1.5 0.4]
     [4.6 1.  0.2]
     [5.1 1.7 0.5]
     [4.8 1.9 0.2]
     [5.  1.6 0.2]
     [5.  1.6 0.4]
     [5.2 1.5 0.2]
     [5.2 1.4 0.2]
     [4.7 1.6 0.2]
     [4.8 1.6 0.2]
     [5.4 1.5 0.4]
     [5.2 1.5 0.1]
     [5.5 1.4 0.2]
     [4.9 1.5 0.1]
     [5.  1.2 0.2]
     [5.5 1.3 0.2]
     [4.9 1.5 0.1]
     [4.4 1.3 0.2]
     [5.1 1.5 0.2]
     [5.  1.3 0.3]
     [4.5 1.3 0.3]
     [4.4 1.3 0.2]
     [5.  1.6 0.6]
     [5.1 1.9 0.4]
     [4.8 1.4 0.3]
     [5.1 1.6 0.2]
     [4.6 1.4 0.2]
     [5.3 1.5 0.2]
     [5.  1.4 0.2]
     [7.  4.7 1.4]
     [6.4 4.5 1.5]
     [6.9 4.9 1.5]
     [5.5 4.  1.3]
     [6.5 4.6 1.5]
     [5.7 4.5 1.3]
     [6.3 4.7 1.6]
     [4.9 3.3 1. ]
     [6.6 4.6 1.3]
     [5.2 3.9 1.4]
     [5.  3.5 1. ]
     [5.9 4.2 1.5]
     [6.  4.  1. ]
     [6.1 4.7 1.4]
     [5.6 3.6 1.3]
     [6.7 4.4 1.4]
     [5.6 4.5 1.5]
     [5.8 4.1 1. ]
     [6.2 4.5 1.5]
     [5.6 3.9 1.1]
     [5.9 4.8 1.8]
     [6.1 4.  1.3]
     [6.3 4.9 1.5]
     [6.1 4.7 1.2]
     [6.4 4.3 1.3]
     [6.6 4.4 1.4]
     [6.8 4.8 1.4]
     [6.7 5.  1.7]
     [6.  4.5 1.5]
     [5.7 3.5 1. ]
     [5.5 3.8 1.1]
     [5.5 3.7 1. ]
     [5.8 3.9 1.2]
     [6.  5.1 1.6]
     [5.4 4.5 1.5]
     [6.  4.5 1.6]
     [6.7 4.7 1.5]
     [6.3 4.4 1.3]
     [5.6 4.1 1.3]
     [5.5 4.  1.3]
     [5.5 4.4 1.2]
     [6.1 4.6 1.4]
     [5.8 4.  1.2]
     [5.  3.3 1. ]
     [5.6 4.2 1.3]
     [5.7 4.2 1.2]
     [5.7 4.2 1.3]
     [6.2 4.3 1.3]
     [5.1 3.  1.1]
     [5.7 4.1 1.3]
     [6.3 6.  2.5]
     [5.8 5.1 1.9]
     [7.1 5.9 2.1]
     [6.3 5.6 1.8]
     [6.5 5.8 2.2]
     [7.6 6.6 2.1]
     [4.9 4.5 1.7]
     [7.3 6.3 1.8]
     [6.7 5.8 1.8]
     [7.2 6.1 2.5]
     [6.5 5.1 2. ]
     [6.4 5.3 1.9]
     [6.8 5.5 2.1]
     [5.7 5.  2. ]
     [5.8 5.1 2.4]
     [6.4 5.3 2.3]
     [6.5 5.5 1.8]
     [7.7 6.7 2.2]
     [7.7 6.9 2.3]
     [6.  5.  1.5]
     [6.9 5.7 2.3]
     [5.6 4.9 2. ]
     [7.7 6.7 2. ]
     [6.3 4.9 1.8]
     [6.7 5.7 2.1]
     [7.2 6.  1.8]
     [6.2 4.8 1.8]
     [6.1 4.9 1.8]
     [6.4 5.6 2.1]
     [7.2 5.8 1.6]
     [7.4 6.1 1.9]
     [7.9 6.4 2. ]
     [6.4 5.6 2.2]
     [6.3 5.1 1.5]
     [6.1 5.6 1.4]
     [7.7 6.1 2.3]
     [6.3 5.6 2.4]
     [6.4 5.5 1.8]
     [6.  4.8 1.8]
     [6.9 5.4 2.1]
     [6.7 5.6 2.4]
     [6.9 5.1 2.3]
     [5.8 5.1 1.9]
     [6.8 5.9 2.3]
     [6.7 5.7 2.5]
     [6.7 5.2 2.3]
     [6.3 5.  1.9]
     [6.5 5.2 2. ]
     [6.2 5.4 2.3]
     [5.9 5.1 1.8]]
    

    特征选择_过滤式_相关系数

    皮尔森相关系数
    反映变量之间相关关系密切程度的统计指标在这里插入图片描述

    数据计算
    #过滤低方差特征 + 计算相关系数DEMO
    #皮尔森相关系数,计算特征与目标变量之间的相关度
    from scipy.stats import pearsonr
    from sklearn.datasets import load_iris
    from sklearn.feature_selection import VarianceThreshold
    import pandas as pd
    
    def variance_demo():
        iris = load_iris()
        data = pd.DataFrame(iris.data, columns = ['sepal length', 'sepal width', 'petal length', 'petal width'])
        data_new = data.iloc[:, :4].values
        print("data_new:\n", data_new)
        
        transfer = VarianceThreshold(threshold = 0.5)
        
        data_variance_value = transfer.fit_transform(data_new)
        print("data_variance_value:\n", data_variance_value)
        
        #计算两个变量之间的相关系数
        r1 = pearsonr(data['sepal length'], data['petal length'])
        print("sepal length与petal length的相关系数:\n", r1)
        
        r2 = pearsonr(data['petal length'], data['petal width'])
        print("petal length与petal width的相关系数:\n", r2)
        
        import matplotlib.pyplot as plt
        plt.scatter(data['petal length'], data['petal width'])
        plt.show()
        
        return None
    
    if __name__ == '__main__':
        variance_demo()
        
    
    
    
    
    输出结果:
    data_new:
     [[5.1 3.5 1.4 0.2]
     [4.9 3.  1.4 0.2]
     [4.7 3.2 1.3 0.2]
     [4.6 3.1 1.5 0.2]
     [5.  3.6 1.4 0.2]
     [5.4 3.9 1.7 0.4]
     [4.6 3.4 1.4 0.3]
     [5.  3.4 1.5 0.2]
     [4.4 2.9 1.4 0.2]
     [4.9 3.1 1.5 0.1]
     [5.4 3.7 1.5 0.2]
     [4.8 3.4 1.6 0.2]
     [4.8 3.  1.4 0.1]
     [4.3 3.  1.1 0.1]
     [5.8 4.  1.2 0.2]
     [5.7 4.4 1.5 0.4]
     [5.4 3.9 1.3 0.4]
     [5.1 3.5 1.4 0.3]
     [5.7 3.8 1.7 0.3]
     [5.1 3.8 1.5 0.3]
     [5.4 3.4 1.7 0.2]
     [5.1 3.7 1.5 0.4]
     [4.6 3.6 1.  0.2]
     [5.1 3.3 1.7 0.5]
     [4.8 3.4 1.9 0.2]
     [5.  3.  1.6 0.2]
     [5.  3.4 1.6 0.4]
     [5.2 3.5 1.5 0.2]
     [5.2 3.4 1.4 0.2]
     [4.7 3.2 1.6 0.2]
     [4.8 3.1 1.6 0.2]
     [5.4 3.4 1.5 0.4]
     [5.2 4.1 1.5 0.1]
     [5.5 4.2 1.4 0.2]
     [4.9 3.1 1.5 0.1]
     [5.  3.2 1.2 0.2]
     [5.5 3.5 1.3 0.2]
     [4.9 3.1 1.5 0.1]
     [4.4 3.  1.3 0.2]
     [5.1 3.4 1.5 0.2]
     [5.  3.5 1.3 0.3]
     [4.5 2.3 1.3 0.3]
     [4.4 3.2 1.3 0.2]
     [5.  3.5 1.6 0.6]
     [5.1 3.8 1.9 0.4]
     [4.8 3.  1.4 0.3]
     [5.1 3.8 1.6 0.2]
     [4.6 3.2 1.4 0.2]
     [5.3 3.7 1.5 0.2]
     [5.  3.3 1.4 0.2]
     [7.  3.2 4.7 1.4]
     [6.4 3.2 4.5 1.5]
     [6.9 3.1 4.9 1.5]
     [5.5 2.3 4.  1.3]
     [6.5 2.8 4.6 1.5]
     [5.7 2.8 4.5 1.3]
     [6.3 3.3 4.7 1.6]
     [4.9 2.4 3.3 1. ]
     [6.6 2.9 4.6 1.3]
     [5.2 2.7 3.9 1.4]
     [5.  2.  3.5 1. ]
     [5.9 3.  4.2 1.5]
     [6.  2.2 4.  1. ]
     [6.1 2.9 4.7 1.4]
     [5.6 2.9 3.6 1.3]
     [6.7 3.1 4.4 1.4]
     [5.6 3.  4.5 1.5]
     [5.8 2.7 4.1 1. ]
     [6.2 2.2 4.5 1.5]
     [5.6 2.5 3.9 1.1]
     [5.9 3.2 4.8 1.8]
     [6.1 2.8 4.  1.3]
     [6.3 2.5 4.9 1.5]
     [6.1 2.8 4.7 1.2]
     [6.4 2.9 4.3 1.3]
     [6.6 3.  4.4 1.4]
     [6.8 2.8 4.8 1.4]
     [6.7 3.  5.  1.7]
     [6.  2.9 4.5 1.5]
     [5.7 2.6 3.5 1. ]
     [5.5 2.4 3.8 1.1]
     [5.5 2.4 3.7 1. ]
     [5.8 2.7 3.9 1.2]
     [6.  2.7 5.1 1.6]
     [5.4 3.  4.5 1.5]
     [6.  3.4 4.5 1.6]
     [6.7 3.1 4.7 1.5]
     [6.3 2.3 4.4 1.3]
     [5.6 3.  4.1 1.3]
     [5.5 2.5 4.  1.3]
     [5.5 2.6 4.4 1.2]
     [6.1 3.  4.6 1.4]
     [5.8 2.6 4.  1.2]
     [5.  2.3 3.3 1. ]
     [5.6 2.7 4.2 1.3]
     [5.7 3.  4.2 1.2]
     [5.7 2.9 4.2 1.3]
     [6.2 2.9 4.3 1.3]
     [5.1 2.5 3.  1.1]
     [5.7 2.8 4.1 1.3]
     [6.3 3.3 6.  2.5]
     [5.8 2.7 5.1 1.9]
     [7.1 3.  5.9 2.1]
     [6.3 2.9 5.6 1.8]
     [6.5 3.  5.8 2.2]
     [7.6 3.  6.6 2.1]
     [4.9 2.5 4.5 1.7]
     [7.3 2.9 6.3 1.8]
     [6.7 2.5 5.8 1.8]
     [7.2 3.6 6.1 2.5]
     [6.5 3.2 5.1 2. ]
     [6.4 2.7 5.3 1.9]
     [6.8 3.  5.5 2.1]
     [5.7 2.5 5.  2. ]
     [5.8 2.8 5.1 2.4]
     [6.4 3.2 5.3 2.3]
     [6.5 3.  5.5 1.8]
     [7.7 3.8 6.7 2.2]
     [7.7 2.6 6.9 2.3]
     [6.  2.2 5.  1.5]
     [6.9 3.2 5.7 2.3]
     [5.6 2.8 4.9 2. ]
     [7.7 2.8 6.7 2. ]
     [6.3 2.7 4.9 1.8]
     [6.7 3.3 5.7 2.1]
     [7.2 3.2 6.  1.8]
     [6.2 2.8 4.8 1.8]
     [6.1 3.  4.9 1.8]
     [6.4 2.8 5.6 2.1]
     [7.2 3.  5.8 1.6]
     [7.4 2.8 6.1 1.9]
     [7.9 3.8 6.4 2. ]
     [6.4 2.8 5.6 2.2]
     [6.3 2.8 5.1 1.5]
     [6.1 2.6 5.6 1.4]
     [7.7 3.  6.1 2.3]
     [6.3 3.4 5.6 2.4]
     [6.4 3.1 5.5 1.8]
     [6.  3.  4.8 1.8]
     [6.9 3.1 5.4 2.1]
     [6.7 3.1 5.6 2.4]
     [6.9 3.1 5.1 2.3]
     [5.8 2.7 5.1 1.9]
     [6.8 3.2 5.9 2.3]
     [6.7 3.3 5.7 2.5]
     [6.7 3.  5.2 2.3]
     [6.3 2.5 5.  1.9]
     [6.5 3.  5.2 2. ]
     [6.2 3.4 5.4 2.3]
     [5.9 3.  5.1 1.8]]
    data_variance_value:
     [[5.1 1.4 0.2]
     [4.9 1.4 0.2]
     [4.7 1.3 0.2]
     [4.6 1.5 0.2]
     [5.  1.4 0.2]
     [5.4 1.7 0.4]
     [4.6 1.4 0.3]
     [5.  1.5 0.2]
     [4.4 1.4 0.2]
     [4.9 1.5 0.1]
     [5.4 1.5 0.2]
     [4.8 1.6 0.2]
     [4.8 1.4 0.1]
     [4.3 1.1 0.1]
     [5.8 1.2 0.2]
     [5.7 1.5 0.4]
     [5.4 1.3 0.4]
     [5.1 1.4 0.3]
     [5.7 1.7 0.3]
     [5.1 1.5 0.3]
     [5.4 1.7 0.2]
     [5.1 1.5 0.4]
     [4.6 1.  0.2]
     [5.1 1.7 0.5]
     [4.8 1.9 0.2]
     [5.  1.6 0.2]
     [5.  1.6 0.4]
     [5.2 1.5 0.2]
     [5.2 1.4 0.2]
     [4.7 1.6 0.2]
     [4.8 1.6 0.2]
     [5.4 1.5 0.4]
     [5.2 1.5 0.1]
     [5.5 1.4 0.2]
     [4.9 1.5 0.1]
     [5.  1.2 0.2]
     [5.5 1.3 0.2]
     [4.9 1.5 0.1]
     [4.4 1.3 0.2]
     [5.1 1.5 0.2]
     [5.  1.3 0.3]
     [4.5 1.3 0.3]
     [4.4 1.3 0.2]
     [5.  1.6 0.6]
     [5.1 1.9 0.4]
     [4.8 1.4 0.3]
     [5.1 1.6 0.2]
     [4.6 1.4 0.2]
     [5.3 1.5 0.2]
     [5.  1.4 0.2]
     [7.  4.7 1.4]
     [6.4 4.5 1.5]
     [6.9 4.9 1.5]
     [5.5 4.  1.3]
     [6.5 4.6 1.5]
     [5.7 4.5 1.3]
     [6.3 4.7 1.6]
     [4.9 3.3 1. ]
     [6.6 4.6 1.3]
     [5.2 3.9 1.4]
     [5.  3.5 1. ]
     [5.9 4.2 1.5]
     [6.  4.  1. ]
     [6.1 4.7 1.4]
     [5.6 3.6 1.3]
     [6.7 4.4 1.4]
     [5.6 4.5 1.5]
     [5.8 4.1 1. ]
     [6.2 4.5 1.5]
     [5.6 3.9 1.1]
     [5.9 4.8 1.8]
     [6.1 4.  1.3]
     [6.3 4.9 1.5]
     [6.1 4.7 1.2]
     [6.4 4.3 1.3]
     [6.6 4.4 1.4]
     [6.8 4.8 1.4]
     [6.7 5.  1.7]
     [6.  4.5 1.5]
     [5.7 3.5 1. ]
     [5.5 3.8 1.1]
     [5.5 3.7 1. ]
     [5.8 3.9 1.2]
     [6.  5.1 1.6]
     [5.4 4.5 1.5]
     [6.  4.5 1.6]
     [6.7 4.7 1.5]
     [6.3 4.4 1.3]
     [5.6 4.1 1.3]
     [5.5 4.  1.3]
     [5.5 4.4 1.2]
     [6.1 4.6 1.4]
     [5.8 4.  1.2]
     [5.  3.3 1. ]
     [5.6 4.2 1.3]
     [5.7 4.2 1.2]
     [5.7 4.2 1.3]
     [6.2 4.3 1.3]
     [5.1 3.  1.1]
     [5.7 4.1 1.3]
     [6.3 6.  2.5]
     [5.8 5.1 1.9]
     [7.1 5.9 2.1]
     [6.3 5.6 1.8]
     [6.5 5.8 2.2]
     [7.6 6.6 2.1]
     [4.9 4.5 1.7]
     [7.3 6.3 1.8]
     [6.7 5.8 1.8]
     [7.2 6.1 2.5]
     [6.5 5.1 2. ]
     [6.4 5.3 1.9]
     [6.8 5.5 2.1]
     [5.7 5.  2. ]
     [5.8 5.1 2.4]
     [6.4 5.3 2.3]
     [6.5 5.5 1.8]
     [7.7 6.7 2.2]
     [7.7 6.9 2.3]
     [6.  5.  1.5]
     [6.9 5.7 2.3]
     [5.6 4.9 2. ]
     [7.7 6.7 2. ]
     [6.3 4.9 1.8]
     [6.7 5.7 2.1]
     [7.2 6.  1.8]
     [6.2 4.8 1.8]
     [6.1 4.9 1.8]
     [6.4 5.6 2.1]
     [7.2 5.8 1.6]
     [7.4 6.1 1.9]
     [7.9 6.4 2. ]
     [6.4 5.6 2.2]
     [6.3 5.1 1.5]
     [6.1 5.6 1.4]
     [7.7 6.1 2.3]
     [6.3 5.6 2.4]
     [6.4 5.5 1.8]
     [6.  4.8 1.8]
     [6.9 5.4 2.1]
     [6.7 5.6 2.4]
     [6.9 5.1 2.3]
     [5.8 5.1 1.9]
     [6.8 5.9 2.3]
     [6.7 5.7 2.5]
     [6.7 5.2 2.3]
     [6.3 5.  1.9]
     [6.5 5.2 2. ]
     [6.2 5.4 2.3]
     [5.9 5.1 1.8]]
    sepal length与petal length的相关系数:
     (0.8717541573048712, 1.0384540627941809e-47)
    petal length与petal width的相关系数:
     (0.9627570970509662, 5.776660988495158e-86)
    

    在这里插入图片描述

    主成分分析PCA

    定义:高维数据转化为地位数据的过程,在此过程中可能会舍弃原有数据、创造新的变量

    作用:是数据维数的压缩,尽可能降低原数据的维数(复杂度),损失少量信息

    应用:回归分析或者据类分析当中

    API

    sklearn.decomposition.PCA(n_components = None)
    将数据分解为较低维数空间

    n_components:
        小数:表示包留百分之多少的信息
    
        整数:减少到多少特征
    
    PCA.fit_transform(X)
    
        X:numpy array格式的数据[n_samples, n_features]
    
        返回:转换后指定维度的array
    
    数据计算
    from sklearn.decomposition import PCA
    from sklearn.datasets import load_iris
    import pandas as pd
    
    def pca_demo():
        iris = load_iris()
        data = pd.DataFrame(iris.data, columns = iris.feature_names)
        data_array = data.iloc[:, :4].values
        print("data_array:\n", data_array)
        
        transfer = PCA(n_components = 2)
        #ransfer = PCA(n_components = 0.95)
        
        data_pca_value = transfer.fit_transform(data_array)
        print("data_pca_value:\n", data_pca_value)
        
        return None
    
    if __name__ == '__main__':
        pca_demo()
    
    
    
    
    输出结果:
    data_array:
     [[5.1 3.5 1.4 0.2]
     [4.9 3.  1.4 0.2]
     [4.7 3.2 1.3 0.2]
     [4.6 3.1 1.5 0.2]
     [5.  3.6 1.4 0.2]
     [5.4 3.9 1.7 0.4]
     [4.6 3.4 1.4 0.3]
     [5.  3.4 1.5 0.2]
     [4.4 2.9 1.4 0.2]
     [4.9 3.1 1.5 0.1]
     [5.4 3.7 1.5 0.2]
     [4.8 3.4 1.6 0.2]
     [4.8 3.  1.4 0.1]
     [4.3 3.  1.1 0.1]
     [5.8 4.  1.2 0.2]
     [5.7 4.4 1.5 0.4]
     [5.4 3.9 1.3 0.4]
     [5.1 3.5 1.4 0.3]
     [5.7 3.8 1.7 0.3]
     [5.1 3.8 1.5 0.3]
     [5.4 3.4 1.7 0.2]
     [5.1 3.7 1.5 0.4]
     [4.6 3.6 1.  0.2]
     [5.1 3.3 1.7 0.5]
     [4.8 3.4 1.9 0.2]
     [5.  3.  1.6 0.2]
     [5.  3.4 1.6 0.4]
     [5.2 3.5 1.5 0.2]
     [5.2 3.4 1.4 0.2]
     [4.7 3.2 1.6 0.2]
     [4.8 3.1 1.6 0.2]
     [5.4 3.4 1.5 0.4]
     [5.2 4.1 1.5 0.1]
     [5.5 4.2 1.4 0.2]
     [4.9 3.1 1.5 0.1]
     [5.  3.2 1.2 0.2]
     [5.5 3.5 1.3 0.2]
     [4.9 3.1 1.5 0.1]
     [4.4 3.  1.3 0.2]
     [5.1 3.4 1.5 0.2]
     [5.  3.5 1.3 0.3]
     [4.5 2.3 1.3 0.3]
     [4.4 3.2 1.3 0.2]
     [5.  3.5 1.6 0.6]
     [5.1 3.8 1.9 0.4]
     [4.8 3.  1.4 0.3]
     [5.1 3.8 1.6 0.2]
     [4.6 3.2 1.4 0.2]
     [5.3 3.7 1.5 0.2]
     [5.  3.3 1.4 0.2]
     [7.  3.2 4.7 1.4]
     [6.4 3.2 4.5 1.5]
     [6.9 3.1 4.9 1.5]
     [5.5 2.3 4.  1.3]
     [6.5 2.8 4.6 1.5]
     [5.7 2.8 4.5 1.3]
     [6.3 3.3 4.7 1.6]
     [4.9 2.4 3.3 1. ]
     [6.6 2.9 4.6 1.3]
     [5.2 2.7 3.9 1.4]
     [5.  2.  3.5 1. ]
     [5.9 3.  4.2 1.5]
     [6.  2.2 4.  1. ]
     [6.1 2.9 4.7 1.4]
     [5.6 2.9 3.6 1.3]
     [6.7 3.1 4.4 1.4]
     [5.6 3.  4.5 1.5]
     [5.8 2.7 4.1 1. ]
     [6.2 2.2 4.5 1.5]
     [5.6 2.5 3.9 1.1]
     [5.9 3.2 4.8 1.8]
     [6.1 2.8 4.  1.3]
     [6.3 2.5 4.9 1.5]
     [6.1 2.8 4.7 1.2]
     [6.4 2.9 4.3 1.3]
     [6.6 3.  4.4 1.4]
     [6.8 2.8 4.8 1.4]
     [6.7 3.  5.  1.7]
     [6.  2.9 4.5 1.5]
     [5.7 2.6 3.5 1. ]
     [5.5 2.4 3.8 1.1]
     [5.5 2.4 3.7 1. ]
     [5.8 2.7 3.9 1.2]
     [6.  2.7 5.1 1.6]
     [5.4 3.  4.5 1.5]
     [6.  3.4 4.5 1.6]
     [6.7 3.1 4.7 1.5]
     [6.3 2.3 4.4 1.3]
     [5.6 3.  4.1 1.3]
     [5.5 2.5 4.  1.3]
     [5.5 2.6 4.4 1.2]
     [6.1 3.  4.6 1.4]
     [5.8 2.6 4.  1.2]
     [5.  2.3 3.3 1. ]
     [5.6 2.7 4.2 1.3]
     [5.7 3.  4.2 1.2]
     [5.7 2.9 4.2 1.3]
     [6.2 2.9 4.3 1.3]
     [5.1 2.5 3.  1.1]
     [5.7 2.8 4.1 1.3]
     [6.3 3.3 6.  2.5]
     [5.8 2.7 5.1 1.9]
     [7.1 3.  5.9 2.1]
     [6.3 2.9 5.6 1.8]
     [6.5 3.  5.8 2.2]
     [7.6 3.  6.6 2.1]
     [4.9 2.5 4.5 1.7]
     [7.3 2.9 6.3 1.8]
     [6.7 2.5 5.8 1.8]
     [7.2 3.6 6.1 2.5]
     [6.5 3.2 5.1 2. ]
     [6.4 2.7 5.3 1.9]
     [6.8 3.  5.5 2.1]
     [5.7 2.5 5.  2. ]
     [5.8 2.8 5.1 2.4]
     [6.4 3.2 5.3 2.3]
     [6.5 3.  5.5 1.8]
     [7.7 3.8 6.7 2.2]
     [7.7 2.6 6.9 2.3]
     [6.  2.2 5.  1.5]
     [6.9 3.2 5.7 2.3]
     [5.6 2.8 4.9 2. ]
     [7.7 2.8 6.7 2. ]
     [6.3 2.7 4.9 1.8]
     [6.7 3.3 5.7 2.1]
     [7.2 3.2 6.  1.8]
     [6.2 2.8 4.8 1.8]
     [6.1 3.  4.9 1.8]
     [6.4 2.8 5.6 2.1]
     [7.2 3.  5.8 1.6]
     [7.4 2.8 6.1 1.9]
     [7.9 3.8 6.4 2. ]
     [6.4 2.8 5.6 2.2]
     [6.3 2.8 5.1 1.5]
     [6.1 2.6 5.6 1.4]
     [7.7 3.  6.1 2.3]
     [6.3 3.4 5.6 2.4]
     [6.4 3.1 5.5 1.8]
     [6.  3.  4.8 1.8]
     [6.9 3.1 5.4 2.1]
     [6.7 3.1 5.6 2.4]
     [6.9 3.1 5.1 2.3]
     [5.8 2.7 5.1 1.9]
     [6.8 3.2 5.9 2.3]
     [6.7 3.3 5.7 2.5]
     [6.7 3.  5.2 2.3]
     [6.3 2.5 5.  1.9]
     [6.5 3.  5.2 2. ]
     [6.2 3.4 5.4 2.3]
     [5.9 3.  5.1 1.8]]
    data_pca_value:
     [[-2.68420713  0.32660731]
     [-2.71539062 -0.16955685]
     [-2.88981954 -0.13734561]
     [-2.7464372  -0.31112432]
     [-2.72859298  0.33392456]
     [-2.27989736  0.74778271]
     [-2.82089068 -0.08210451]
     [-2.62648199  0.17040535]
     [-2.88795857 -0.57079803]
     [-2.67384469 -0.1066917 ]
     [-2.50652679  0.65193501]
     [-2.61314272  0.02152063]
     [-2.78743398 -0.22774019]
     [-3.22520045 -0.50327991]
     [-2.64354322  1.1861949 ]
     [-2.38386932  1.34475434]
     [-2.6225262   0.81808967]
     [-2.64832273  0.31913667]
     [-2.19907796  0.87924409]
     [-2.58734619  0.52047364]
     [-2.3105317   0.39786782]
     [-2.54323491  0.44003175]
     [-3.21585769  0.14161557]
     [-2.30312854  0.10552268]
     [-2.35617109 -0.03120959]
     [-2.50791723 -0.13905634]
     [-2.469056    0.13788731]
     [-2.56239095  0.37468456]
     [-2.63982127  0.31929007]
     [-2.63284791 -0.19007583]
     [-2.58846205 -0.19739308]
     [-2.41007734  0.41808001]
     [-2.64763667  0.81998263]
     [-2.59715948  1.10002193]
     [-2.67384469 -0.1066917 ]
     [-2.86699985  0.0771931 ]
     [-2.62522846  0.60680001]
     [-2.67384469 -0.1066917 ]
     [-2.98184266 -0.48025005]
     [-2.59032303  0.23605934]
     [-2.77013891  0.27105942]
     [-2.85221108 -0.93286537]
     [-2.99829644 -0.33430757]
     [-2.4055141   0.19591726]
     [-2.20883295  0.44269603]
     [-2.71566519 -0.24268148]
     [-2.53757337  0.51036755]
     [-2.8403213  -0.22057634]
     [-2.54268576  0.58628103]
     [-2.70391231  0.11501085]
     [ 1.28479459  0.68543919]
     [ 0.93241075  0.31919809]
     [ 1.46406132  0.50418983]
     [ 0.18096721 -0.82560394]
     [ 1.08713449  0.07539039]
     [ 0.64043675 -0.41732348]
     [ 1.09522371  0.28389121]
     [-0.75146714 -1.00110751]
     [ 1.04329778  0.22895691]
     [-0.01019007 -0.72057487]
     [-0.5110862  -1.26249195]
     [ 0.51109806 -0.10228411]
     [ 0.26233576 -0.5478933 ]
     [ 0.98404455 -0.12436042]
     [-0.174864   -0.25181557]
     [ 0.92757294  0.46823621]
     [ 0.65959279 -0.35197629]
     [ 0.23454059 -0.33192183]
     [ 0.94236171 -0.54182226]
     [ 0.0432464  -0.58148945]
     [ 1.11624072 -0.08421401]
     [ 0.35678657 -0.06682383]
     [ 1.29646885 -0.32756152]
     [ 0.92050265 -0.18239036]
     [ 0.71400821  0.15037915]
     [ 0.89964086  0.32961098]
     [ 1.33104142  0.24466952]
     [ 1.55739627  0.26739258]
     [ 0.81245555 -0.16233157]
     [-0.30733476 -0.36508661]
     [-0.07034289 -0.70253793]
     [-0.19188449 -0.67749054]
     [ 0.13499495 -0.31170964]
     [ 1.37873698 -0.42120514]
     [ 0.58727485 -0.48328427]
     [ 0.8072055   0.19505396]
     [ 1.22042897  0.40803534]
     [ 0.81286779 -0.370679  ]
     [ 0.24519516 -0.26672804]
     [ 0.16451343 -0.67966147]
     [ 0.46303099 -0.66952655]
     [ 0.89016045 -0.03381244]
     [ 0.22887905 -0.40225762]
     [-0.70708128 -1.00842476]
     [ 0.35553304 -0.50321849]
     [ 0.33112695 -0.21118014]
     [ 0.37523823 -0.29162202]
     [ 0.64169028  0.01907118]
     [-0.90846333 -0.75156873]
     [ 0.29780791 -0.34701652]
     [ 2.53172698 -0.01184224]
     [ 1.41407223 -0.57492506]
     [ 2.61648461  0.34193529]
     [ 1.97081495 -0.18112569]
     [ 2.34975798 -0.04188255]
     [ 3.39687992  0.54716805]
     [ 0.51938325 -1.19135169]
     [ 2.9320051   0.35237701]
     [ 2.31967279 -0.24554817]
     [ 2.91813423  0.78038063]
     [ 1.66193495  0.2420384 ]
     [ 1.80234045 -0.21615461]
     [ 2.16537886  0.21528028]
     [ 1.34459422 -0.77641543]
     [ 1.5852673  -0.53930705]
     [ 1.90474358  0.11881899]
     [ 1.94924878  0.04073026]
     [ 3.48876538  1.17154454]
     [ 3.79468686  0.25326557]
     [ 1.29832982 -0.76101394]
     [ 2.42816726  0.37678197]
     [ 1.19809737 -0.60557896]
     [ 3.49926548  0.45677347]
     [ 1.38766825 -0.20403099]
     [ 2.27585365  0.33338653]
     [ 2.61419383  0.55836695]
     [ 1.25762518 -0.179137  ]
     [ 1.29066965 -0.11642525]
     [ 2.12285398 -0.21085488]
     [ 2.3875644   0.46251925]
     [ 2.84096093  0.37274259]
     [ 3.2323429   1.37052404]
     [ 2.15873837 -0.21832553]
     [ 1.4431026  -0.14380129]
     [ 1.77964011 -0.50146479]
     [ 3.07652162  0.68576444]
     [ 2.14498686  0.13890661]
     [ 1.90486293  0.04804751]
     [ 1.16885347 -0.1645025 ]
     [ 2.10765373  0.37148225]
     [ 2.31430339  0.18260885]
     [ 1.92245088  0.40927118]
     [ 1.41407223 -0.57492506]
     [ 2.56332271  0.2759745 ]
     [ 2.41939122  0.30350394]
     [ 1.94401705  0.18741522]
     [ 1.52566363 -0.37502085]
     [ 1.76404594  0.07851919]
     [ 1.90162908  0.11587675]
     [ 1.38966613 -0.28288671]]
    
    展开全文
  • 事务降维的几种策略

    2019-03-31 23:35:34
    这是学习笔记第1935篇文章 我们在工作中很容易陷入一个漩涡,那就是因为并发事务选择了关系型数据库,因为关系型选择了MySQL,因为MySQL业务特点而选择了对...
        

    这是学习笔记的第 1935 篇文章


      我们在工作中很容易陷入一个漩涡,那就是因为并发事务选择了关系型数据库,因为关系型选择了MySQL,因为MySQL的业务特点而选择了对事务降维。 

     在大多数场景下算是一件好事说明我们对于事务的理解算是理性的,除此之外,我认为我们传统理解上的业务类型就不是非常合理,很多需求如果是基于OLTP和OLAP其实业务场景是很受限的,比如一个论坛业务,你说对事务的要求高吗 对于一些日志型,监控型数据的写入,使用事务也不大有用,而同时它们也不属于OLAP的业务场景。 

     简而言之,不是所有的业务场景需要事务支持,需要根据场景进行方案选择。

    我总结了下面的一些降维策略,供参考。

    降维策略1:存储过程调用转换为透明的SQL调用

    对于新业务而言,使用存储过程显然不是一个好主意,MySQL的存储过程和其他商业数据库相比,功能和性能都有待验证,而且在现在轻量化的业务处理中,存储过程的处理方式太“重”了。

    有些应用架构看起来是按照分布式部署的,在数据库层的调用方式是基于存储过程,因为存储过程的调用中内部来保证事务,看起来设计很清晰,但是这样压力都在数据库层面了,以至于数据库层很容易成为瓶颈,而且难以实现真正的分布式。

    所以有一个明确的改进方向就是对于存储过程的改造,把它改造为SQL调用的方式,可以极大的提高业务的处理效率,在数据库的接口调用上足够简单而且清晰可控。

    降维策略2:Drop 操作转换为可逆的DDL操作

    Drop操作是默认提交的,而且是不可逆的,在数据库操作中都是跑路的代名词,MySQL层面目前是没有相应的drop操作恢复功能,除非通过备份来恢复,但是我们可以考虑将Drop操作转换为一种可逆的DDL操作。

    在MySQL中默认是每个表有一个对应的ibd文件,其实可以把drop操作转换为一个rename操作,即可把文件从testdb迁移到testdb_arch下面,从权限上来说,testdb_arch是业务不可见的,rename操作可以平滑的实现这个删除功能,如果在一定时间后确认可以清理,则数据清理对于已有的业务流程是不可见的。

    640?wx_fmt=png

    降维策略3:Truncate操作转换为安全的DDL操作

    Truncate操作的危害比Drop还要大,我们在第2种策略的基础上可以把truncate操作转换为一种较为安全的操作,思路也是通过rename的方式来实现,唯一的差别是这种方式需要额外处理表结构信息。

    降维策略4:DDL操作转换为DML操作

    有些业务经常会有一种紧急需求,总是需要给一个表添加字段,搞得DBA和业务同学都挺累,可以想象一个表有上百个字段,而且基本都是name1,name2....name100,这种设计本身就是有问题的,更不用考虑性能了。 究其原因,是因为业务的需求动态变化,比如一个游戏装备有20个属性,可能过了一个月之后就增加到了40个属性,这样一来,所有的装备都有40个属性,不管用没用到,而且这种方式也存在诸多的冗余。

    我们在设计规范里面也提到了一些设计的基本要素,在这些基础上需要补充的是,在保持有限的字段,如果要实现这些功能的扩展,其实完全可以通过配置化的方式来实现,比如把一些动态添加的字段转换为一些配置信息。配置信息可以通过DML的方式进行修改和补充,对于数据入口也可以更加动态易扩展。

    降维策略5:Delete操作转换为高效操作

    有些业务需要定期来清理一些周期性数据,比如表里的数据只保留一个月,那么超出时间范围的数据就要清理掉了,而如果表的量级比较大的情况下,这种delete操作的代价实在太高,我们可以有两类解决方案来把Delete操作转换为更为高效的方式。 

    第一种是根据业务建立周期表,比如按照月表,周表,日表等维度来设计,这样数据的清理就是一个相对可控而且高效的方式了。 

    第二种方案是使用策略2的思路,比如一张2千万的大表要清理99%的数据,那么保留的1%的数据我们可以很快根据条件过滤补录,我们完全可以实现“移形换位”的方式。

    降维策略6:Update操作转换为Insert操作

    有些业务中会有一种固定的数据模型,比如先根据id查看记录是否存在,如果不存在则进行insert操作,如果存在则进行update操作,如果不加事务,在高并发的情况下很可能会因为重复的insert操作导致主键冲突的错误,我们可以使用insert on duplicate的方式来平滑的过渡,如果记录存在则进行update操作,但是语句接口都是insert,这样就可以把insert,update的操作模型统一为insert模型。

    640?

    展开全文
  • 常见降维方法总结

    2017-06-24 23:39:00
    降维的同时保留局部近邻节点的信息 属于流形学习 (2)目标函数 未添加限制条件: \[\sum_{ij}({\mathit y_i\,-\,y_j})^2\mathbf W_{ij}\] 添加限制条件并简化后: \[\underset{\mathbf {y^TDy}=1,\mathbf {y^T...

    一、拉普拉斯特征映射(Laplacian Eigenmaps,LE)

    (1)特点

    • 非线性的降维方法
    • 降维的同时保留局部近邻节点的信息
    • 属于流形学习

    (2)目标函数

    未添加限制条件:
    \[\sum_{ij}({\mathit y_i\,-\,y_j})^2\mathbf W_{ij}\]
    添加限制条件并简化后:
    \[\underset{\mathbf {y^TDy}=1,\mathbf {y^TD1=0} }{\operatorname{argmin}}\mathbf {y^TLy}\]

    (3)需求解的特征方程

    \[\mathbf {Ly\,=\,\lambda Dy}\]

    (4)优点

    • LE的局部特征保留特性使得它对孤立点和噪音不会那么敏感
    • 算法基于流形的内在几何结构,因此它展示出嵌入的稳定性。只要嵌入是等度量的(Isometric),这个表示就是不变的。在移动相机的例子里,相机不同的解析度将会导致同一个流形嵌入到不同维度的空间中去。我们的算法可以产生相似的表现(Representation),即使是不同的分辨率.

    二、局部保留投影(Locality Preserving Projections,LPP)

    (1)特点

    • 线性降维
    • 降维的同时保留局部近邻节点的信息
    • 属于流形学习

    (2)目标函数

    未添加限制条件:\[\sum_{ij}({\mathit y_i\,-\,y_j})^2\mathbf W_{ij}\]
    添加限制条件并简化后:
    \[\underset{\underset{\bf a^TXDX^Ta=1}{a}}{\operatorname{argmin}}\bf a^TXLX^Ta\]

    (3)待求解的特征方程

    \[XLX^T\bf {a}\,=\,\lambda XDX^T\bf a\]

    (4)优点

    • 线性方法
    • LPP被定义在空间的任何一点。与之对比的是,ISOMAP,LLE,LE等算法都只能用于训练数据上,而对于新的测试数据却并没有一个比较好的映射
    • LPP算法可以被引入数据集所映射到的RKHS(再生核希尔伯特空间),因此就有了核LPP算法

    三、多维缩放(Multidimensional Scaling,MDS)

    (1)特点

    • 在降维的同时尽量保持欧式距离不变\(:\bf X \to Z\)同时$D_{ij} = {\parallel x_i-x_j\parallel}_2={\parallel z_i-z_j \parallel}_2 $
    • 非线性

    (2)算法核心推导

    1.D->B:
    \(b_{ij}\,=\, -{ {1 \over 2} (dist_{ij}^2 - dist_{i \cdot}^2 - dist_{\cdot j}^2 + dist_{\cdot \cdot}^2 ) }\)
    2.B->Z
    \(\bf B\,=\,V\Lambda V^T \\ {\bf Z\,=\,\Lambda^{1 \over 2}V^T}\)

    四、等度量映射(Isometric Mapping,Isomap)

    (1)特点

    • 属于流形学习的一种
    • 认为低维流形嵌入高维空间后,低维流形两点间的距离是测地线距离(geodesic)
    • 利用两点间的最短路径来近似两点间的测地线距离。因此,当空间中的数据点稠密时,近似效果较好,误差较小;当数据点稀疏时,效果就不太好。

    (2)算法核心步骤

    kNN找近邻 -> 最短路径计算 -> 距离矩阵输入MDS -> 从MDS得到低维的矩阵

    五、局部线性嵌入(Locally Linear Embedding,LLE)

    (1)特点

    • 假设数据在较小的局部是线性的,也就是说,某一个数据可以由它邻域中的几个样本来线性表示,\(x_i=w_{ij}x_{ij}+w_{ik}x_{ik}+w_{il}x_{il}\)
    • 算法试图在降维到低维空间时保持样本间的这种线性关系
    • 相比于Isomap求全局最优解,LLE算法计算量较小

    (2)算法核心推导

    X->W:
    目标函数1
    \[ \underset{w_1,w_2,\cdots,w_m}{\operatorname{min}} \sum_{i=1}^m || x_i-\sum_{j\in Q_i} w_{ij}x_j ||_2^2 \qquad s.t.\; \sum_{j\in Q_i} w_{ij} = 1 \]
    \(C_{jk}=(x_i-x_j)^T(x_i-x_j).\)由上式推出
    \[w_{ij}={{\sum\limits_{k\in Q_i}C_{jk}^{-1}}\over{\sum\limits_{l,s\in Q_i}C_{ls}^{-1}}}\]
    于是得到\(\bf W\)

    W->M->Z
    目标函数2
    \[ \underset{z_1,z_2,\cdots,z_m}{\operatorname{min}} \sum_{i=1}^m || z_i-\sum_{j\in Q_i} w_{ij}z_j ||_2^2 \qquad s.t.\; \sum_{j\in Q_i} w_{ij} = 1 \]
    \(\bf M=(I-W)^T(I-W)\),则目标函数2化简为
    \[\underset{\bf Z}{\operatorname{min}}\,tr(\bf ZMZ^T),\qquad s.t. \; \bf ZZ^T=I\]
    上式可通过特征值分解求解:M最小的\(d^{'}\)个特征值对应的特征向量组成的矩阵即为\(Z^T\).

    六、线性判别分析(Linear Discriminant Analysis,LDA)

    (1)特点

    • 映射后类内方差最小,类间方差最大

    (2)算法核心步骤

    计算类间散度矩阵:
    \[S_b = \sum\limits_{j=1}^{k}N_j(\mu_j-\mu)(\mu_j-\mu)^T\]
    其中,假设有k个类,每个类有\(N_j\)个节点,每个类的均值节点为\(\mu_j\),所有节点的均值节点为\(\mu\)
    计算类内散度矩阵:
    \[S_w = \sum\limits_{j=1}^{k}S_{wj} = \sum\limits_{j=1}^{k}\sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\]
    其中,\(X_j\)为第j类样本的集合.
    目标函数:
    \[\underbrace{arg\;max}_W\;\;J(W) = \frac{\prod\limits_{diag}W^TS_bW}{\prod\limits_{diag}W^TS_wW}\]
    其中\(\prod\limits_{diag}A\)为A的主对角线元素的乘积,W为m×d的矩阵。
    求投影矩阵
    求矩阵\(S_w^{-1}S_b\),计算\(S_w^{-1}S_b\)的最大的d个特征值和对应的d个特征向量\((w_1,w_2,...w_d)\)得到投影矩阵\(W\).
    于是\(z_i=W^Tx_i\)

    七、主分量分析(Principal components analysis,PCA)

    (1)特点

    • 第一种解释:尝试找到一个超平面,样本点到这个超平面的距离足够近
    • 第二种解释:尝试找到一个投影的方向,样本点投影后的点的方差最大

    (2)算法核心

    最大投影方差:
    \(W\)为投影矩阵,则样本\(x^{(i)}\)在新坐标里的投影为\(W^Tx^{(i)}\),在新坐标内的方差为\(W^Tx^{(i)}x^{(i)T}W\),则目标函数为:
    \[\underbrace{arg\;max}_{W}\;tr( W^TXX^TW) \;\;s.t. W^TW=I\]
    由拉格朗日函数可以求得上述方程的解为:
    \[XX^TW=(-\lambda)W\]
    则W为\(XX^T\)的n'个特征向量组成的矩阵,而−λ为\(XX^T\)的特征值。当我们将数据集从n维降到n'维时,需要找到最大的n'个特征值对应的特征向量。这n'个特征向量组成的矩阵W即为我们需要的矩阵。

    Reference

    [1]《机器学习》.周志华
    [2] 刘建平的博客

    转载于:https://www.cnblogs.com/poxiaoge/p/7074822.html

    展开全文
  • 运用PCA对高维数据进行降维,有一下几个特点: (1)数据从高维空间降到低维,因为求方差...(2)使用降维的方法,使算法的运行速度加快; (3)减少用来存储数据的内存空间; (4)从x(i)到z(i)的映射过程中,对...
  •   线性的降维的特点在于,不论是用什么方法,总之最后的效果是用一个线性变换(数学上形式为乘一个矩阵),将高维空间映射到一个低维空间;而线性变换无法分析出一些曲面等的情况,如下图所示。因此我们就需要去寻找...
  • 根据问题提出了相应的适应度函数,针对遗传算法和粗糙集理论两种方法各自的特点,将两种算法适当结合。还把结合后的方法和单一的粗糙集算法在文本分类效果上进行了对比。实验结果表明将遗传算法和粗糙集理论相结合的...
  • 针对传统化工过程中检测变量具有非线性和非高斯性等特点,提出将改进核主元分析(KPCA)和支持向量数据描述(SVDD)相结合化T过程故障诊断方法。根据Mexican hat小波在提取非线性非平稳信号细微特征方面优势...
  • 常用降维方法

    千次阅读 2018-08-07 18:28:36
    降维的同时保留局部近邻节点的信息 属于流形学习 (2)目标函数 未添加限制条件: 添加限制条件并简化后:   (3)需求解的特征方程 (4)优点 LE的局部特征保留特性使得它对孤立点和噪音不会那么敏感 算法...
  • 以高维分类为目标,从分类的准确率与模型解释性角度探讨了降维的必要性,分析了特征选择与抽取2类方法特点,并对常用的特征抽取方法,包括主成分分析(PCA)、偏最小二乘(PLS)和非负矩阵分解(NMF)进行了阐述 考虑到约...
  • 降维方法

    2018-09-14 14:37:34
    kNN 首先,k近邻是一种监督学习方法;...它的特点是,没有显式的训练过程,lazy learning的代表 影响k近邻效果的两个因素; k值的选取,灰常重要,不同的k可能会导致不同的预测结果 距离度量方式的选择(前面...
  • 基于深度特征对齐数据降维算法

    千次阅读 2018-06-07 11:02:51
    基于LDFA的无监督数据降维受LTSA启发,本文提出一种基于深度学习框架的无监督降维算法Related...局部保持 :流形学习的特点(由三个框架可知)不同的流形学习算法有不同的局部保持策略每一种流形学习算法(LLE、LTSA...
  • 首先讨论了文本分类中特征降维的主要方法及其特点,然后分析了一种基于散度差的准则用于特征降维的原理和方法,从理论上对该方法的相关步骤进行了数学论证。在中文文本分类实验中,对KNN分类器进行了基于密度的改进...
  • 针对文本数据高维度的特点和聚类的动态性要求,结合隐含语义分析(LSA)降维,提出一种改进的ART2神经网络文本聚类算法,通过LSA凸显文本和词条之间的语义关系,减少无用噪声,降低数据维度和计算复杂性;...
  • 提出非线性多变量受控对象非线性降维观测器(NRO)一般设计理论,从而使Luenberger线性降维观测器成为其特殊形式。用此方法重构单机一无穷大母线输电系统同步发电机功角例约,可得到一个非常简单、性能良好一维...
  • tsne降维完分块的特点很明显,但也有一些飘来飘去的点,这些点叫做异常点,异常点的剔除在日常生活中非常常见。比如机器零件的异常,食品,饮料等部分指标异常等。 t-SNE和PCA降维后都有异常点,我们试着来分析分析...
  • 本文只讨论单变量离散型时间序列,在这里解释一个问题本文谈论的降维是将时间作为维度来讨论。由于时间序列高维性,数据量大以及不断更新等特点,导致了对于时间序列处理、挖掘变得异常困难,因此采用适当...
  • 针对基于功能核磁共振重构的脑网络状态观测矩阵维数过高和无特征的特点,对其降维方法展开研究,给出了基于t-SNE的脑网络状态观测矩阵降维算法,并且利用Python实现了降维及可视化平台。实验结果表明,与目前主流的...
  • 随着信息技术发展,我们面对数据越来越复杂,往往具有如下特点:(1)样本点数量巨大;(2)数据收集频率越来越高;(3)数据内部存在结构化特征;(4)指标变量众多。例如天气状况,用来描述气象特征指标非常多,像温度,...
  • 在数据压缩、冗余和噪音的消除中,PCA...SVD利用PCA求解过程中的特点,可以有效降低这方面的计算量。下面分两个部分对涉及到的PCA和SVD原理进行分析。 1.主成分分析PCA:  PCA是利用数据里面最主要的部分替代原来...
  • 数据挖掘:降维

    2018-06-15 15:49:43
    特征向量矩阵E的特点,E*E^T = E^T*E = I。一、PCA(主成分分析)利用特征向量进行降维。原理:将矩阵与一个正交单位向量矩阵相乘,意味着在欧式空间上的旋转。求MM^T或者M^T的特征矩阵E,对高维数据进...
  • 特征降维能够有效地提高机器学习的效率,特征子集的搜索过程以及特征评价标准是特征降维的两... 通过列举解决特 征降维上重要问题的各种方案来比较各种算法的特点以及优劣 ,并讨论了该方向上尚未解决的问题和发展 趋势。
  • 伴随着通信与互联网技术不断发展,人们收集和获取数据能力越来越强,而这些数据已呈现出维数高、规模大和结构复杂等特点,当数据量非常大时,会面临维度灾难,即:1.在高维情况下,数据样本稀疏;2.涉及距离、内...
  • 提出一种基于脊波变换的射线图像增强算法,根据射线成像的特点,对射线成像系统采集信号做分段灰度变换,得到多幅图像,每幅图像含有被测工件的某种细节,再将这些图像分别做有限脊波变换,对得到的变换系数进行融合...
  • 降维—PCA

    2020-06-14 17:13:54
    特点:维度降低,数据改变。 2. 目的:算法运算更快效果更好;数据可视化 3. 衡量指标:样本方差,又称可解释性方差,方差越大,特征所带信息量越多。 其中,Var表示某特征方差,n代表样本量,xi表示某特征中...
  • 特征降维能够有效地提高机器学习的效率,特征子集的搜索过程以及特征评价标准是特征降维的两个...通过列举解决特征降维上重要问题的各种方案来比较各种算法的特点以及优劣,并讨论了该方向上尚未解决的问题和发展趋势。
  • 降维与度量学习—上

    2021-05-19 19:08:02
    懒惰学习与急切学习k近邻学习思想影响因素正交变换与正交矩阵主成分分析——线性降维方法线性降维数学表示特点优点缺点子空间性质PCA基础最近重构性推导 基本知识 什么是度量学习? 度量:定义几何中元素之间距离...
  • 特征降维之相关系数

    2020-12-17 13:54:25
    特征降维之相关系数公式特点API示例处理 这里用了 皮尔逊相关系数(Pearson Correlation Coefficient) 反映变量之间相关关系密切程度统计指标 公式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存...
  • 针对视频序列维数高、帧间相关性大、运动轨迹复杂的特点,将LLE非线性降维算法用于视频处理,并重点研究了如何利用该算法对目标跟踪过程中的模板进行预测更新。由于单步预测方法在运动目标发生部分或全部遮挡时无法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 409
精华内容 163
关键字:

降维的特点