怎么自定義一個數(shù)據(jù)集?自定義數(shù)據(jù)集面臨哪些問題? 原創(chuàng)
“ 在目前的神經(jīng)網(wǎng)絡(luò)應(yīng)用中,數(shù)據(jù)集是對大部分企業(yè)需要面臨的主要問題。”
數(shù)據(jù)集作為神經(jīng)網(wǎng)絡(luò)模型中的一個必要環(huán)節(jié),其重要性不言而喻;雖然網(wǎng)絡(luò)上有很多開源的數(shù)據(jù)集,但對很多場景來說需要自定義數(shù)據(jù)集才能滿足自身的需求。
從目前的大模型發(fā)展來看,大部分企業(yè)選擇在開源模型的基礎(chǔ)之上做訓(xùn)練和微調(diào)是比較好的選擇;而這時,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)就不是主要的技術(shù)難點,反而是數(shù)據(jù)成為了很多企業(yè)的痛點,成為亟待解決的問題。
因此,怎么自定義一個數(shù)據(jù)集就成為很多人面臨的問題;自定義是一個復(fù)雜的問題,中間涉及到很多環(huán)節(jié);當(dāng)然除了那些數(shù)據(jù)處理的第三方公司之外,在業(yè)務(wù)場景中技術(shù)人員一般獲得的是經(jīng)過前期初步處理的數(shù)據(jù)。
這時需要做的就是把經(jīng)過初步處理的數(shù)據(jù)給統(tǒng)一化,結(jié)構(gòu)化。
自定義圖像數(shù)據(jù)集
自定義數(shù)據(jù)集是一個復(fù)雜且繁瑣的過程,包括前期的數(shù)據(jù)收集與整理;以及把整理之后的數(shù)據(jù)轉(zhuǎn)換成神經(jīng)網(wǎng)絡(luò)所需要的格式;而這也是數(shù)據(jù)集比較麻煩的一個地方。
自定義一個數(shù)據(jù)集需要哪些步驟? 自定義數(shù)據(jù)集大概需要經(jīng)過以下幾個步驟:
- 確定任務(wù)目標(biāo)
- 收集數(shù)據(jù)
- 數(shù)據(jù)清洗
- 數(shù)據(jù)標(biāo)注
- 數(shù)據(jù)預(yù)處理
- 劃分?jǐn)?shù)據(jù)集
1. 明確任務(wù)目標(biāo)
在創(chuàng)建數(shù)據(jù)集之前,首先需要明確任務(wù)的目標(biāo)和需求:
- 是分類任務(wù)、回歸任務(wù)、目標(biāo)檢測任務(wù)還是圖像分割任務(wù)?
- 需要哪些輸入特征和目標(biāo)變量?
- 數(shù)據(jù)的形式是什么(如圖片、文本、表格數(shù)據(jù))?
2. 收集數(shù)據(jù)
根據(jù)任務(wù)目標(biāo),收集相關(guān)的數(shù)據(jù)。數(shù)據(jù)來源可以包括:
- 公開數(shù)據(jù)集:如 Kaggle、UCI Machine Learning Repository、Google Dataset Search 等。
- 內(nèi)部數(shù)據(jù):如公司數(shù)據(jù)庫、日志文件等。
- 網(wǎng)絡(luò)爬蟲:從網(wǎng)頁中抓取數(shù)據(jù)(需注意合法性和道德問題)。
- API:通過第三方 API 獲取數(shù)據(jù)(如 Twitter API、Google Maps API 等)。
3. 數(shù)據(jù)清洗
數(shù)據(jù)清洗是確保數(shù)據(jù)質(zhì)量的關(guān)鍵步驟,主要包括:
- 處理缺失值:刪除或填充缺失值。
- 處理異常值:刪除或修正異常值。
- 去除重復(fù)數(shù)據(jù):刪除重復(fù)的記錄。
- 格式標(biāo)準(zhǔn)化:統(tǒng)一日期、時間、單位等格式。
- 文本數(shù)據(jù)清洗:去除特殊字符、停用詞、HTML 標(biāo)簽等。
4. 數(shù)據(jù)標(biāo)注
如果任務(wù)需要監(jiān)督學(xué)習(xí),需要對數(shù)據(jù)進(jìn)行標(biāo)注:
- 手動標(biāo)注:通過人工標(biāo)注數(shù)據(jù)。
- 自動標(biāo)注:使用規(guī)則或預(yù)訓(xùn)練模型進(jìn)行自動標(biāo)注。
- 眾包標(biāo)注:通過眾包平臺(如 Amazon Mechanical Turk)進(jìn)行標(biāo)注。
根據(jù)目錄標(biāo)注的螞蟻圖片:
5. 數(shù)據(jù)預(yù)處理
對數(shù)據(jù)進(jìn)行預(yù)處理,以適應(yīng)模型的輸入要求:
- 特征工程:從原始數(shù)據(jù)中提取有用的特征。
- 歸一化/標(biāo)準(zhǔn)化:將數(shù)據(jù)縮放到相同的范圍。
- 數(shù)據(jù)增強(qiáng):對數(shù)據(jù)進(jìn)行變換(如旋轉(zhuǎn)、翻轉(zhuǎn)、添加噪聲等),以增加數(shù)據(jù)多樣性。
6. 劃分?jǐn)?shù)據(jù)集
將數(shù)據(jù)集劃分為訓(xùn)練集、驗證集和測試集:
- 訓(xùn)練集:用于訓(xùn)練模型。
- 驗證集:用于調(diào)整超參數(shù)和評估模型性能。
- 測試集:用于最終評估模型的泛化能力。
而在大部分情況下,在企業(yè)應(yīng)用中確認(rèn)任務(wù)目標(biāo)之后,很少有人真的會按照以上步驟處理數(shù)據(jù);特別是第二步和第四步。
一般情況下在,技術(shù)人員拿到的數(shù)據(jù)是經(jīng)過初步處理的;比如說標(biāo)注之后的數(shù)據(jù);而這時我們可能需要根據(jù)具體情況對數(shù)據(jù)再進(jìn)行一次清洗和進(jìn)一步的處理。
舉個具體的例子來說,假如你需要整理一個圖片數(shù)據(jù)集;這時你拿到的圖片數(shù)據(jù)可能是根據(jù)目錄標(biāo)注好的或者使用專門的標(biāo)注文檔標(biāo)注之后的數(shù)據(jù)。
但這時的數(shù)據(jù)可能面臨著圖片大小不一,格式不同(png,jpg),通道也不同(RGB是三通道,還有灰度的單通道);甚至可能其中夾雜著一些其它圖片,比如在狗狗的圖片目錄中夾雜著部分貓的圖片。
在正常情況下的數(shù)據(jù)處理中,我們應(yīng)該主要關(guān)注第一,三,五,六步;而這也是數(shù)據(jù)處理過程中必不可少的環(huán)節(jié);其中比較復(fù)雜的主要是三和五步,
# 使用PIL的Image把圖片處理成統(tǒng)一大小;當(dāng)然,這只是最簡單的變換方式,可能會導(dǎo)致圖片變形
def resize_image(img, target_size):
return img.resize(target_size, Image.Resampling.LANCZOS)
本文轉(zhuǎn)載自公眾號AI探索時代 作者:DFires
