日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PCA降维代码实现

發(fā)布時間:2024/9/18 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PCA降维代码实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

主成分分析(Principal Components Analysis),簡稱PCA,是一種數(shù)據(jù)降維技術(shù),用于數(shù)據(jù)預(yù)處理。一般我們獲取的原始數(shù)據(jù)維度都很高,比如1000個特征,在這1000個特征中可能包含了很多無用的信息或者噪聲,真正有用的特征才100個,那么我們可以運用PCA算法將1000個特征降到100個特征。這樣不僅可以去除無用的噪聲,還能減少很大的計算量。

在PCA中,數(shù)據(jù)從原來的坐標系轉(zhuǎn)化到新的坐標系中。當然這里新的坐標系也不是隨便設(shè)定的,而是應(yīng)該根據(jù)數(shù)據(jù)本身的特征來設(shè)計。通常第一個新坐標軸選擇的是原始數(shù)據(jù)方差最大的方向,第二個坐標軸是與第一個坐標軸正交且具有最大方差的方向。這句話的意思就是,第二個選取的方向應(yīng)該和第一個方向具有很弱的相關(guān)性。

設(shè)計思路

PCA主成分分析算法,是一種線性降維,將高維坐標系映射到低維坐標系中。

如何選擇低維坐標系呢?
就是求協(xié)方差的特征值和特征向量過協(xié)方差矩陣的特征值和特征向量,特征向量代表坐標系,特征值代表映射到新坐標的長度。

然后做數(shù)據(jù)轉(zhuǎn)換。

但是有沒有覺得很神奇,為什么求協(xié)方差的較大特征向量就是最理想的k維向量?

