帶你識別AI數(shù)據(jù)集的各種面孔 (AI 從業(yè)萬字干貨)
上一篇文章,我們講了AI神經(jīng)網(wǎng)絡的優(yōu)化,里面提到要用很多AI數(shù)據(jù)集才能完成訓練。這篇文章,我們就來講下AI數(shù)據(jù)集的數(shù)個面孔,希望能一次給大家說明白。
歡迎一起揭秘AI的世界,相信對AI略有了解的朋友已經(jīng)知道,AI的智能是因為底層是一批又一批的數(shù)據(jù)在AI大模型的后面支撐運行,成為了基石,造就了AI。
如果讀過我前面幾篇AI系列文章的朋友,也會知道,AI的神經(jīng)網(wǎng)絡在機器學習中發(fā)揮了巨大的作用,而神經(jīng)網(wǎng)絡的訓練也是基于數(shù)據(jù)來完成的。所以,接上篇和大家聊了如何訓練神經(jīng)網(wǎng)絡的全過程技術原理后,這次我們來聊聊AI中的基石:數(shù)據(jù)集。
如果對AI神經(jīng)網(wǎng)絡的訓練優(yōu)化部分感興趣的朋友,可以看我的這篇文章《(萬字干貨)如何訓練優(yōu)化“AI神經(jīng)網(wǎng)絡”模型》
由于數(shù)據(jù)集部分要說的內(nèi)容比較多,一篇文章上萬字已經(jīng)是大部分人的閱讀上限了,但是吧,為了減少文字去壓縮內(nèi)容也非我本意。所以本次,為了說清楚數(shù)據(jù)集,又不想造成過長的閱讀壓力,我會將近期寫的數(shù)據(jù)集的內(nèi)容拆分成多篇文章發(fā)布。
本篇文章一萬字左右,預計閱讀時間:10分鐘,若是碎片時間不夠,建議先收藏后看,便于找回。
照例,開篇提供文章結構導圖,方便大家在閱讀前總攬全局,有大致的畫面框架。
一、什么是AI數(shù)據(jù)集?
在機器學習領域中,數(shù)據(jù)集是一組經(jīng)過組織和整理的數(shù)據(jù),是用于AI模型的訓練、驗證和測試的數(shù)據(jù)集合,其質(zhì)量、多樣性和數(shù)據(jù)規(guī)模會直接影響著AI模型的性能和泛化能力。
數(shù)據(jù)集通常包含大量的數(shù)據(jù)點,每個數(shù)據(jù)點代表一個樣本或實例,還有與其相關的特征和標簽。特征是用來描述數(shù)據(jù)點的變量,而標簽則是與數(shù)據(jù)點相關的輸出變量。
例如,在圖像識別任務中,數(shù)據(jù)集可能包括許多帶有不同顏色、形狀和大小的圖片,每張圖片的特征可以是像素值,而標簽則表示圖片中物體的類別。
如果數(shù)據(jù)集存在錯誤、偏差或噪聲,AI模型在學習過程中可能會產(chǎn)生錯誤的理解和預測,從而降低其性能。
如果數(shù)據(jù)集包含的數(shù)據(jù)點過于相似或者缺乏代表性,AI模型可能會出現(xiàn)過擬合的問題,即在訓練數(shù)據(jù)上表現(xiàn)良好,但在新的、未見過的數(shù)據(jù)上表現(xiàn)不佳。關于數(shù)據(jù)擬合問題的討論,《萬字干貨)如何訓練優(yōu)化“AI神經(jīng)網(wǎng)絡”模型?》中有更詳細的描述,就不在此贅述了。
一般來說,數(shù)據(jù)集規(guī)模越大,AI模型的學習效果越好。這是因為大規(guī)模的數(shù)據(jù)集可以提供更多的信息,幫助AI模型學習到更多的特征和規(guī)律。然而,數(shù)據(jù)集規(guī)模的增加也會帶來計算資源和時間的挑戰(zhàn)。
可見,我們在實際應用中,需要根據(jù)任務的特性和需求,選擇合適的數(shù)據(jù)集,并對其進行適當?shù)念A處理和增強,這樣可以提高AI模型的訓練效果和泛化能力。
二、AI數(shù)據(jù)集長什么樣?什么格式?
為了適應不同場景,數(shù)據(jù)也需要變成合適的模樣(也就是格式),便于AI模型可以直接運用。因此,我們常常需要處理各種格式的數(shù)據(jù)集,也需要對常見的格式有一些了解,知曉其適用的場景,有哪些特點和不足之處,這樣我們在面對各種數(shù)據(jù)集和應用場景時,就能做到“心中有數(shù)”。
數(shù)據(jù)集常見的格式主要有:CSV(逗號分隔值),JSON(JavaScript對象表示法),XML(可擴展標記語言),HDF5(層次數(shù)據(jù)格式5),Parquet(列式存儲),xlsx、xls等格式的Excel文件。
既然知道了有那么多格式,我們就分別根據(jù)這些常用的格式進一步展開,先介紹這些格式的基本定義,為了便于大家理解,會舉一個簡單的例子,還會再說說什么場景下適合用什么數(shù)據(jù)格式來存儲和處理數(shù)據(jù),這些格式在實際運用中又會暴露出哪些劣勢。
1. CSV(逗號分隔值)
這是最常見的一種數(shù)據(jù)格式,是一種簡單的文本格式,每行表示一個樣本,每列表示一個特征,各個元素之間用逗號分隔。
以下是一個簡單的CSV文件的例子:
在這個例子中,每一行代表一個數(shù)據(jù)點(一個人),而每列則表示該數(shù)據(jù)點的一個特征(姓名、年齡、城市)。逗號用于分隔不同的數(shù)據(jù)值。
CSV格式的數(shù)據(jù)文件結構清晰,易于理解和操作。每個數(shù)據(jù)記錄都被逗號分隔開,每一列數(shù)據(jù)都是獨立的,我們可以很容易地通過簡單的文本編輯器或者表格軟件來查看和編輯數(shù)據(jù)。
我們在AI數(shù)據(jù)集的應用中,什么情況下會選擇用CSV格式存儲或處理數(shù)據(jù)?
【當數(shù)據(jù)足夠簡單又結構化表示時】
當數(shù)據(jù)集的結構相對簡單,又是結構化的形式,每一行表示一個數(shù)據(jù)點,每一列表示一個特征或屬性,用CSV格式就是一個很不錯的選擇,直觀且方便。
【當數(shù)據(jù)需要被多人共享時】
CSV文件是一種通用的文本格式,易于共享和協(xié)作。在多個團隊或研究者之間傳遞數(shù)據(jù)時,CSV提供了一種簡單的、不依賴特定軟件的共享方式,很常用。
【當數(shù)據(jù)需跨平臺使用時】
CSV格式具有跨平臺的優(yōu)勢,幾乎所有的數(shù)據(jù)處理工具和編程語言都支持CSV文件的讀寫。項目成員在不同環(huán)境和工具中使用數(shù)據(jù)非常方便。
【當數(shù)據(jù)集規(guī)模比較小時】
對于規(guī)模相對較小的數(shù)據(jù)集,CSV是一個輕量級的選擇,性價比高。它不會占用過多磁盤空間,所以非常方便我們傳輸、存儲和處理數(shù)據(jù)。
【為了方便查看和編輯時】
CSV文件是純文本文件,可以用文本編輯器輕松查看和編輯,這很方便我們隨時查看或編輯數(shù)據(jù)。
我們在AI數(shù)據(jù)集的實際應用中,也并不是優(yōu)先就用CSV格式,它也會暴露出一些劣勢。
【文件的大小會限制數(shù)據(jù)的處理能力】
由于CSV文件中的數(shù)據(jù)是以文本形式存儲的,這意味著當數(shù)據(jù)集非常大時,CSV文件的大小也會相應地增大。這可能會導致內(nèi)存不足,從而影響數(shù)據(jù)處理的效率和速度。
此外,對于大型數(shù)據(jù)集,可能需要將數(shù)據(jù)分割成多個CSV文件進行處理,這會增加數(shù)據(jù)管理的復雜性。
【不適用于復雜數(shù)據(jù)結構】
在實際應用中,我們可能需要處理包含多種類型數(shù)據(jù)(如數(shù)值、文本、日期等)的數(shù)據(jù)集。然而,CSV格式只能簡單地將這些數(shù)據(jù)以字符串的形式存儲在一起,無法清晰地表示數(shù)據(jù)之間的層次關系和關聯(lián)性。
可見,CSV只能適用于簡單的表格形式的結構化數(shù)據(jù)。對于包含復雜嵌套結構、多層次關系或大量元數(shù)據(jù)的數(shù)據(jù)集,CSV格式不夠靈活。
【數(shù)據(jù)不規(guī)范就會出錯】
由于CSV文件中的數(shù)據(jù)是以逗號分隔的,因此如果某個字段中包含了逗號,或者字段的值中包含換行符等特殊字符,那么這個字段的值就會被錯誤地解析為多個字段。而且這種情況在實際應用中是非常常見的,卻很難通過簡單的方法來避免或修復。
在我們了解了CSV格式后,在實際應用時,面對需要處理的一堆數(shù)據(jù)時,我就可以知道什么時候用CSV格式,什么時候不用。
比如,只是數(shù)量較少又簡單的用戶表,含有用戶的姓名、年齡、地址等基礎文本信息的話,可以方便地存儲在CSV文件中。如果數(shù)據(jù)集包含時間序列或地理空間信息,數(shù)據(jù)結構又比較復雜,CSV格式就不合適了。
2. JSON(JavaScript對象表示法)
JSON基于JavaScript的語言標準,是一種輕量級的,用于存儲和交換數(shù)據(jù)的文本格式,支持層次結構和復雜的數(shù)據(jù)類型,有著優(yōu)秀的結構化數(shù)據(jù)表示能力。
在AI數(shù)據(jù)集中,往往存在復雜的信息層次和多層嵌套的結構,而JSON的樹狀表達方式非常適合清晰地呈現(xiàn)這些數(shù)據(jù)之間的關系。
以下是一個簡單JSON格式的例子:
在這個JSON中,每個對象表示一個數(shù)據(jù)點,例如動物。對象包含各種特征(如顏色、大小、棲息地)以及一個標簽(表示動物的類別)。這種結構可以很好地表示復雜的數(shù)據(jù)集。
我們在AI數(shù)據(jù)集的應用中,什么情況下會選擇用JSON格式存儲或處理數(shù)據(jù)?
【當需要多語言、多平臺應用時】
JSON具備跨平臺兼容性。在多語言、多平臺的AI應用中,我們常常需要進行數(shù)據(jù)交換。JSON格式可以在不同編程語言和操作系統(tǒng)之間實現(xiàn)靈活通用。這種特性在構建跨領域或多模塊的AI系統(tǒng)時顯得尤為重要。
【在Web應用和API開發(fā)中】
由于JSON在JavaScript中的原生支持,以及易于解析和生成的特性,JSON成為了Web服務和應用程序之間進行數(shù)據(jù)傳輸?shù)氖走x格式。
在與Web生態(tài)系統(tǒng)集成的場景下,選擇JSON有助于確保數(shù)據(jù)的順暢交流,為系統(tǒng)的互聯(lián)互通提供了便捷途徑。
【適用于輕量級應用中】
JSON是一種輕量級的數(shù)據(jù)交換格式,結構相對簡單,由鍵值對構成,易于理解和編寫。也因為此特性,JSON在網(wǎng)絡傳輸中占用的帶寬相對較小。
如果遇到一些對數(shù)據(jù)量要求不大的輕量級應用或移動應用,JSON是不錯的選擇,在這類應用中JSON可以減少數(shù)據(jù)傳輸?shù)呢摀?,提高系統(tǒng)的運行效率。
有利也有弊,我們在AI數(shù)據(jù)集的實際應用中,JSON格式自然也會暴露出一些劣勢。
【數(shù)據(jù)冗余】
JSON格式的數(shù)據(jù)通常包含許多嵌套的結構,這可能導致數(shù)據(jù)的冗余。例如,如果一個對象的屬性是另一個對象的列表,那么這個屬性可能會被重復多次,導致數(shù)據(jù)的冗余,在存儲和傳輸時也會占用更多的空間和帶寬。
【解析與生成相對較慢】
由于JSON是一種文本格式,解析時需要進行字符的逐個解析,通常需要消耗更多的計算資源和時間。而二進制格式則可以直接通過字節(jié)進行快速解析。因此,JSON的解析和生成相對于二進制格式來說,會更加耗時。
正因為JSON文件不支持直接對數(shù)據(jù)進行高效的壓縮和解壓縮操作。相比之下,當需要對大量數(shù)據(jù)進行快速讀寫操作時,使用JSON格式并不合適,二進制格式可能會更加高效。
【處理復雜嵌套數(shù)據(jù)會比較麻煩】
由于JSON文件中的數(shù)據(jù)是以樹形結構組織的,當數(shù)據(jù)層次較深,存在大量嵌套和重復的信息時,JSON文件可能變得較為臃腫,在讀取或寫入嵌套數(shù)據(jù)時需要進行遞歸操作。這可能會導致性能下降并增加程序的復雜性。
BTW,遞歸是一種編程技巧,它是通過函數(shù)自我調(diào)用的方式來解決問題的一種方法。基本思想是將一個問題分解為若干個相似的子問題,然后逐個解決這些子問題,最后將這些子問題的解合并得到原問題的解。如果對這方面感興趣的朋友,可以自行了解。
3. XML(可擴展標記語言)
XML是一種標記語言,用于存儲和傳輸結構化信息,適用于各種數(shù)據(jù)類型。它的主要特點是允許用戶自定義標簽,這些標簽可以用來描述數(shù)據(jù)的結構和內(nèi)容。
以下是一個簡單的XML示例,表示一個包含不同信息的數(shù)據(jù)集:
在這個例子中, <dataset> 元素包含多個 <sample> 元素,每個 <sample> 元素包含一個標識符 <id> 、文本 <text> 和標簽 <label> 。
XML和JSON有一些相似之處,但依舊有其獨特的優(yōu)勢。雖然在某些場景下逐漸被JSON取代,但在某些應用中,仍然被廣泛使用著。
我們在AI數(shù)據(jù)集的應用中,什么情況下會選擇用XML格式存儲或處理數(shù)據(jù)?
【當數(shù)據(jù)結構復雜時】
由于XML的樹狀結構,它能夠自然地表達復雜的數(shù)據(jù)關系,包括嵌套、多層次結構等。因此,XML非常適合表示具有復雜關聯(lián)的數(shù)據(jù),例如文檔、配置文件等。
【當數(shù)據(jù)更新頻繁時】
如果一個AI系統(tǒng)需要頻繁地更新數(shù)據(jù),那么使用XML格式也是一個不錯的選擇。因為XML文件的讀取和寫入速度相對較快,這使得我們可以更快地加載新的數(shù)據(jù)并更新模型。
【當對元數(shù)據(jù)需求高時】
如果數(shù)據(jù)集需要攜帶大量的元數(shù)據(jù)信息,如數(shù)據(jù)來源、標簽、版本等,XML提供了靈活的方式來嵌入這些元數(shù)據(jù),有助于更全面地描述數(shù)據(jù)。
BTW,元數(shù)據(jù)是關于數(shù)據(jù)的數(shù)據(jù),它提供了有關數(shù)據(jù)的描述性信息,幫助理解、管理和使用實際數(shù)據(jù)。在XML格式中,元數(shù)據(jù)通常以標簽的形式嵌入到數(shù)據(jù)中,提供了額外的信息。
假設有一個圖書館數(shù)據(jù)庫,用于管理圖書信息。每本書都有詳細的元數(shù)據(jù),這些元數(shù)據(jù)可以使用XML格式進行表示。
在上述XML示例中,每個 <book> 元素表示一本書,而 <title> 、 <author> 等標簽包含了有關該書的元數(shù)據(jù)。例如, <genre> 提供了關于書籍類型的信息, <publicationYear> 提供了關于出版年份的信息,而 <location> 元素包含了書籍在圖書館的位置信息。
通過這個小例子,可以看出通過使用XML格式,可以將這些元數(shù)據(jù)結構化地組織在一起,不僅易于理解和處理,也有助于圖書館管理系統(tǒng)更有效地跟蹤圖書信息,提供查詢服務,以及管理庫存。
我們在AI數(shù)據(jù)集的實際應用中,XML格式也因為自身的一些劣勢(如下),自然也有不適用的地方。
【占用更多存儲空間】
XML文件的結構相對冗余,包含了大量標簽和元素,這些都會增加文件的大小,同時增加存儲和傳輸?shù)呢摀?。尤其是在處理大?guī)模數(shù)據(jù)時,這種情況可能成為性能瓶頸。
【解析復雜】
XML文件的解析相對復雜,需要使用專門的解析器。與其他格式相比,解析XML文件需要更多的計算資源和時間。這會導致在處理大型XML文件時,解析和處理速度相對較慢。
【標記過多】
成也標記,敗也標記。XML因為使用了大量的標記符號(如尖括號和斜杠)來定義元素和屬性。如果標簽嵌套層次太深或標簽使用過于頻繁,可能會導致文件結構混亂,難以維護。
【不適合簡單數(shù)據(jù)結構】
俗話說,什么馬配什么鞍。對于簡單的數(shù)據(jù)結構,使用XML格式可能顯得過于繁重。例如,如果只需表示鍵值對或簡單的層次結構,XML的結構則顯得過于繁瑣,選擇更輕巧的格式可能更加合適。
總體而言,我們在實際應用中,需要根據(jù)具體需求,綜合考慮XML的優(yōu)勢和劣勢,以及與其他格式的比較,選擇最適合的數(shù)據(jù)格式。
4. HDF5(層次數(shù)據(jù)格式5)
HDF5(Hierarchical Data Format 5)是一種用于存儲和組織大規(guī)模數(shù)據(jù)的文件格式。從“層次數(shù)據(jù)格式”這個名字中我們可以知道,HDF5支持層次化的數(shù)據(jù)結構,這意味著數(shù)據(jù)可以按照層次關系進行組織,就像文件夾和文件的結構一樣。這種層次化的結構讓存儲和檢索復雜的數(shù)據(jù)變得更加靈活和高效。
HDF5的設計目標是支持各種類型和復雜性的數(shù)據(jù),它支持多種數(shù)據(jù)類型,包括數(shù)值、字符、圖像和音頻等,適用于科學、工程等領域的數(shù)據(jù)管理和分析。
在AI機器學習中,特別是在深度學習和大規(guī)模數(shù)據(jù)處理方面,研究人員和工程師經(jīng)常使用HDF5格式來存儲和交換數(shù)據(jù),例如神經(jīng)網(wǎng)絡的權重、訓練樣本等。
HDF5格式可以包含多個組(Group)和數(shù)據(jù)集(Dataset)。每個數(shù)據(jù)集都可以包含多維數(shù)組以及與之相關的元數(shù)據(jù)。以下是一個HDF5格式的文件示例:
在這個例子中,我們用HDF5格式存儲實驗室測得的溫度和濕度數(shù)據(jù)。 Weather_Data 是整個數(shù)據(jù)集的名稱,包含了多個實驗組( Experiment_1 , Experiment_2 等)。每個實驗組中都有溫度( Temperature )和濕度( Humidity )兩個數(shù)據(jù)集,它們分別包含相應的測量數(shù)據(jù)。
HDF5格式這種層次化的組織方式可以讓權重信息清晰地保存和讀取,也適用于存儲和管理復雜、大規(guī)模的科學數(shù)據(jù),比如氣象學、地球科學等領域的數(shù)據(jù)。
我們在AI數(shù)據(jù)集的應用中,什么情況下會選擇用HDF5格式存儲或處理數(shù)據(jù)?
【當處理大規(guī)模數(shù)據(jù)集時】
對于深度學習中包含龐大權重和特征的模型,HDF5格式就有了發(fā)揮之地。HDF5有壓縮和分塊存儲的特性,可以高效地壓縮、存儲和檢索大量數(shù)據(jù),能夠有效應對深度學習模型中產(chǎn)生的海量數(shù)據(jù)。
【當數(shù)據(jù)結構復雜時】
當數(shù)據(jù)集具有復雜的層次結構或包含多個數(shù)據(jù)類型時,用HDF5格式比較合適。它支持多層次的數(shù)據(jù)組織,允許在同一文件中存儲各種數(shù)據(jù)類型,包括標量、數(shù)組和復合數(shù)據(jù)類型。對于在傳感器網(wǎng)絡、科學實驗結果等場合中,涉及多層次信息的數(shù)據(jù)存儲和處理非常重要。
【有元數(shù)據(jù)管理需求時】
元數(shù)據(jù)對于數(shù)據(jù)集的理解和解釋至關重要。HDF5格式提供了高度靈活的元數(shù)據(jù)管理機制,允許我們附加詳細的描述性信息,對數(shù)據(jù)進行標注和注釋。正因為如此,數(shù)據(jù)集更具可讀性,更易于共享和協(xié)作,對于科研領域的數(shù)據(jù)集尤為有益。
在知道了適用場景之后,我們也同樣需要知道,在AI數(shù)據(jù)集的實際應用中,HDF5格式會暴露出哪些劣勢?
【學習成本高相對較高】
雖然HDF5格式在靈活性和性能方面迪歐不錯,但與CSV或JSON等文本格式相比,HDF5文件的結構和使用方式可能對新手不夠友好,需要一定的時間來適應。這可能對一些小型項目或初學者構成一定的障礙。
【不適用于簡單結構和小規(guī)模數(shù)據(jù)】
HDF5格式的優(yōu)勢在于處理大規(guī)模和復雜結構的數(shù)據(jù),但對于簡單結構和小規(guī)模數(shù)據(jù),它可能就“大材小用”了,或者說性價比不高。使用HDF5格式存儲小規(guī)模數(shù)據(jù)會顯得繁瑣,而且文件大小相對較大,不如其他輕量級格式直觀。
【不適用于文本數(shù)據(jù)】
HDF5格式主要用于存儲數(shù)值型和結構化的數(shù)據(jù),對于文本數(shù)據(jù)的支持相對較弱。在一些需要純文本存儲和處理的場景下,像CSV這樣的格式可能更為簡單和實用。
我們通過二元對立的角度來看,HDF5格式在處理大規(guī)模、復雜數(shù)據(jù)集上有優(yōu)勢,但在學習成本,數(shù)據(jù)類型兼容等方面也存在不足,我們在選擇格式時需權衡利弊,根據(jù)具體需求和應用場景做出合適的選擇。
5. Parquet(列式存儲)
Parquet是一種開放源代碼的列式存儲格式,旨在提供高效的數(shù)據(jù)壓縮和快速掃描性能。它最初由Apache軟件基金會開發(fā),支持多種編程語言的讀寫。
它具有良好的壓縮性能和高效的查詢性能,適用于大數(shù)據(jù)分析和機器學習。目前廣泛應用于大數(shù)據(jù)領域,特別是在Apache Hadoop生態(tài)系統(tǒng)中。
假設我們有一個包含用戶信息的數(shù)據(jù)集,使用Parquet格式進行存儲可能如下所示:
在這個例子中,我們?yōu)槊總€用戶提供了姓名、年齡、電子郵件的信息。這種結構充分展示了Parquet格式的列式存儲特性,有助于在處理大規(guī)模數(shù)據(jù)集時提高存儲和查詢效率。
我們在AI數(shù)據(jù)集的應用中,什么情況下會選擇用Parquet格式存儲或處理數(shù)據(jù)?
【當數(shù)據(jù)類型和關系復雜時】
Parquet支持多種數(shù)據(jù)類型,包括數(shù)值、日期、時間戳等,所以它非常適合處理復雜的AI數(shù)據(jù)集。此外,Parquet還支持嵌套的數(shù)據(jù)結構,如數(shù)組和字典,這個特點有助于它可以輕松地表示復雜的數(shù)據(jù)關系。
【需要處理大規(guī)模的數(shù)據(jù)時】
Parquet有高效的查詢性能。在AI數(shù)據(jù)集中,經(jīng)常需要處理大規(guī)模的數(shù)據(jù),Parquet格式的列式存儲特點,在查詢和分析特定列的數(shù)據(jù)時更加高效。AI應用常常需要頻繁讀取、篩選或聚合大量數(shù)據(jù),用Parquet格式是很好的選擇。
又加上Parquet有良好的壓縮性能。Parquet的壓縮算法,可以減小存儲空間。在AI領域,數(shù)據(jù)集通常龐大,對存儲空間的有效利用至關重要。使用Parquet格式可以降低存儲成本,提高數(shù)據(jù)集的可擴展性。
【處理時間變化的數(shù)據(jù)模式時】
Parquet支持嵌套數(shù)據(jù)結構和模式演化。在AI研究中,數(shù)據(jù)集的結構和字段可能會隨項目進展而演化,而Parquet非常靈活,它可以輕松地處理復雜的數(shù)據(jù)類型和隨時間變化的數(shù)據(jù)模式。
與此同時,我們在AI數(shù)據(jù)集的實際應用中,也需知曉Parquet格式會暴露出哪些劣勢?
【不適合頻繁追加數(shù)據(jù)】
Parquet就像一位單一專長厲害到天花板的歌手,讓它唱美聲可以到達一流,但是唱流行歌曲可能就一般般了。由此可見,Parquet格式適用于分析性質(zhì)的工作負載,如數(shù)據(jù)分析和查詢。但在一些需要頻繁修改和追加數(shù)據(jù)的場景下,Parquet可能并不是最佳選擇。
【不適合小規(guī)模數(shù)據(jù)】
我們在實際應用中,也需要追求使用效益的性價比。對于小規(guī)模數(shù)據(jù)集,Parquet格式可能會顯得過于復雜,而且對存儲和處理的優(yōu)勢不如在大規(guī)模數(shù)據(jù)集中明顯。我們在做AI項目時,如果是在一些小型項目或快速原型開發(fā)中,選擇其他更簡單的格式可能更為合適。
【可讀性較差,學習成本高】
Parquet文件以二進制格式存儲,因此可讀性較差,不如一些文本格式(如CSV)那樣直觀。這倒是和HDF5格式有了同樣的問題了??勺x性差也帶來了學習成本的提高,對于初次接觸Parquet的團隊成員,可能需要額外的培訓,更多的時間來了解其工作原理、優(yōu)化技巧以及實操練習。
6.xlsx、xls等格式的Excel文件
最后,還是想說一下以xlsx、xls等格式為代表的Excel文件。對于xlsx或xls格式,相信大家都不陌生,我們常常在Excel中遇見這樣的格式。
想說一下Excel的原因也很簡單,因為它太常見了,常見到我們常常忽略了Excel本身并不屬于任何一種數(shù)據(jù)格式,它其實是一種軟件。它可以輔助我們錄入數(shù)據(jù)、處理數(shù)據(jù)、完成數(shù)據(jù)分析和數(shù)據(jù)可視化等。
同時,Excel文件可支持的格式太多了,如果都說就偏離了本文的重心。我就以最常用的xlsx、xls這兩個格式為例,來說一下我們在AI數(shù)據(jù)集的場景中,會如何運用它。
我們將數(shù)據(jù)以xlsx格式存儲在Excel表格中,每個工作表可以包含一個或多個單元格,用于存儲數(shù)據(jù)、公式、文本等。每一行或者每個單元格可以包含一個數(shù)據(jù)點,適用于結構化數(shù)據(jù)。
以下是一個簡單的Excel表格中xlsx的示例,表示一個包含文本和標簽的數(shù)據(jù)集:
在這個例子中,每一行代表一個數(shù)據(jù)點(一個文本例子),而每列則表示該數(shù)據(jù)點的一個特征(positive、negative、neutral)。每個單元格中的數(shù)據(jù)都按行和列組織,這是Excel表格的典型結構。這種結構化的表格形式非常適合表示和處理數(shù)據(jù)。
我們在AI數(shù)據(jù)集的應用中,什么情況下會選擇用Excel文件存儲xlsx、xls這類格式的數(shù)據(jù)?
【當數(shù)據(jù)小規(guī)模、結構化時】
在處理小規(guī)模、結構化的數(shù)據(jù)時,Excel的表格格式適合整齊排列的數(shù)據(jù),我們可以快速了解數(shù)據(jù)的結構和內(nèi)容,也能夠快速進行基本的數(shù)據(jù)操作和分析,并通過Excel將數(shù)據(jù)存儲為xlsx、xls這類格式。
【當數(shù)據(jù)有多種簡單類型時】
Excel支持多種簡單的數(shù)據(jù)類型,包括文本、數(shù)字、日期和時間等。如果我們需要將不同類型的數(shù)據(jù)存儲在同一個工作表中,同時還需要對數(shù)據(jù)進行簡單的整合和分析,用Excel是很好的選擇。
【需要一些公式計算來處理數(shù)據(jù)時】
Excel支持各種復雜的數(shù)學和統(tǒng)計函數(shù),當我們使用數(shù)據(jù)集時,如果需要對數(shù)據(jù)進行處理和計算,可以在Excel中執(zhí)行操作,而無需編寫復雜的代碼。
雖然Excel非常強大,我們幾乎離不開它,但在AI數(shù)據(jù)集的實際應用中,用Excel文件存儲xlsx、xls這類格式的數(shù)據(jù)會依舊存在一些劣勢。
【容量大小限制】
Excel的最大行數(shù)為1048576行,這意味著當數(shù)據(jù)集的大小超過這個限制時,Excel將無法正常工作。
一般情況下,Excel文件的大小上限為100MB/200MB左右,這限制了可以存儲在單個Excel文件中的數(shù)據(jù)量。隨著數(shù)據(jù)集的增長,可能需要將數(shù)據(jù)分散到多個Excel文件中,這將導致數(shù)據(jù)管理和維護變得復雜和低效。
所以,對于大規(guī)模的數(shù)據(jù)集,特別是深度學習等需要大量數(shù)據(jù)的任務,Excel可能無法滿足需求。
【不支持復雜數(shù)據(jù)類型】
復雜數(shù)據(jù)類型通常指的是那些無法通過簡單的數(shù)值或文本表示的數(shù)據(jù),例如圖像、音頻或視頻等。Excel在面對這類數(shù)據(jù)時,就會明顯暴露其局限性。
【不適合多模態(tài)數(shù)據(jù)】
多模態(tài)數(shù)據(jù)是指同時包含兩種或更多種形式的數(shù)據(jù)的數(shù)據(jù)。這類數(shù)據(jù)可能是一個產(chǎn)品描述,它包含文本描述(如產(chǎn)品的功能和規(guī)格),以及圖像信息(如產(chǎn)品的外觀和顏色)。
在這種情況下,我們需要同時考慮和處理文本和圖像信息,以便更好地理解和分析數(shù)據(jù)。這時,通過Excel就無法對數(shù)據(jù)進行有效處理。
因此,當數(shù)據(jù)集涉及多種類型的數(shù)據(jù)時,我們通常需要尋找更靈活的存儲和處理方式。例如,我們可以使用數(shù)據(jù)庫或者專門的數(shù)據(jù)處理軟件來存儲和處理多模態(tài)數(shù)據(jù)。
7. 不止這些
當然,AI數(shù)據(jù)集中的格式遠遠不止以上列舉的這些,還有很多在專業(yè)領域派上用場的數(shù)據(jù)格式,比如TFRecord、Avro、Feather、DICOM等。
我們知道,在AI項目中,數(shù)據(jù)是推動模型訓練和性能提升的核心。選擇合適的數(shù)據(jù)格式對于不同類型的AI項目至關重要。所以我們對圖像,文本,音頻,視頻,時間序列甚至是傳感器等等各類數(shù)據(jù),都需要找到匹配的數(shù)據(jù)格式。
在大規(guī)模數(shù)據(jù)集和實時應用中,匹配的數(shù)據(jù)格式能夠提高數(shù)據(jù)處理的效率和速度。一些數(shù)據(jù)格式在存儲和讀取時更為高效,可以減少數(shù)據(jù)預處理的時間,加速模型的訓練和推理過程,提高整體效果。
考慮到AI項目中的數(shù)據(jù)大小和存儲成本,以及不同的數(shù)據(jù)格式對存儲空間的需求不同。比如有些格式具有高度的壓縮性,適合大規(guī)模數(shù)據(jù)集的存儲,而有些則不需要。所以,我們在考慮存儲成本和資源限制時,選擇匹配的數(shù)據(jù)格式可以降低整體成本。
為了更好地訓練監(jiān)督學習模型,選擇匹配的數(shù)據(jù)格式也有助于更好地處理數(shù)據(jù)標注和標簽。一些格式支持多種數(shù)據(jù)類型的同時保持標簽信息,也可以讓數(shù)據(jù)集的標簽管理更為方便。
總而言之,考慮到AI項目的特定需求、模型結構、數(shù)據(jù)處理效率、存儲成本等多方面因素,我們提前選擇好合適的數(shù)據(jù)格式有助于提高AI模型性能、降低成本,并簡化整個工作流程。這樣做起來好處多多,我們何樂不為呢。
三、推薦幾個人工智能數(shù)據(jù)集
人工智能早已成為各行各業(yè)最受關注的“網(wǎng)紅”。好像凡事不和AI有關,就仿佛被時代淘汰了。然而實際情況是,大多數(shù)AI項目由于種種原因無法實現(xiàn)成功部署。這其中一個重要因素就是數(shù)據(jù)質(zhì)量低或數(shù)據(jù)不足。
數(shù)據(jù)集對機器學習模型的性能日益重要,現(xiàn)在有許多站點都托管數(shù)據(jù)存儲庫,涵蓋主題廣泛,應有盡有。無論機器學習項目是什么,都可以找到相關的數(shù)據(jù)集。
但是,我們在尋找合適的數(shù)據(jù)集時,需要先問自己兩個問題:
1.我想用AI項目達成什么目標?2.我需要數(shù)據(jù)涵蓋哪些情景?然后,帶著答案去有目的地尋找。
如果想清楚了,就去網(wǎng)上看看有沒有你想要的公開數(shù)據(jù)集。以下就是推薦的幾個常見的公開數(shù)據(jù)集平臺
1. Kaggle
網(wǎng)址:https://www.kaggle.com/datasets
介紹:Kaggle 提供了一個龐大的數(shù)據(jù)集倉庫,包括各種領域的數(shù)據(jù),涵蓋了自然語言處理、計算機視覺、醫(yī)學、金融等多個領域。
2. UCI機器學習數(shù)據(jù)集庫
網(wǎng)址:https://archive.ics.uci.edu/
介紹:UCI機器學習數(shù)據(jù)庫被世界各地的學生、教育工作者和研究人員廣泛使用。它包含了多種類型的數(shù)據(jù)集,涵蓋了分類、回歸、聚類、關聯(lián)規(guī)則挖掘等不同任務的數(shù)據(jù)。這些數(shù)據(jù)集來自多個領域,包括醫(yī)學、金融、社會科學等。
3. Google Dataset Search
網(wǎng)址:https://datasetsearch.research.google.com/
介紹:“Google數(shù)據(jù)集搜索”是一個數(shù)據(jù)集搜索引擎。用戶只需搜索關鍵字,就能在網(wǎng)絡上發(fā)現(xiàn)托管在數(shù)千個存儲區(qū)中的數(shù)據(jù)集。目前已對近 2500 萬個數(shù)據(jù)集建立了索引,幾乎能找到你想找到的任何數(shù)據(jù)集。
4. AWS數(shù)據(jù)庫
網(wǎng)址:https://registry.opendata.aws/
介紹:AWS(亞馬遜)公共數(shù)據(jù)庫里面存儲了AWS收集的數(shù)據(jù)集,有來自各行業(yè)領先數(shù)據(jù)提供商的3000種現(xiàn)有數(shù)據(jù)產(chǎn)品。
5. 阿里云天池數(shù)據(jù)集
網(wǎng)址:https://tianchi.aliyun.com/dataset/
介紹:天池數(shù)據(jù)集是阿里集團對外開放的科研數(shù)據(jù)平臺,覆蓋了電商、娛樂、物流、醫(yī)療健康、交通、工業(yè)、自然科學、能源等十多個行業(yè),涵蓋了數(shù)據(jù)挖掘、機器學習、計算機視覺、自然語言處理、決策智能等經(jīng)典的人工智能技術領域。
四、新篇預告
以上,就是關于AI數(shù)據(jù)集的首篇內(nèi)容了,介紹了AI數(shù)據(jù)集是什么,這些數(shù)據(jù)集常用什么樣的格式來存儲和處理數(shù)據(jù),當我們需要數(shù)據(jù)來做AI項目時,有哪些公開的數(shù)據(jù)集平臺可供參考。
AI的世界很大,在門外時會覺得神秘,剛入門時又會覺得陌生,日漸相處之后又會發(fā)現(xiàn)如此有趣,AI數(shù)據(jù)集的內(nèi)容我們還沒說完,后面的篇章我們會圍繞“訓練集,驗證集,測試集”的話題展開,繼續(xù)說說AI數(shù)據(jù)集。
如果覺得有所收獲,歡迎關注我,我們在AI路上攜手同行。
作者:果釀,公眾號:果釀產(chǎn)品說
本文由 @果釀 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉載。
題圖來自 Unsplash,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發(fā)揮!