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