搜尋
首頁科技週邊人工智慧常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

本文將比較各種降維技術在機器學習任務中對表格資料的有效性。我們將降維方法應用於資料集,並透過迴歸和分類分析評估其有效性。我們將降維方法應用於從與不同領域相關的 UCI 中取得的各種資料集。總共選擇了 15 個資料集,其中 7 個將用於迴歸,8 個用於分類。

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析


為了讓本文易於閱讀和理解,僅顯示了一個資料集的預處理和分析。實驗從載入資料集開始。資料集被分成訓練集和測試集,然後在平均值為 0 且標準差為 1 的情況下進行標準化。

然後會將降維技術應用於訓練數據,並使用相同的參數對測試集進行變換以進行降維。對於迴歸,使用主成分分析(PCA)和奇異值分解(SVD)進行降維,另一方面對於分類,使用線性判別分析(LDA)

降維後就訓練多個機器學習模型進行測試,並比較了不同模型在不同降維方法獲得的不同資料集上的表現。

資料處理

讓我們透過載入第一個資料集開始這個過程,

import pandas as pd ## for data manipulation
df = pd.read_excel(r'RegressionAirQualityUCI.xlsx')
print(df.shape)
df.head()

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

資料集包含15個列,其中一個是需要預測標籤。在繼續降維之前,日期和時間列也會被刪除。

X = df.drop(['CO(GT)', 'Date', 'Time'], axis=1)
y = df['CO(GT)']
X.shape, y.shape

#Output: ((9357, 12), (9357,))

為了訓練,我們需要將資料集分成訓練集和測試集,這樣可以評估降維方法和在降維特徵空間上訓練的機器學習模型的有效性。模型將使用訓練集進行訓練,表現將使用測試集進行評估。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
X_train.shape, X_test.shape, y_train.shape, y_test.shape

#Output: ((7485, 12), (1872, 12), (7485,), (1872,))

在對資料集使用降維技術之前,可以對輸入資料進行縮放,這樣可以保證所有特徵處於相同的比例上。這對於線性模型來說是至關重要的,因為某些降維方法可以根據資料是否標準化以及對特徵的大小敏感而改變其輸出。

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
X_train.shape, X_test.shape

主成分分析(PCA)

線性降維的PCA方法降低了資料的維數,同時保留了盡可能多的資料變異數。

這裡將使用Python sklearn.decomposition模組的PCA方法。要保留的元件數量是透過這個參數指定的,這個數字會影響在較小的特徵空間中包含多少維度。作為一種替代方法,我們可以設定要保留的目標方差,它根據捕獲的資料中的方差量建立組件的數量,我們在這裡設定為0.95

from sklearn.decomposition import PCA
pca = PCA(n_compnotallow=0.95)
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)
X_train_pca

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

上述特徵代表什麼?主成分分析(PCA)將資料投射到低維空間,試圖盡可能保留資料中的不同之處。雖然這可能有助於特定的操作,但也可能使數據更難以理解。 ,PCA可以識別資料中的新軸,這些軸是初始特徵的線性融合。

奇異值分解(SVD)

SVD是一種線性降維技術,它將資料變異數較小的特徵投影到低維空間。我們需要設定降維後要保留的組件數量。這裡我們將把維度降低 2/3。

from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_compnotallow=int(X_train.shape[1]*0.33))
X_train_svd = svd.fit_transform(X_train)
X_test_svd = svd.transform(X_test)
X_train_svd

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

訓練迴歸模型

現在,我們將開始使用上述三種資料(原始資料集、PCA和SVD)對模型進行訓練和測試,並且我們使用多個模型進行比較。

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.metrics import r2_score, mean_squared_error
import time

train_test_ML:這個函數將完成與模型的訓練和測試相關的重複任務。透過計算rmse和r2_score來評估所有模型的效能。並傳回包含所有詳細資訊和計算值的資料集,還將記錄每個模型在各自的資料集上訓練和測試所花費的時間。

def train_test_ML(dataset, dataform, X_train, y_train, X_test, y_test):
temp_df = pd.DataFrame(columns=['Data Set', 'Data Form', 'Dimensions', 'Model', 'R2 Score', 'RMSE', 'Time Taken'])
for i in [LinearRegression, KNeighborsRegressor, SVR, DecisionTreeRegressor, RandomForestRegressor, GradientBoostingRegressor]:
start_time = time.time()
reg = i().fit(X_train, y_train)
y_pred = reg.predict(X_test)
r2 = np.round(r2_score(y_test, y_pred), 2)
rmse = np.round(np.sqrt(mean_squared_error(y_test, y_pred)), 2)
end_time = time.time()
time_taken = np.round((end_time - start_time), 2)
temp_df.loc[len(temp_df)] = [dataset, dataform, X_train.shape[1], str(i).split('.')[-1][:-2], r2, rmse, time_taken]
return temp_df

