降維練習題

2021-09-28 23:38:41 字數 1907 閱讀 9123

下面的習題來自機器學習實戰:基於scikit-learn和tensorflow一書。

降低資料集維度的主要動機是什麼?有什麼主要弊端?

答:降維的動機:1. 加速後續的訓練演算法(在某些情況下,也可能為了消除雜訊和冗餘特種額,使訓練演算法效能更好)2. 將資料視覺化,從中獲得洞察,了解最重要的特徵 3. 節省空間(壓縮)

主要弊端:1. 丟失部分資訊,可能使後續訓練演算法效能降低 2. 可能是計算密集型的 3. 為機器學習流水線新增了些許複雜度 4. 轉換後的特徵往往難以解釋

什麼是維度的詛咒?

答:維度的詛咒是指許多在低維空間中不存在的問題,在高維空間 中發生。在機器學習領域,乙個常見的現象是隨機抽樣的高維向量通 常非常稀疏,提公升了過度擬合的風險,同時也使得在沒有充足訓練數 據的情況下,要識別資料中的模式非常困難。

一旦資料集被降維,是否還有可能逆轉?如果有,怎麼做?如 果沒有,為什麼?

答: 一旦使用我們討論的任意演算法減少了資料集的維度,幾乎不可 能再將操作完美地逆轉,因為在降維過程中必然丟失了一部分資訊。 雖然有一些演算法(例如pca)擁有簡單的逆轉換過程,可以重建出與 原始資料集相似的資料集,但是也有一些演算法不能實現逆轉(例如tsne)。

pca可以用來給高度非線性資料集降維麼?

答:對大多數資料集來說,pca可以用來進行顯著降維,即便是高 度非線性的資料集,因為它至少可以消除無用的維度。但是如果不存 在無用的維度(例如瑞士卷),那麼使用pca降維將會損失太多信 息。你希望的是將瑞士卷展開,而不是將其壓扁。

假設你在乙個1000維資料集上執行pca,方差解釋比設為 95%。產生的結果資料集維度是多少?

答:這是個不好回答的問題,它取決於資料集。我們來看看兩個極 端的例子。首先,假設資料集是由幾乎完全對齊的點組成的,在這種 情況下,pca可以將資料集降至一維,同時保留95%的差異性。現 在,試想資料集由完全隨機的點組成,分散在1000個維度上,在這種 情況下,需要在1000個維度上保留95%的差異性。所以,這個問題的 答案是:取決於資料集,它可能是1到1000之間的任何數字。將解釋 方差繪製成關於維度數量的函式,可以對資料集的內在維度獲得乙個 粗略的概念。

如何在你的資料集上評估降維演算法的效能?

答:直觀來說,如果降維演算法能夠消除許多維度並且不會丟失太多 資訊,那麼這就算乙個好的降維演算法。進行衡量的方法之一是應用逆 轉換然後測量重建誤差。然而並不是所有的降維演算法都提供了逆轉 換。還有另一種選擇,如果你將降維當作乙個預處理過程,用在其他 機器學習演算法(比如隨機森林分類器)之前,那麼可以通過簡單測量 第二個演算法的效能來進行評估。如果降維過程沒有損失太多資訊,那麼第二個演算法的效能應該跟使用原始資料集一樣好。

鏈結兩個不同的降維演算法有意義麼?

答:鏈結兩個不同的降維演算法絕對是有意義的。常見的例子是使用 pca快速去除大量無用的維度,然後應用另一種更慢的降維演算法,如 lle。這樣兩步走的策略產生的結果可能與僅使用lle相同,但是時 間要短得多。

載入mnist資料集(第3章中介紹),將其分為乙個訓練集和 乙個測試集(將前60000個例項用於訓練,其餘10000個用來測試)。 在訓練集上訓練乙個隨機森林分類器,並記錄訓練時長,然後在測試 集上對結果模型進行評估。接下來,用pca給資料集降維,方差解釋 比設為95%。在降維後的新資料集上訓練乙個新的隨機森林分類器, 看看需要多長時間,是不是快得多?最後,在測試集上評估分類器, 跟前乙個分類器比起來如何?

使用t-sne將mnist資料集降至兩個維度,然後用matplotlib繪 制結果。你可以通過散點圖——用10個不同的顏色來代表每個影象的 目標類別,或者,你也可以在每個例項的位置寫入彩色數字,甚至你 還可以繪製數字影象本身的縮小版(如果你繪製所有數字,視覺效果 會太凌亂,所以你要麼繪製乙個隨機樣本,要麼選擇單個例項,但是 這個例項的周圍最好沒有其他繪製的例項)。現在你應該得到了乙個 很好的視覺化結果及各自分開的數字集群。嘗試使用其他降維演算法, 如pca、lle或mds等,比較視覺化結果。

運維 10 14 15 練習題

在rhel7系統中,小王希望將他執行的ls命令的輸出結果儲存在當前目錄下檔案output.ls中,以供日後進行分析和使用,但要求不覆蓋原檔案的內容,他應該使用的命令是 c a.ls output.ls b.ls output.ls c.ls output.ls c.ls output.ls 檢視後台...

一維陣列練習題

關於陣列的說法錯誤的是 a 陣列中可以儲存多個資料 b 陣列中儲存的多個資料的型別必須一致 c 陣列的長度一旦確定,可以發生改變 d 乙個變數中只能儲存乙個資料,新儲存的資料會把原有資料替換掉 以下定義float型別的陣列變數哪一項是正確的 a float a 8.8f b float b c fl...

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...