設(shè)計實現(xiàn)

  • 原始數(shù)據(jù)處理:這里選取二維降一維進行展示,其中x,y是兩個維度

    行代表了樣例,列代表特征(TF-IDF)分別求x和y的平均值,然后對于所有的樣例,都減去對應(yīng)的均值。這里x的均值是1.81,y的均值是1.91,那么第一個樣例減去均值后即為(0.69,0.49)

    留一個思考1:為什么我們要減去均值,作用是什么?
  • 求協(xié)方差矩陣
    我們上面協(xié)方差矩陣是二維的,所以是二行二列
  • mat = np.array([[0.69, -1.31, 0.39, 0.09, 1.29, 0.49, 0.19, -0.81, -0.31, -0.71],[0.49, -1.21, 0.99, 0.29, 1.09, 0.79, -0.31, -0.81, -0.31, -1.01]])# 求協(xié)方差cov = np.cov(mat)print(cov)

  • 求協(xié)方差的特征值和特征向量
  • 這邊用到線性代數(shù)知識,不會的同學(xué)可以自行學(xué)習
    下圖第一個是特征值,第二個是特征向量

    # 特征值, 特征向量eigenvalue, featurevector = np.linalg.eig(cov)print(eigenvalue)print(featurevector)

    特征值: [0.0490834 1.28402771]
    特征向量:[[-0.73517866 -0.6778734 ]
    [ 0.6778734 -0.73517866]]

    特征值0.0490833989對應(yīng)特征向量為第一條向量,這里的特征向量都歸一化為單位向量。

  • 選取最大k個特征值對應(yīng)的特征向量(其中k是小于維度總數(shù)的一個值):
    將特征值按照從大到小的順序排序,選擇其中最大的k個,然后將其對應(yīng)的k個特征向量分別作為列向量組成特征向量矩陣。這里特征值只有兩個,我們選擇其中最大的那個,這里是1.28402771,對應(yīng)的特征向量是(-0.677873399, -0.735178656)T。我們是從二維降到一維,所以k取一,并且是最大的。
  • 留兩個思考題:

    思考二: 為什么要選擇最大的k?依據(jù)是什么?
    思考三: k在實際運用中選取多少合適?

  • 得到新的矩陣
    將樣本點投影到選取的特征向量上。假設(shè)樣例數(shù)為m,特征數(shù)為n,減去均值后的樣本矩陣為DataAdjust(mn),
    協(xié)方差矩陣是nn,
    選取的k個特征向量組成的矩陣為EigenVectors(nk)。
    那么投影后的數(shù)據(jù)FinalData為FinalData(101)
    = DataAdjust(10*2矩陣) x 特征向量(-0.677873399, -0.735178656)T
    得到的結(jié)果是下圖

    降維完成,同時又達到保真性
  • 我們回答思考一:為什么數(shù)據(jù)要減去均值

    簡單來說把數(shù)據(jù)中心化,減少過度擬合的可能性。如果有喜歡探索為什么的同學(xué)可以參看附錄一

    我們回答思考二:為什么選取k的特征值越大越好?

    最大方差理論: 前輩結(jié)論:最好的k維特征是將n維樣本點轉(zhuǎn)換為k維后,每一維上的樣本方差都很大。
    why?
    因為投影后的樣本點之間方差最大(也可以說是投影的絕對值之和最大)
    把二維降為一維如果方差不大那么就會在主方向軸投影點會重疊,損失信息很大,并且丟失的向量是很重要的。看下圖4,5吧!(圖4,5數(shù)據(jù)過原點已經(jīng)數(shù)據(jù)中心化)圖四的左半部分是最優(yōu)的
    在u>x,u為主向量時。我們可以看到點在u上的投影和u和u的正交向量有關(guān)。顯然圖4左邊的投影面比右邊的大并且投影點之間的方差大。圖五是圖四的單個點細節(jié)圖。


    我們總結(jié)一下:

    特征值在線性代數(shù)里面我們求過無數(shù)次了,對一個n*n的對稱矩陣進行分解,我們可以求出它的特征值和特征向量,就會產(chǎn)生n個n維的正交基,每個正交基會對應(yīng)一個特征值。然后把矩陣投影到這N個基上,此時特征值的模就表示矩陣在該基的投影長度。
    特征值越大,說明矩陣在對應(yīng)的特征向量上的方差越大,樣本點越離散,越容易區(qū)分,信息量也就越多。因此,特征值最大的對應(yīng)的特征向量方向上所包含的信息量就越多,如果某幾個特征值很小,那么就說明在該方向的信息量非常少,我們就可以刪除小特征值對應(yīng)方向的數(shù)據(jù),只保留大特征值方向?qū)?yīng)的數(shù)據(jù),這樣做以后數(shù)據(jù)量減小,但有用的信息量都保留下來了。PCA就是這個原理。

    我們回答思考三:在n維中選多少個k最合適?
    當然,k(特征向量)取得越多越好,k越多熵越大,樣本不確定性越大,越接近真實數(shù)據(jù)。如果k越大就達不到我們說的降維效果了。所以這是個經(jīng)驗之談
    有些研究工作表明,所選的主軸總長度占所有主軸長度之和的大約85% 即可,其實,這只是一個大體的說法,具體選多少個,要看實際情況而定。如下圖公式。注:n為樣本數(shù),k為我們選的維數(shù)。

    總結(jié)

    步驟回顧

  • 去除平均值
  • 計算協(xié)方差矩陣
  • 計算協(xié)方差矩陣的特征值和特征向量
  • 特征值從大到小排序
  • 保留最上面k個特征向量
  • 將數(shù)據(jù)轉(zhuǎn)換到k個向量構(gòu)件的新空間中
  • n維矩陣*k維特征向量=k維矩陣
    降維完成!!!
  • 附錄一:
    為了說明什么是數(shù)據(jù)的主成分,先從數(shù)據(jù)降維說起。數(shù)據(jù)降維是怎么回事兒?假設(shè)三維空間中有一系列點,這些點分布在一個過原點的斜面上,如果你用自然坐標系x,y,z這三個軸來表示這組數(shù)據(jù)的話,需要使用三個維度,而事實上,這些點的分布僅僅是在一個二維的平面上,問題出在哪里?把x,y,z坐標系旋轉(zhuǎn)一下,使數(shù)據(jù)所在平面與x,y平面重合。如果把旋轉(zhuǎn)后的坐標系記為x’,y’,z’,那么這組數(shù)據(jù)的表示只用x’和y’兩個維度表示即可!當然了,如果想恢復(fù)原來的表示方式,那就得把這兩個坐標之間的變換矩陣存下來。這樣就能把數(shù)據(jù)維度降下來了!看下圖進行理解這段話

    但是,我們要看到這個過程的本質(zhì),如果把這些數(shù)據(jù)按行或者按列排成一個矩陣,那么這個矩陣的秩就是2!這些數(shù)據(jù)之間是有相關(guān)性(有非零解)的,這些數(shù)據(jù)構(gòu)成的過原點的向量的最大線性無關(guān)組包含2個向量,這就需要平面過原點的!這就是數(shù)據(jù)中心化的緣故!將坐標原點平移到數(shù)據(jù)中心,這樣原本不相關(guān)的數(shù)據(jù)在這個新坐標系中就有相關(guān)性了!增加基向量的正交性。有趣的是,三點一定共面,也就是說三維空間中任意三點中心化后都是線性相關(guān)的,一般來講n維空間中的n個點一定能在一個n-1維子空間中分析!n維歐氏空間中余維度等于一的線性子空間,也就是必須是(n-1)維度。這是平面中的直線、空間中的平面之推廣。

    與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的PCA降维代码实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。