Hierarchical Feature Engineering,簡寫 HFE,包含四個階段,分別是:
上圖中,樹結構共有 8 層。前七層是生物學的分類:界(Kingdom)、門(Phylum),綱(Class),目(Order)、科(Family)、屬(Genus)和種(Species)。論文中額外在最底層增加了一層:OTU 層。
資料集中原有的特徵向量表示為:
( o j i ) n × m = [ o 1 1 o 2 1 … o m 1 o 1 2 o 2 2 … o m 2 … … … … o 1 n o 2 n … o m n ] , i ∈ [ 1 , 2 , … , n ] , j ∈ [ 1 , 2 , … , m ] . (o^i_j)_{n \times m}= \begin{bmatrix} o^1_1 & o^1_2 & \dots & o^1_m \\ o^2_1 & o^2_2 & \dots & o^2_m \\ \dots & \dots & \dots & \dots \\ o^n_1 & o^n_2 & \dots & o^n_m \\ \end{bmatrix}, i \in [1, 2, \dots, n], j \in [1, 2, \dots, m]. (oji)n×m=⎣⎢⎢⎡o11o12…o1no21o22…o2n…………om1om2…omn⎦⎥⎥⎤,i∈[1,2,…,n],j∈[1,2,…,m].
將較高分類單元 i k i_k ik 視為潛在特徵,其相對丰度是自下而上的樹遍歷中各自孩子 C C C 的相對丰度的累加和:
o i k = ∑ c ∈ C ( i k ) o c . o_{i_k} = \sum_{c \in C(i_k)} o_c. oik=c∈C(ik)∑oc.
樹結構中的某個非葉子節點,是一個具有較高層次的潛在特徵,我們將其記為 i k i_k ik,它的孩子節點的集合記為 C ( i k ) C(i_k) C(ik),則按照公式計算 i k i_k ik 的相對丰度 o i k o_{i_k} oik:
o i k = [ o i k 1 o i k 2 … o i k n ] = [ ∑ c ∈ C ( i k ) o c 1 ∑ c ∈ C ( i k ) o c 2 … ∑ c ∈ C ( i k ) o c n ] . o_{i_k} = \begin{bmatrix} o^1_{i_k} \\ o^2_{i_k} \\ \dots \\ o^n_{i_k} \\ \end{bmatrix} = \begin{bmatrix} \sum_{c \in C(i_k)} o^1_c \\ \sum_{c \in C(i_k)} o^2_c \\ \dots \\ \sum_{c \in C(i_k)} o^n_c \\ \end{bmatrix}. oik=⎣⎢⎢⎡oik1oik2…oikn⎦⎥⎥⎤=⎣⎢⎢⎡∑c∈C(ik)oc1∑c∈C(ik)oc2…∑c∈C(ik)ocn⎦⎥⎥⎤.
所有較高層次的潛在特徵,組成一個內部節點的特徵集合,表示如下:
[
o
i
1
1
o
i
2
1
…
o
i
m
‾
1
o
i
1
2
o
i
2
2
…
o
i
m
‾
2
…
…
…
…
o
i
1
n
o
i
2
n
…
o
i
m
‾
n
]
\begin{bmatrix} o^1_{i_1} & o^1_{i_2} & \dots & o^1_{i_{\overline{m}}} \\ o^2_{i_1} & o^2_{i_2} & \dots & o^2_{i_{\overline{m}}} \\ \dots & \dots & \dots & \dots \\ o^n_{i_1} & o^n_{i_2} & \dots & o^n_{i_{\overline{m}}} \\ \end{bmatrix}
⎣⎢⎢⎡oi11oi12…oi1noi21oi22…oi2n…………oim1oim2…oimn⎦⎥⎥⎤
原始特徵和內部節點衍生出來的特徵,共同構成擴充套件特徵向量,其表示形式如下所示:
F
=
[
o
1
1
o
2
1
…
o
m
1
o
i
1
1
o
i
2
1
…
o
i
m
‾
1
o
1
2
o
2
2
…
o
m
2
o
i
1
2
o
i
2
2
…
o
i
m
‾
2
…
…
…
…
…
…
…
…
o
1
n
o
2
n
…
o
m
n
o
i
1
n
o
i
2
n
…
o
i
m
‾
n
]
F = \begin{bmatrix} o^1_1 & o^1_2 & \dots & o^1_m & o^1_{i_1} & o^1_{i_2} & \dots & o^1_{i_{\overline{m}}} \\ o^2_1 & o^2_2 & \dots & o^2_m & o^2_{i_1} & o^2_{i_2} & \dots & o^2_{i_{\overline{m}}} \\ \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots \\ o^n_1 & o^n_2 & \dots & o^n_m & o^n_{i_1} & o^n_{i_2} & \dots & o^n_{i_{\overline{m}}} \\ \end{bmatrix}
F=⎣⎢⎢⎡o11o12…o1no21o22…o2n…………om1om2…omnoi11oi12…oi1noi21oi22…oi2n…………oim1oim2…oimn⎦⎥⎥⎤
對於層級中每對 「父親-孩子」,皮爾遜相關係數(Pearson correlation coefficient)
ρ
\rho
ρ 是父親節點和孩子節點的一組向量計算出來的。
如果
ρ
\rho
ρ 比預定義的閾值
θ
p
\theta_{p}
θp 大,那麼移除孩子節點;否則保留孩子節點作為層級結構的一部分。
operation = { remove , if ρ > θ p ; retain , otherwise. \text{operation} = \begin{cases} \text{remove}, \text{ if } \rho > \theta_{p}; \\ \text{retain}, \text{ otherwise.} \end{cases} operation={remove, if ρ>θp;retain, otherwise.
對於任意的非葉子節點 i k i_k ik,它的孩子節點集合是 C ( i k ) C(i_k) C(ik),則
∀
i
k
,
c
∈
C
(
i
k
)
\forall i_k, c \in C(i_k)
∀ik,c∈C(ik),
operation
=
{
remove
c
,
if
ρ
(
i
k
,
c
)
>
θ
p
;
retain
c
,
otherwise.
\text{operation } = \begin{cases} \text{remove } c, \text{ if } \rho(i_k, c) > \theta_{p}; \\ \text{retain } c, \text{ otherwise.} \end{cases}
operation ={remove c, if ρ(ik,c)>θp;retain c, otherwise.
根據上一階段保留的節點,從葉子到根(即每個 OTU 的世系)構建所有路徑。
對每條路徑而言,計算路徑上每個節點關於標籤/類別 L L L 的 I G IG IG。
平均 I G IG IG 作為閾值 θ \theta θ,用於丟棄具有較小 I G IG IG 值或者零值的節點。
需要注意的是,具有不完整路徑上的葉子節點不參與這一步,這些葉子節點將在 1.4. 中處理。
公式表示如下:
θ
i
g
=
∑
p
∈
P
I
G
(
o
p
,
L
)
∣
P
∣
\theta_{ig} = \frac{\sum_{p \in P} IG(o_p, L)}{\left| P \right|}
θig=∣P∣∑p∈PIG(op,L)
∀ c in a complete leaf-root path P in T \forall c \text{ in a complete leaf-root path } P \text{ in } T ∀c in a complete leaf-root path P in T,
operation = { remove c , if I G ( o c , L ) < θ i g ; retain c , otherwise. \text{operation } = \begin{cases} \text{ remove } c, \text{ if } IG(o_c, L) < \theta_{ig}; \\ \text{ retain } c, \text{ otherwise.} \end{cases} operation ={ remove c, if IG(oc,L)<θig; retain c, otherwise.
為了處理 OTUs 中完整的分類資訊,
對於那些具有不完整分類資訊的 OTU(路徑不完整: incomplete paths),如果它的
I
G
IG
IG 大於 1.3. 中完整路徑中所有節點的全域性平均
I
G
IG
IG 值,那麼保留該節點;否則,丟棄該節點。
用公式表示:
θ t = ∑ c ∈ T I G ( o c , L ) ∣ T ∣ . \theta_{t} = \frac{\sum_{c \in T} IG(o_c, L)}{\left| T \right|}. θt=∣T∣∑c∈TIG(oc,L).
operation = { remove c , if I G ( o i , L ) < θ t ; retain c , otherwise. \text{operation } = \begin{cases} \text{ remove } c, \text{ if } IG(o_i, L) < \theta_{t}; \\ \text{ retain } c, \text{ otherwise.} \end{cases} operation ={ remove c, if IG(oi,L)<θt; retain c, otherwise.