原始資料:

original_df = train_test_ML('AirQualityUCI', 'Original', X_train, y_train, X_test, y_test)
original_df

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

可以看到KNN迴歸器和隨機森林在輸入原始資料時表現相對較好,隨機森林的訓練時間是最長的。

PCA

pca_df = train_test_ML('AirQualityUCI', 'PCA Reduced', X_train_pca, y_train, X_test_pca, y_test)
pca_df

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

#

与原始数据集相比,不同模型的性能有不同程度的下降。梯度增强回归和支持向量回归在两种情况下保持了一致性。这里一个主要的差异也是预期的是模型训练所花费的时间。与其他模型不同的是,SVR在这两种情况下花费的时间差不多。

SVD

svd_df = train_test_ML('AirQualityUCI', 'SVD Reduced', X_train_svd, y_train, X_test_svd, y_test)
svd_df

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

与PCA相比,SVD以更大的比例降低了维度,随机森林和梯度增强回归器的表现相对优于其他模型。

回归模型分析

对于这个数据集,使用主成分分析时,数据维数从12维降至5维,使用奇异值分析时,数据降至3维。

  • 就机器学习性能而言,数据集的原始形式相对更好。造成这种情况的一个潜在原因可能是,当我们使用这种技术降低维数时,在这个过程中会发生信息损失。
  • 但是线性回归、支持向量回归和梯度增强回归在原始和PCA案例中的表现是一致的。
  • 在我们通过SVD得到的数据上,所有模型的性能都下降了。
  • 在降维情况下,由于特征变量的维数较低,模型所花费的时间减少了。

将类似的过程应用于其他六个数据集进行测试,得到以下结果:

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

我们在各种数据集上使用了SVD和PCA,并对比了在原始高维特征空间上训练的回归模型与在约简特征空间上训练的模型的有效性

  • 原始数据集始终优于由降维方法创建的低维数据。这说明在降维过程中可能丢失了一些信息。
  • 当用于更大的数据集时,降维方法有助于显著减少数据集中的特征数量,从而提高机器学习模型的有效性。对于较小的数据集,改影响并不显著。
  • 模型的性能在original和pca_reduced两种模式下保持一致。如果一个模型在原始数据集上表现得更好,那么它在PCA模式下也会表现得更好。同样,较差的模型也没有得到改进。
  • 在SVD的情况下,模型的性能下降比较明显。这可能是n_components数量选择的问题,因为太小数量肯定会丢失数据。
  • 决策树在SVD数据集时一直是非常差的,因为它本来就是一个弱学习器

训练分类模型

对于分类我们将使用另一种降维方法:LDA。机器学习和模式识别任务经常使用被称为线性判别分析(LDA)的降维方法。这种监督学习技术旨在最大化几个类或类别之间的距离,同时将数据投影到低维空间。由于它的作用是最大化类之间的差异,因此只能用于分类任务。

from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.metrics import accuracy_score, f1_score, recall_score, precision_score

继续我们的训练方法

def train_test_ML2(dataset, dataform, X_train, y_train, X_test, y_test):
temp_df = pd.DataFrame(columns=['Data Set', 'Data Form', 'Dimensions', 'Model', 'Accuracy', 'F1 Score', 'Recall', 'Precision', 'Time Taken'])
for i in [LogisticRegression, KNeighborsClassifier, SVC, DecisionTreeClassifier, RandomForestClassifier, GradientBoostingClassifier]:
start_time = time.time()
reg = i().fit(X_train, y_train)
y_pred = reg.predict(X_test)
accuracy = np.round(accuracy_score(y_test, y_pred), 2)
f1 = np.round(f1_score(y_test, y_pred, average='weighted'), 2)
recall = np.round(recall_score(y_test, y_pred, average='weighted'), 2)
precision = np.round(precision_score(y_test, y_pred, average='weighted'), 2)
end_time = time.time()
time_taken = np.round((end_time - start_time), 2)
temp_df.loc[len(temp_df)] = [dataset, dataform, X_train.shape[1], str(i).split('.')[-1][:-2], accuracy, f1, recall, precision, time_taken]
return temp_df

开始训练

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

lda = LinearDiscriminantAnalysis()
X_train_lda = lda.fit_transform(X_train, y_train)
X_test_lda = lda.transform(X_test)

预处理、分割和数据集的缩放,都与回归部分相同。在对8个不同的数据集进行新联后我们得到了下面结果:

常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析

分类模型分析

