獨(dú)家 | 小數(shù)據(jù)集也能大有作為:特征工程的妙用
圖片源自Unsplash,由Thomas T上傳
在快速發(fā)展的人工智能 (AI) 世界中,數(shù)據(jù)已成為無數(shù)創(chuàng)新應(yīng)用和解決方案的命脈。實(shí)際上,大型數(shù)據(jù)集通常被認(rèn)為是訓(xùn)練強(qiáng)大且準(zhǔn)確的 AI 模型的支柱。但是,當(dāng)手頭的數(shù)據(jù)集相對較小時(shí)該怎么辦呢?在本文中,我們將探討特征工程在克服小數(shù)據(jù)集的局限性方面所起到的關(guān)鍵性作用。
玩具數(shù)據(jù)集
我們的旅程將從創(chuàng)建數(shù)據(jù)集開始。在這個(gè)例子中,我們將進(jìn)行簡單的信號分類。該數(shù)據(jù)集有兩個(gè)類別:頻率為1的正弦波屬于類別0,頻率為2的正弦波屬于類別1。信號生成代碼如下所示。該代碼生成一個(gè)正弦波,引入加性高斯噪聲,并隨機(jī)化相位偏移。由于添加了噪聲和相位偏移,我們獲得了多樣的信號,分類問題變得尤為重要(經(jīng)過正確的特征工程仍然是很容易辦到的)。
類別0信號的可視化類別1信號的可視化
深度學(xué)習(xí)性能
用作信號處理的最先進(jìn)模型是卷積神經(jīng)網(wǎng)絡(luò)(CNN)。下面我們就來動(dòng)手創(chuàng)建一個(gè)。這個(gè)特定的網(wǎng)絡(luò)包含兩個(gè)一維卷積層和兩個(gè)全連接層。代碼如下所示。
CNN模型是可以用來處理原始信號的。不過,由于其參數(shù)龐大的架構(gòu),這類模型往往需要大量的數(shù)據(jù)。然而我們先假設(shè)有足夠的數(shù)據(jù)來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。我使用信號生成創(chuàng)建了一個(gè)包含 200 個(gè)信號的數(shù)據(jù)集。每個(gè)實(shí)驗(yàn)重復(fù)十次以減少隨機(jī)變量的干擾。代碼如下所示:
CNN獲得了 99.2% 的測試準(zhǔn)確率,這對于最先進(jìn)的模型來說是意料之中的。但是,這個(gè)指標(biāo)是針對這些訓(xùn)練成功的實(shí)驗(yàn)運(yùn)行獲得的。我所說的“成功”是指在訓(xùn)練數(shù)據(jù)集上的準(zhǔn)確率超過 60%。在這個(gè)例子中,CNN的權(quán)重初始化對于訓(xùn)練來說是成敗的關(guān)鍵,有時(shí)會(huì)出現(xiàn)CNN的權(quán)重初始化隨機(jī)性不好而出現(xiàn)問題的情況。訓(xùn)練的成功率為70%。
現(xiàn)在,讓我們看看數(shù)據(jù)集很小的情況會(huì)發(fā)生什么。我將數(shù)據(jù)集中的信號量減少到 20 個(gè)。結(jié)果,CNN 獲得了 71.4% 的測試準(zhǔn)確率,準(zhǔn)確率下降了 27.8 個(gè)百分點(diǎn)。這是不可接受的。然而,現(xiàn)在怎么辦?要使用最先進(jìn)的模型,需要數(shù)據(jù)集更大。在業(yè)界應(yīng)用中,獲得更多數(shù)據(jù)要么不可行,要么至少非常昂貴。我們應(yīng)該放棄這個(gè)項(xiàng)目并繼續(xù)前進(jìn)嗎?
不。當(dāng)數(shù)據(jù)集很小時(shí),特征就是你的朋友。
特征工程
這個(gè)特定的例子涉及基于信號頻率的分類。因此,我們可以應(yīng)用傳統(tǒng)的傅里葉變換。傅里葉變換將信號分解為一系列以頻率和振幅為參數(shù)的正弦波。因此,我們可以使用傅里葉變換來檢查每個(gè)頻率在形成信號中的重要性。這樣的數(shù)據(jù)表示可以足夠簡化任務(wù),使得小數(shù)據(jù)集就足夠了。此外,傅里葉變換對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理,以便我們可以使用更簡單的模型,例如隨機(jī)森林分類器。
將信號轉(zhuǎn)換為頻譜的可視化。左側(cè)是類別 0 的信號頻譜,右側(cè)是類別 1 的信號頻譜。圖表中使用了對數(shù)刻度以便獲得更好的可視化效果。本例中使用的模型對信號進(jìn)行線性解釋。
信號變換和訓(xùn)練隨機(jī)森林分類器的代碼如下所示:
隨機(jī)森林分類器在 20 和 200 個(gè)信號長度的數(shù)據(jù)集上實(shí)現(xiàn)了 100% 的測試準(zhǔn)確率,每個(gè)數(shù)據(jù)集的訓(xùn)練成功率也是 100%。因此,我們比CNN獲得了更好的結(jié)果,而且所需的數(shù)據(jù)量更少,這一切都?xì)w功于特征工程。
過擬合的風(fēng)險(xiǎn)
雖然特征工程是一個(gè)強(qiáng)大的工具,但必須謹(jǐn)記從輸入數(shù)據(jù)中減少不必要的特征。輸入向量中特征越多,過擬合的風(fēng)險(xiǎn)就越高,特別是在小數(shù)據(jù)集中。每個(gè)不必要的特征都引入了隨機(jī)波動(dòng)的風(fēng)險(xiǎn),使機(jī)器學(xué)習(xí)模型認(rèn)為這可能是重要的模式。數(shù)據(jù)集中數(shù)據(jù)越少,隨機(jī)波動(dòng)產(chǎn)生不存在于現(xiàn)實(shí)世界中的相關(guān)性的風(fēng)險(xiǎn)就越高。
其中一個(gè)可能有助于修剪過大特征集合的辦法是使用搜索啟發(fā)式算法,例如遺傳算法。特征修剪可以被描述為一個(gè)任務(wù),即找到最少的特征數(shù)量,以便成功訓(xùn)練機(jī)器學(xué)習(xí)模型。這可以通過創(chuàng)建長度等于特征數(shù)據(jù)大小的二進(jìn)制向量來編碼。其中,“0”表示該特征不在數(shù)據(jù)集中,“1”表示該特征存在。然后,該向量的適應(yīng)性函數(shù)是在修剪后的數(shù)據(jù)集上達(dá)到的機(jī)器學(xué)習(xí)模型的準(zhǔn)確率之和,加上向量中零的數(shù)量并按足夠權(quán)重縮小。
這只是去除不必要特征的諸多解決方案之一,但是它非常強(qiáng)大。
結(jié)論
盡管本文提供的例子相對簡單,但它展示了業(yè)界應(yīng)用人工智能系統(tǒng)時(shí)會(huì)遇到的典型問題。目前,深度神經(jīng)網(wǎng)絡(luò)在提供足夠的數(shù)據(jù)情況下幾乎可以做到我們想要的一切。然而現(xiàn)實(shí)情況是,數(shù)據(jù)量通常很少,很昂貴。 因此,人工智能的業(yè)界應(yīng)用通常涉及對特征進(jìn)行廣泛的工程化處理,以簡化問題,并從而減少訓(xùn)練模型所需的數(shù)據(jù)量。
感謝閱讀。文中案例的代碼可在以下鏈接中訪問:https://github.com/aimagefrombydgoszcz/Notebooks/blob/main/when_dataset_is_small_features_are_your_friend.ipynb
除特別注明外,所有圖片均由作者提供。
原文標(biāo)題:When the dataset is small, features are your friends原文鏈接:https://towardsdatascience.com/when-the-dataset-is-small-features-are-your-friends-6e7f8dcc819e
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。