[Day 7] 非監督式學習-降維 - iT 邦幫忙
文章推薦指數: 80 %
降維演算法. 常見的降維方法有兩種分別有線性方法的主成分分析(PCA)以及非線性的t-隨機鄰近嵌入 ...
2021iThome鐵人賽
DAY
7
0
AI&Data
全民瘋AI系列2.0系列第
7篇
[Day7]非監督式學習-降維
13th鐵人賽
ai
人工智慧
機器學習
10程式中
2021-09-1917:37:32596瀏覽
非監督式學習-降維
今日學習目標
降維觀念
何謂降維?降維有什麼優點?
常見兩種降維方法
PCA&t-SNE
降維(DimensionReduction)
一般資料常見的表示方法有一維(數線)、二維(XY平面)和三維(XYZ立體)。
當大於三維的資料就難以視覺化呈現,那麼我們該如何表示高維度的資料同時又不能壓縮原本資料間彼此的關連性呢?這時降維就能幫助你了!降維顧名思義,就是原本的資料處於在一個比較高的維度作標上,我們希望找到一個低維度的作標來描述它,但又不能失去資料本身的特質。
為什麼要降維?
想想看如果我們能夠把一些資料做壓縮,同時又能夠保持資料原來的特性。
因此我們可以用比較少的空間,或是計算時用比較少的資源就可以得到跟沒有做資料壓縮之前得到相似的結果。
此外資料降維可以幫助我們進行資料視覺化,二維可以用平面圖表示、三維可以用立體圖作表示,而大於三維的空間難以視覺化做呈現。
降維演算法
常見的降維方法有兩種分別有線性方法的主成分分析(PCA)以及非線性的t-隨機鄰近嵌入法(t-SNE)。
下圖例子是將28*28大小的手寫數字照片,分別透過上述兩種降維方法將一張784個像素的影像降成2維並投射在平面座標上。
我們可以發現PCA降為後可以大致將0~9的手寫數字照片在平面上分成十群,不過彼此間的界線還是很模糊。
而我們透過t-SNE方法降為後可以看到平面上很清楚的將這十個數字分成十群。
因此我們可以得知手寫數字的影像在非線性的降維轉換效果是比較好的。
Principalcomponentanalysis(PCA)
T-DistributedStochasticNeighborEmbedding(t-SNE)
因為t-SNE允許非線性的轉換,此外t-SNE使用了更複雜的公式來表達高維與低維之間的關係。
因此在這種0~9有十個分類的情況下可以確保彼此間的距離會被區隔該而不會重疊。
Principalcomponentanalysis(PCA)
主成份分析(Principalcomponentanalysis,PCA)。
其主要目的是把高維的點頭影到低維的空間上,並且低維度的空間保有高維空間中大部分的性質。
透過將一個具有n個特徵空間的樣本,轉換為具有k個特徵空間的樣本,其中k必定要小於n。
此外PCA只允許線性的轉換。
如下圖所示,我們將捐尾花朵資料集進行PCA降維。
將原有四個特徵分別有花瓣與花萼的長與寬,透過線性轉換成兩維並投射在平面上。
我們可以發現三種花的類別在平面上各自都有線性的趨勢,也就是圖中紅色的線條。
PCA的主要步驟
首先一開始先求出所有資料點中心µ,也就是將每一個資料點的平均。
接著將每一個資料點減去µ,也就是做資料點的平移,平移後原點是所有點的中心。
第三步計算特徵協方差矩陣,其中矩陣對角線上分別是每個特徵的方差,而非對角線上的數值是不同特徵間彼此的協方差。
協方差是衡量兩個變數同時變化的變化程度,協方差絕對值越大兩者對彼此的影響越大。
第四步驟對矩陣進行特徵值分解,計算協方差矩陣的特徵向量和特徵值並選取特徵向量。
第五步驟將特徵值由小到大排序,並選取其中最大的k個特徵。
然後將這些k個特徵向量作為特徵向量矩陣。
最後對資料集中的每一個特徵轉換為新的特徵。
先求出所有資料點中心µ
將每一個資料點減去µ
計算特徵的協方差矩陣
對矩陣進行特徵值分解
取出最大的k個特徵值對應的特徵向量
將資料點投影到選取的特徵向量上
T-DistributedStochasticNeighborEmbedding(t-SNE)
t-SNE目標跟PCA是一樣的,它們都希望把高維的資料投影到低維中,並且保留高維中的點與點之間的關係與特性。
兩者不同的點在於t-SNE允許非線性的轉換。
因為t-SNE使用了更複雜的公式來表達高維與低維之間的關係。
主要是將高維的數據用高斯分佈的機率密度函數近似,而低維數據的部分使用t分佈的方式來近似。
PCA&t-SNE整理
PCA和t-SNE是兩個不同降維的方法,PCA的優點在於簡單若新的點要映射時直接代入公式即可得出降維後的點。
若t-SNE有新的點近來時我們沒有去計算新的點和舊的點之間的關係因此我們無法將新的點投影下去。
t-SNE的優點是可以保留原本高維距離較遠的點降維後依然保持遠的距離,因此這些群降維後依然保持群的特性。
PCA允許線性的轉換
t-SNE允許非線性的轉換
[程式實作]
PCA
fromsklearn.decompositionimportPCA
pca=PCA(n_components=2,iterated_power=1)
train_reduced=pca.fit_transform(X_train)
print('PCA方差比:',pca.explained_variance_ratio_)
print('PCA方差值:',pca.explained_variance_)
t-SNE
fromsklearn.manifoldimportTSNE
tsneModel=TSNE(n_components=2,random_state=42,n_iter=1000)
train_reduced=tsneModel.fit_transform(X_train)
t-SNE不適用於新資料。
PCA降維可以適用新資料,可呼叫transform()函式即可。
而t-SNE則不行。
因為演算法的關係在scikit-learn套件中的t-SNE演算法並沒有transform()函式可以呼叫。
Reference
深入學習主成分分析(PCA)演算法原理及其Python實現
本系列教學內容及範例程式都可以從我的GitHub取得!
留言
追蹤
檢舉
上一篇
[Day6]非監督式學習K-means分群
下一篇
[Day8]線性迴歸(LinearRegression)
系列文
全民瘋AI系列2.0
共31篇
目錄
RSS系列文
訂閱系列文
29人訂閱
27
[Day27]機器學習常犯錯的十件事
28
[Day28]儲存訓練好的模型
29
[Day29]使用PythonFlask架設API吧!
30
[Day30]使用Heroku部署機器學習API
31
[全民瘋AI系列2.0]完賽總結
完整目錄
尚未有邦友留言
立即登入留言
iT邦幫忙鐵人賽
參賽組數
1087組
團體組數
52組
累計文章數
20481篇
完賽人數
572人
鐵人賽最新文章
【Day31】新加坡工作後續的時程
重構原本的內容(golang)(Day22)
Laravel-jQueryAJAX範例
2022/1/2更新
.NetCoreWebApi_筆記21_Swagger及OpenAPI介紹與配置使用方式_API管理與測試探討
.NetCoreWebApi_筆記20_api結合ADO.NET資料庫操作part8_新聞文章查詢
.NetCoreWebApi_筆記19_api結合ADO.NET資料庫操作part7_新聞文章的編輯更新與刪除
.NetCoreWebApi_筆記18_api結合ADO.NET資料庫操作part6_新聞文章表格陳列查詢
.NetCoreWebApi_筆記17_api結合ADO.NET資料庫操作part5_新聞文章新增_新聞類別元素透過API綁定方式
[Bonus系列]-使用useCallback&useMemo的正確時機是什麼?
前往鐵人賽
技術推廣專區
[Day2]抓取每日收盤價
[Day1]基本工具安裝
利用python取得永豐銀行API的Nonce
[Day03]tinyML開發板介紹
永豐金融API測試員
[Day01]在享受tinyML這道美食之前
[Day3]使用ta-lib製作指標
[Day4]函數打包與買進持有報酬率試算
計算API所需要的參數:HashID
計算API所需要的參數:IV
前往鐵人賽
熱門問題
怎麼樣將系統遷移到SSD
我好像不小心把windows系統刪掉了…
伺服器HA軟體
Exchange2016&2019無法正常收信(無錯誤訊息)(已解決)(MicrosoftExchangeyear2022bug)
新手想當AI工程師請益?
想問如何讓筆電顯示出畫面
BIOS抓不到電腦有1長音2短音叫聲
共用印表機無法連線
yahoo搜尋引擎跳過php登入後的session機制,直接讀取用session保護的頁面資料
關於for迴圈取得form裡面POST的資料(更*找到錯誤了,謝謝)
IT邦幫忙
站方公告
【2021iThome鐵人賽】登登登!究竟獎落誰家,2021iThome鐵人賽得獎名單正式揭曉
熱門tag
看更多
13th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
windows
php
python
windowsserver
linux
c#
程式設計
資訊安全
css
vue.js
sql
分享
熱門回答
怎麼樣將系統遷移到SSD
關於團隊合作
共用印表機無法連線
BIOS抓不到電腦有1長音2短音叫聲
yahoo搜尋引擎跳過php登入後的session機制,直接讀取用session保護的頁面資料
伺服器HA軟體
升級Windows11
MQTT伺服器連不上
python爬蟲書籍推薦
[已解決]急!!!csv匯入MySQLWorkbench出現錯誤訊息請問如何解決
熱門文章
2022/1/2更新
30天程式語言研究
[DAY3]SQL新手的懶人筆記
Laravel-jQueryAJAX範例
[詢問]網路分析儀
django新手村12-----黑名單
【Day31】新加坡工作後續的時程
Java學習之路08---方法
django新手村14-----添加資料
30天程式語言研究
一週點數排行
更多點數排行
海綿寶寶(antijava)
Gary(mosbbs)
raytracy(raytracy)
純真的人(jer5173)
㊣浩瀚星空㊣(yoching)
ccenjor(ccenjor)
Samuel(kuanyu)
juck30808(juck30808)
居然解出來了(partyyaya)
huahualiu(ffang55tw)
×
At
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{result.label}}
{{result.account}}
關閉
延伸文章資訊
- 1[Day 7] 非監督式學習-降維 - iT 邦幫忙
降維演算法. 常見的降維方法有兩種分別有線性方法的主成分分析(PCA)以及非線性的t-隨機鄰近嵌入 ...
- 2一步步教你輕鬆學主成分分析PCA降維演算法
1.2 什麼是降維 · 主成分分析就是找出一個最主要的特徵,然後進行分析。 · 因子分析(Factor Analysis),將多個實測變數轉換為少數幾個綜合指標。 · 獨立成分 ...
- 3【机器学习】降维——PCA(非常详细) - 知乎专栏
PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。 PCA 的数学推导可以从最大可分型和最近重构 ...
- 4PCA(主成分分析)降維的概念、作用及演算法實現
Principal Component Analysis(PCA):主成分分析法,是最常用的線性降維方法。它的目標是通過某種線性投影,將高維的資料對映到低維的空間中表示,即 ...
- 5主成分分析PCA數據降維原理及python應用(葡萄酒案例分析)
數據降維的一種方法是通過特徵提取實現,主成分分析PCA就是一種無監督 ... 換言之,PCA技術就是在高維數據中尋找最大方差的方向,將這個方向投影到 ...