代价敏感多标签主动学习的代码开发跟踪
1 簡(jiǎn)介
代價(jià)敏感多標(biāo)簽主動(dòng)學(xué)習(xí)目前是閔老師小組正在進(jìn)行的一個(gè)開(kāi)發(fā)項(xiàng)目,目的是將代價(jià)敏感和主動(dòng)學(xué)習(xí)思想應(yīng)用到多標(biāo)簽學(xué)習(xí)中。整個(gè)Java代碼涵蓋了很多技術(shù):并行計(jì)算、batch處理。本文就是在學(xué)習(xí)這個(gè)代碼后的一些總結(jié)。學(xué)習(xí)方法采用的至頂向下。
2 Cmale類
該類為測(cè)試的主類。
2.1 數(shù)據(jù)
- dataset:保存整個(gè)多標(biāo)簽數(shù)據(jù)集
- numInstances:樣本的個(gè)數(shù)
- numConditions:條件屬性的個(gè)數(shù)
- numLabels:標(biāo)簽的個(gè)數(shù)
- outputFile:輸出的文件
- multiLabelAnn:用于分類的多標(biāo)簽神經(jīng)網(wǎng)絡(luò)
- representativenessArray:保存所有實(shí)例的代表性
- representativenessRankArray:所有實(shí)例代表性的排名
2.2 方法
-
(1)Cmale:構(gòu)造方法
step 1. 讀數(shù)據(jù)文件構(gòu)建dataset
step 2. 計(jì)算實(shí)例的代表性
step 3. 準(zhǔn)備輸出文件 -
(2)initializeMultiLabelAnn:初始化多標(biāo)簽神經(jīng)網(wǎng)絡(luò)
利用dataset,全連接層節(jié)點(diǎn),并行層節(jié)點(diǎn)構(gòu)建多標(biāo)簽神經(jīng)網(wǎng)絡(luò) -
(3)boundedTrain:給定輪數(shù)的上界、下界進(jìn)行訓(xùn)練
-
(4)boundedEmphasizedTrain:給定訓(xùn)練輪數(shù)的上界, 進(jìn)行針對(duì)性 (增量) 訓(xùn)練
-
(5)computeInstanceRepresentativeness:基于密度峰值來(lái)計(jì)算實(shí)例的代表性
-
(6)twoStageLearn:兩階段學(xué)習(xí): 冷啟動(dòng) (僅考慮對(duì)象代表性與標(biāo)簽稀少性) 與 正常訓(xùn)練 (考慮標(biāo)簽不確定性) 注意: 這里是算法的核心, 需要改策略
-
(7)randomSelectionLearn: 隨機(jī)選擇標(biāo)簽的學(xué)習(xí), 作為對(duì)比算法. 如果我們的策略不比隨機(jī)策略好, 就沒(méi)有意義
3 MultiLabelData類:數(shù)據(jù)管理
本類讀入 arff 文件, 存儲(chǔ)成一個(gè)數(shù)據(jù)矩陣和標(biāo)簽矩陣
3.1 數(shù)據(jù)
- dataMatrix: 數(shù)據(jù)矩陣
- labelMatrix: 標(biāo)簽矩陣
- predictedLabelMatrix: 預(yù)測(cè)的標(biāo)簽矩陣
- labelQueriedMatrix: 記錄哪些標(biāo)簽被查詢
- 查詢代價(jià)、誤分類代價(jià)等
3.2 方法
- reset: 重置以支持多次訓(xùn)練
- randomQuery: 隨機(jī)查詢給定數(shù)量的標(biāo)簽, 支持隨機(jī)查詢方案
- getScareLabels: 找出哪些標(biāo)簽是稀少的
- queryLabels: 查詢某個(gè)對(duì)象的一組標(biāo)簽. 需要在內(nèi)部保持?jǐn)?shù)據(jù)的一致性, 出錯(cuò)影響大
- computeAccuracy: 根據(jù)預(yù)測(cè)的標(biāo)簽矩陣計(jì)算準(zhǔn)確率. 需要預(yù)先給出預(yù)測(cè)值
- computeTrainingAccuracy: 計(jì)算在訓(xùn)練集中的準(zhǔn)確率, 以支持訓(xùn)練結(jié)束的終止條件
- computeTotalCost: 計(jì)算總代價(jià), 包括查詢代價(jià)與誤分類代價(jià)
- distance: 計(jì)算兩個(gè)實(shí)例之間的距離 (Manhattan 或 Euclidean)
4. 分類器構(gòu)建 MultiLabelAnn.java
本類的神經(jīng)網(wǎng)絡(luò)支持全連接層和并行連接層. 輸入端口數(shù)為條件屬性數(shù), 輸出端口數(shù)為標(biāo)簽數(shù)的 2 倍.
4.1 變量
dataset: 數(shù)據(jù)集
4.2 方法
- train: 訓(xùn)練一輪, 僅使用被查詢過(guò)的對(duì)象
- emphasizedTrain: 訓(xùn)練一輪, 被強(qiáng)調(diào)的數(shù)據(jù)多次訓(xùn)練, 支持增量學(xué)習(xí). 這是因?yàn)橹鲃?dòng)學(xué)習(xí)過(guò)程是增量學(xué)習(xí)
- test: 使用所有數(shù)據(jù)測(cè)試
- computeLabelUncertaintyMatrix: 計(jì)算標(biāo)簽不確定性矩陣 注意: 這是核心方法, 以后可能要修改策略
- getMostUncertainLabelIndices: 獲得不確定性最高的幾個(gè)標(biāo)簽, 包括對(duì)象下標(biāo) (一個(gè)) 與標(biāo)簽下標(biāo) (多個(gè)) 注意: 以后可能修改, 以支持多個(gè)對(duì)象的批量選取, 縮短程序運(yùn)行時(shí)間
- getUncertainLabelBatch: 大家好, 我就是上一條說(shuō)的 “以后”
- forward: 神經(jīng)網(wǎng)絡(luò)標(biāo)準(zhǔn)的前向操作
- backPropagation: 神經(jīng)網(wǎng)絡(luò)標(biāo)準(zhǔn)的回饋操作
總結(jié)
以上是生活随笔為你收集整理的代价敏感多标签主动学习的代码开发跟踪的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (pytorch-深度学习)包含并行连结
- 下一篇: java 对象引用 弱引用吗_谈谈Jav