我们比较了上面所有的三种方法SVD、LDA和PCA。

  • LDA数据集通常优于原始形式的数据和由其他降维方法创建的低维数据,因为它旨在识别最有效区分类的特征的线性组合,而原始数据和其他无监督降维技术不关心数据集的标签。
  • 降维技术在应用于更大的数据集时,可以极大地减少了数据集中的特征数量,这提高了机器学习模型的效率。在较小的数据集上,影响不是特别明显。除了LDA(它在这些情况下也很有效),因为它们在一些情况下,如二元分类,可以将数据集的维度减少到只有一个。
  • 当我们在寻找一定的性能时,LDA可以是分类问题的一个非常好的起点。
  • SVD与回归一样,模型的性能下降很明显。需要调整n_components的选择。

总结

我们比较了一些降维技术的性能,如奇异值分解(SVD)、主成分分析(PCA)和线性判别分析(LDA)。我们的研究结果表明,方法的选择取决于特定的数据集和手头的任务。

對於迴歸任務,我們發現PCA通常比SVD表現得更好。在分類的情況下,LDA優於SVD和PCA,以及原始資料集。線性判別分析(LDA)在分類任務中始終擊敗主成分分析(PCA)的這個是很重要的,但這並不意味著LDA在一般情況下是一種更好的技術。這是因為LDA是一種監督學習演算法,它依賴有標籤的數據來定位數據中最具鑑別性的特徵,而PCA是一種無監督技術,它不需要有標籤的數據,並尋求在數據中保持盡可能多的變異數。因此,PCA可能更適合於無監督的任務或可解釋性至關重要的情況,而LDA可能更適合涉及標記資料的任務。

雖然降維技術可以幫助減少資料集中的特徵數量,並提高機器學習模型的效率,但重要的是要考慮對模型性能和結果可解釋性的潛在影響。

本文完整程式碼:

https://github.com/salmankhi/DimensionalityReduction/blob/main/Notebook_25373.ipynb

以上是常見降維技術比較:保持資訊完整性下降低資料維度的可行性分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
在LLMS中調用工具在LLMS中調用工具Apr 14, 2025 am 11:28 AM

大型語言模型(LLMS)的流行激增,工具稱呼功能極大地擴展了其功能,而不是簡單的文本生成。 現在,LLM可以處理複雜的自動化任務,例如Dynamic UI創建和自主a

多動症遊戲,健康工具和AI聊天機器人如何改變全球健康多動症遊戲,健康工具和AI聊天機器人如何改變全球健康Apr 14, 2025 am 11:27 AM

視頻遊戲可以緩解焦慮,建立焦點或支持多動症的孩子嗎? 隨著醫療保健在全球範圍內挑戰,尤其是在青年中的挑戰,創新者正在轉向一種不太可能的工具:視頻遊戲。現在是世界上最大的娛樂印度河之一

沒有關於AI的投入:獲勝者,失敗者和機遇沒有關於AI的投入:獲勝者,失敗者和機遇Apr 14, 2025 am 11:25 AM

“歷史表明,儘管技術進步推動了經濟增長,但它並不能自行確保公平的收入分配或促進包容性人類發展,”烏托德秘書長Rebeca Grynspan在序言中寫道。

通過生成AI學習談判技巧通過生成AI學習談判技巧Apr 14, 2025 am 11:23 AM

易於使用,使用生成的AI作為您的談判導師和陪練夥伴。 讓我們來談談。 對創新AI突破的這種分析是我正在進行的《福布斯》列的最新覆蓋範圍的一部分,包括識別和解釋

泰德(Ted)從Openai,Google,Meta透露出庭,與我自己自拍泰德(Ted)從Openai,Google,Meta透露出庭,與我自己自拍Apr 14, 2025 am 11:22 AM

在溫哥華舉行的TED2025會議昨天在4月11日舉行了第36版。它的特色是來自60多個國家 /地區的80個發言人,包括Sam Altman,Eric Sc​​hmidt和Palmer Luckey。泰德(Ted)的主題“人類重新構想”是量身定制的

約瑟夫·斯蒂格利茲(Joseph Stiglitz約瑟夫·斯蒂格利茲(Joseph StiglitzApr 14, 2025 am 11:21 AM

約瑟夫·斯蒂格利茨(Joseph Stiglitz)是2001年著名的經濟學家,是諾貝爾經濟獎的獲得者。斯蒂格利茨認為,AI可能會使現有的不平等和合併權力惡化,並在一些主導公司手中加劇,最終破壞了經濟上的經濟。

什麼是圖形數據庫?什麼是圖形數據庫?Apr 14, 2025 am 11:19 AM

圖數據庫:通過關係徹底改變數據管理 隨著數據的擴展及其特徵在各個字段中的發展,圖形數據庫正在作為管理互連數據的變革解決方案的出現。與傳統不同

LLM路由:策略,技術和Python實施LLM路由:策略,技術和Python實施Apr 14, 2025 am 11:14 AM

大型語言模型(LLM)路由:通過智​​能任務分配優化性能 LLM的快速發展的景觀呈現出各種各樣的模型,每個模型都具有獨特的優勢和劣勢。 有些在創意內容gen上表現出色

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具