2. 江西农业大学 软件学院,江西 南昌 330045;
3. 江西科技学院 信息技术研究所,江西 南昌 330098
2. School of Software, Jiangxi Agricultural University, Nanchang 330045, China;
3. Institute of Information Technology, Jiangxi University of Technology, Nanchang 330098, China
粗糙集理论[1-2]是一种有效的数据分析方法,主要用于处理不确定、不一致和模糊的数据[3-4],已被广泛地应用于知识发现、数据挖掘和机器学习等领域。属性约简是粗糙集理论的重要研究内容之一,它旨在保持原属性集区分能力不变的情况下,剔除不重要或冗余的属性[5-6]。由于属性约简的结果往往不是唯一的,找到数据所有约简的结果,已经被证明是一个NP-hard问题。因此在实际应用中通常采用启发式算法处理大规模数据,获取满足知识发现要求的属性约简结果[7-9]。
然而,在众多现实应用领域中存在大量的高维复杂数据。并且在数据采集阶段,由于采集成本和技术的限制,导致这些高维数据往往存在缺失。同时,给这些数据进行类别标注,需要耗费大量的人力资源,并且利用经典粗糙集无法直接处理不完备数据。针对上述问题研究人员引入容差关系和限制容差关系等,拓展了经典粗糙集的应用[10-12],但这些扩展的关系模型难以直接处理含有连续型的不完备混合数据。同时,由于在实际应用中,这些高维数据通常仅包含少量已标注的数据。若仅利用带标记的数据进行属性约简,约简结果不能有效反映数据的分布,且分类性能较弱。
弱监督属性约简旨在有效利用无标记数据来增强属性约简的有效性,从而提高学习模型的分类性能。近年来,弱监督属性约简引起了许多研究人员的关注和研究。文献[13]针对弱标记的符号型数据,在区分对的基础上,利用有监督学习框架和无监督学习框架,构造相对应的启发式半监督属性约简算法。文献[14]基于粗糙集理论和信息熵的概念,在对无标记数据进行部分标注后,设计了一种基于信息熵的半监督特征选择算法。文献[15]将粗糙集理论和集成学习框架相结合,利用有标记的数据训练基分类器对无标记的数据进行标注,扩充有标记的数据。文献[16]提出了一种基于流形正则化的半监督特征选择算法,通过最大化不同类别之间的间距对特征的重要性进行度量分析。文献[17]提出了一种半监督特征选择算法,算法通过组合半监督散点,有效利用大量未标记的视频数据中的信息来区分目标类别。上述这些方法为弱标记数据的属性约简,提供了有效的解决方案。
另外,在大数据时代,许多数据随着时间的推移而动态变化。在这种复杂应用场景中,传统的属性约简算法在处理这些动态数据时,将会产生大量重复计算,无法快速更新属性约简结果。近年来,许多学者对动态属性约简算法进行了大量的研究。文献[18]提出了一种基于信息熵的组增量式属性约简算法,在动态增加一组实例后,快速更新属性约简结果。文献[19]采用一种复合粗糙集模型,处理动态的不完备数据,在数据动态变化后快速更新近似集合。文献[20]提出了一种基于知识粒度模型的动态属性约简算法,在实例变化后动态更新属性约简集。文献[21]提出了一种不完备动态属性约简算法,该算法在不完备决策系统中单个实例变化后动态获取新的属性约简结果集。上述研究都是针对所有实例均有标记的数据,目前对弱标记数据的增量式属性约简研究较少。为此,有效地利用无标记数据来增强属性约简结果,并在保证分类精度前提下动态更新属性约简结果,已成为了当前亟待解决的问题。
针对上述问题,本文提出了弱标记不完备数据的区分对概念,给出了属性的相对重要度的度量方法。并以此为基础,设计了启发式的半监督属性约简算法,算法在每次迭代过程中能剔除相对冗余的属性和当前属性约简集已能够区分的区分对,算法的搜索空间显著缩减。同时,根据数据中实例的动态变化情况,给出属性约简集的动态更新机制,并通过实例分析详细说明动态属性约简算法的计算过程。最后,采用来自UCI的真实数据集,进一步验证了算法的高效性和可行性。
1 基本知识定义1 四元组
给定信息系统,如果至少有一个属性
定义2 在不完备信息系统
$ \left\{ \begin{array}{l} \exists p \in {A_r},{\rm{|}}\;f({x_i},p) - f({x_j},p)\;{\rm{|}} > \delta \\ \vee \exists p \in {A_d},f({x_i},p) \ne f({x_j},p) \\ \wedge f({x_i},p) \ne * \wedge f({x_j},p) \ne * \end{array} \right. $ |
给定的不完备信息系统
定义3 对于给定信息系统
对于给定决策系统
定义4 给定不完备决策系统
$ \left\{ \begin{array}{l} \left\{ \begin{array}{l} (\exists p \in {C_r},|f({x_i},p) - f({x_j},p)| > \delta ) \\ \vee \exists p \in {C_d},f({x_i},p) \ne f({x_j},p)\\ f({x_i},p) \ne * \wedge f({x_j},p) \ne * \end{array} \right\} \wedge \\ f({x_i},D) \ne f({x_j},D) \end{array} \right. $ |
给定的不完备决策系统
由于在现实应用中,在大量不完备数据中只有少部分实例存在标记,若仅利用带标记的实例获取属性约简结果,由于无标记的实例未得到有效的利用,使得属性约简结果较难反映数据的整体信息,分类算法难以学习有效的知识规则,导致分类模型的分类性能较弱。为此,针对弱标记不完备决策系统,设计有效的属性重性度量方法显得尤为重要。本文在文献[8,13]的基础上,构造了面向弱标记不完备数据的属性重要性度量方法。
给定的不完备决策系统
定义5 给定弱标记不完备决策系统
${\rm{Dis}}(B,{U^2}) \!=\! \left\{ \begin{array}{l} \!\!\! {\rm{Di}}{{\rm{s}}_L}(B,{L^2}) + {\rm{Di}}{{\rm{s}}_{M}}(B,U{L^2}),\quad L \ne { \text{Ø}} , M \ne {\text{Ø}} \\ \!\!\!{\rm{Di}}{{\rm{s}}_L}(B,{L^2}),\quad L \ne { \text{Ø}} ,M = {\text{Ø}} \\ \!\!\! {\rm{Di}}{{\rm{s}}_{M}}(B,U{L^2}),\quad L = { \text{Ø}} ,M \ne { \text{Ø}} \\ \end{array} \right.$ |
性质1 给定弱标记不完备决策系统
${\rm{Dis}}(B \cup a,{U^2}) \geqslant {\rm{Dis}}(B,{U^2})。$ |
证明 根据定义2可得
定义6 给定弱标记不完备决策系统
1)
2)
定义7 给定弱标记不完备系统
1)属性
${\rm{RSig}}(c,B,{U^2}) = \left\{ \begin{array}{l} |{\rm{Dis}}(B \cup c,{U^2}){\rm{| - }}|{\rm{Dis}}(c,{U^2})\;{\rm{|}},\quad B \ne \text{Ø} \\ |{\rm{Dis}}(c,{U^2})|,\quad B = \text{Ø} \\ \end{array} \right.$ |
2)当
如图1所示,利用
Download:
|
|
性质2 给定弱标记不完备决策系统
1)
2)
证明 因为
证明了1)的充分性。
若
$ \begin{array}{c} {\rm{RSig}}(c,R,{U^2}){\rm{ = |Dis}}(c,{U^2}) - {\rm{Dis}}(c,{U^2}) \cap {\rm{Dis}}(R,{U^2})| \\ {\rm{ = |Dis}}(c,{U^2}) - {\rm{Dis}}(c,{U^2}) \cap {\rm{Dis}}(C,{U^2})| = {\rm{0}} \end{array} $ |
与假设矛盾。证明了1)的必要性,同理可证2)。
2 弱标记不完备决策系统的属性约简基于属性重要度设计启发式属性约简算法,被广泛地用于粗糙集理论的属性约简,传统的启发式算法每次迭代时,每次将最重要的属性增加到属性约简集中,但是在迭代过程中无法剔除相对冗余的属性。本文提出一种基于区分对的向前启发式属性约简算法,在每次迭代中,将相对于当前属性约简集最重要的属性加入属性约简集中,并剔除相对冗余属性和当前属性集已经能够区分的实例对,快速缩减算法的搜索空间。
2.1 属性约简算法算法1 弱标记不完备决策系统属性约简算法(WIDAR算法)
输入 弱标记不完备决策系统
输出 属性约简集red。
1)
2) 计算属性集
3)
{对
当
${c_k}{\rm{ = argmax\{ RSig}}({c_k},{\rm{red,Pai}}{{\rm{r}}_{_j}})|{c_k} \in {C_j} - C'\} ;$ |
$C' = C' \cup {c_k};$ |
4) 对可能存在的冗余属性进行逆向剔除
计算
对于
5) 输出属性约简集
算法1的1)初始化变量;2)根据定义2和定义4计算实例在属性集
在动态数据中使用传统的属性约简方法,往往无法快速获取约简结果,而增量式属性约简算法能有效地利用原约简结果,避免大量的重复计算。针对数据动态变化的情况,本节分析了数据动态变化对实例区分对的影响,图2给出了属性约简的增量式更新机制,并针对动态数据中的实例变化情况,算法2设计了属性约简增量式更新算法。
Download:
|
|
算法2 弱标记不完备决策系统的增量式约简算法(WIDIAR算法)
输入 弱标记不完备决策系统
输出 属性约简结果
1) 计算删除实例
2) 对于
3) 计算增加的区分对
4)
$\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\! \Delta {\rm{Pair}}_{{\rm{ad}}}^j = \Delta {\rm{Pai}}{{\rm{r}}_{{\rm{ad}}}};$ |
$ \!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\! {\rm{while}}(\Delta {\rm{Pair}}_{{\rm{ad}}}^j \ne {\rm{0)}}:$ |
{
$ \begin{array}{l} {c_k}{\rm{ = argmax\{ RSig}}({c_k},{\rm{red'}},\Delta {\rm{Pair}}_{{\rm{ad}}}^j)|{c_k} \in {C_j} - C'\} ;\\ {\rm{red'}} = {\rm{red'}} \cup {c_k},C' = C' \cup {c_k};\\ {\rm{Pair'}} = {\rm{Dis}}({c_k},\Delta {\rm{Pair}}_{{\rm{ad}}}^j);\\ {C_{j{\rm{ + }}1}} = C - C',\Delta {\rm{Pair}}_{{\rm{ad}}}^{j + 1} = \Delta {\rm{Pair}} _{{\rm{ad}}}^j - {\rm{Pair'}}; \end{array} $ |
5) 对可能存在的冗余属性进行逆向剔除,计算
6) 输出新的属性约简结果
算法2中:1)计算删除实例后属性集
为进一步详细说明算法的流程。以表1中的弱标记不完备数据为例,进行分析说明。其中共有6个实例和4个属性,
根据表1详细描述算法1属性约简的具体步骤:算法1中的1)变量初始化;2)计算关于属性集
为进一步详细说明算法2针对不同实例变化后对原属性约简结果产生的影响,下面首先分析算法2的2)中实例动态删除情况。在数据中删除实例将存在6种情况:1)只删除有标记的实例
由于在许多现实动态场景中不仅存在数据删除还有数据动态增加的情况,为了进一步分析算法2的3)和4)的计算流程,在上述实例中若在原始数据集中删除实例
通过上述实例分析可知,本文算法1采用相对重要度为属性重要度的度量标准,在迭代过程中不断剔除当前属性集已能够区分的区分对和相对冗余的属性,使得每次迭代的搜索空间不断缩减,避免了大量的重复计算。算法2通过分析实例动态变化对原属性约简集的影响,在实例变化后动态获取属性约简集,无需重新计算属性约简集。在删除实例后,对可能存在的冗余属性逆向剔除;增加实例后,通过搜索原属性约简集无法辨识的区分对,确定算法的搜索空间。为弱标记混合数据的属性约简提供了一种可借鉴的处理方法。
5 实验分析为进一步验证本文算法的有效性,从UCI数据集中选取了6个真实数据集进行测试和分析,数据的详细信息如表2所示。实验的运行环境为:CPU Intel(R)Core(TM)i5-6500(3.20 Hz),内存8.0 GB,操作系统为Windows 10,采用Python编程语言,开发工具为Pycharm 2018.2.4。
本节详细讨论标记缺失对算法1的影响,首先以数据集的40%为基础数据,数据集大小的10%为梯度递增,对数据集的标记进行随机缺失处理。然后分别对弱标记的数据(weak labeled data)采用算法1(WIDAR)、Semi_D算法[13]、Semi_P算法[10]进行属性约简,并和算法1对有标记数据(Labeled data)的约简结果进行比较分析。对属性约简结果的分类性能评估,将采用KNN、CART、Naive Bayes三个分类器的精度作为约简结果的评价指标,将Automobile、Soybean、Dermatology、Cylinder Bands数据集随机分为两部分,一部分作为训练集,另一部分作为测试集,获取分类精度;Mushroom和Letter Recognition数据集采用10倍交叉验证,获取分类精度。针对数据中的连续型属性,本文的
Download:
|
|
Download:
|
|
Download:
|
|
Download:
|
|
Download:
|
|
由图3~5可知,WIDAR算法能够有效利用有标记和无标记的数据,获取分类性能较优的属性约简集。特别地,随着标记缺失比例的增加,若采用WIDAR算法仅处理有标记数据(Labeled data)获取的属性约简结果,由于信息利用率的下降,分类器难以学习到较好的分类模型,在3个分类器中分类性能总体偏低,分类精度较低并且不稳定。相反,充分利用弱标记数据获取的属性约简结果,能够较好地利用原数据集的信息。分类模型的分类精度较高且稳定,分类性能较优。在前4个数据集中,由于数据的规模较小,使得分类器较难准确学习到其内在规则或模式,且对小数据集的标记进行随机缺失,对分类效果产生了一定影响。因此不同分类器在同一属性约简结果上的分类表现差异较大,但仅利用有标记的数据获取属性约简结果的分类性能显著偏弱。随着数据规模增大,在Mushroom、Letter Recognition数据集中,随着标记缺失比例的增加,WIDAR算法在有标记的数据中和Semi_D算法在弱标记数据中获取的属性约简结果分类精度出现较大的波动,但采用WIDAR算法利用弱标记的数据获取的属性约简结果分类精度稳定且对比Semi_D算法有较明显的优势。以数据集Letter Recognition为例,在图(3)的(f)中随着标记缺失比例的增加,WIDAR算法使用弱标记的数据获取的属性约简结果在KNN分类器上的分类精度仅出现了较小的波动,在标记缺失比例为40%时分类精度为99.0%,在标记缺失比例为90%时,分类精度仍有92.4%,与Semi_D算法相比分类精度从83.7%下降到58.4%。而在CART和Naive Bayes分类器中,WIDAR算法的表现更加稳定,CART分类器的分类精度稳定在100%,Naive Bayes分类器的分类精度则在73.6%~76.3%,与Semi_D算法相比具有较明显的优势。
为了进一步详细分析属性约简结果,本文以数据标记缺失比率为50%的情况为例,在表3中列举出了详细的属性约简结果,属性
综上可知,无标记数据也内含丰富的分类信息,仅利用有标记的数据获取属性约简集,往往会丢失部分信息,导致分类器的分类性能偏低。充分利用有标记数据和无标记数据,获取的属性约简结果,在分类器中的表现较优。WIDAR算法在对大数据进行属性约简时,能够快速获取分类性能较优的属性约简结果,且算法具有良好的鲁棒性。另外,为了进一步说明算法2 (WIDIAR算法)的有效性,在数据集的标记随机缺失50%后,将6组数据集划分为基准数据集和候选数据集两部分,取原数据集的前50%作为基准数据集。为应对现实应用领域中常见的复杂应用场景,每次实验剔除基准数据集中5%的数据后增加数据,并且增加的数据以候选数据集的10%为梯度增加,与WIDAR算法、Semi_P算法和Semi_D算法进行对比分析,实验结果如图6所示。
Download:
|
|
由图6(a)~(c)可知,WIDAR算法引入了相对重要度作为属性重要度的度量标准,在迭代中不断缩减算法搜索空间。因此在处理数据规模较小的数据集时,WIDIAR算法与WIDAR算法计算效率相近,但相比Semi_P算法和Semi_D算法有较明显的优势。但随着数据规模的增大,WIDAR算法在动态数据中更新属性约简结果需要进行大量的重复计算。采用WIDIAR算法,对属性约简集进行增量式更新,能够有效减少重复的计算,相比WIDAR算法,能够节约大量的时间。当增加的数据集的大小为100%时,在Mushroom数据集中,采用动态属性约简算法动态更新属性约简结果需要的时间仅为210.156 s,而采用静态属性约简算法,获取属性约简需要花费423.521 s,与静态属性约简算法相比较能够节约50.38%的时间。在Letter Recognition数据集中,采用动态属性约简算法动态更新属性约简结果需要的时间仅为356.823 s,而采用WIDAR算法获取属性约简需要花费2776.922 s,与WIDAR算法相比较能够节约87.15%的时间。
表4为增加的数据达到100%时,WIDIAR算法和WIDAR算法的属性约简结果的对比,属性
在众多的现实应用领域中,由于数据采集技术和成本的限制,存在大量的不完备高维数据,且通常只有少量的数据存在标记信息。若仅利用有标记的数据获取属性约简结果,将会丢失部分有效的信息。为了有效地利用弱标记不完备的高维数据,从中获取分类效果更优的属性约简集,本文基于实例的区分对,提出属性相对重要度的概念,设计了启发式属性约简算法。针对动态变化场景,详细分析了数据的动态变化对属性约简的影响和更新机制。并在此基础上,提出了增量式的属性约简算法。实验结果表明,该算法在处理大规模数据时,相比静态属性约简算法,在保证分类性能的同时,能够高效地获取属性约简结果。下一步工作将拓展增量式属性约简算法应用场景,考虑属性集变化后,属性约简集的更新问题。
[1] | PAWLAK Z, SKOWRON A. Rough sets: some extensions[J]. Information sciences, 2007, 177(1): 28-40. DOI:10.1016/j.ins.2006.06.006 (0) |
[2] |
王国胤, 姚一豫, 于洪. 粗糙集理论与应用研究综述[J]. 计算机学报, 2009, 32(7): 1229-1246. WANG Guoyin, YAO Yiyu, YU Hong. A survey on rough set theory and applications[J]. Chinese journal of computers, 2009, 32(7): 1229-1246. DOI:10.3724/SP.J.1016.2009.01229 (0) |
[3] | HU Qinghua, LIU Jinfu, YU Daren. Mixed feature selection based on granulation and approximation[J]. Knowledge-based systems, 2008, 21(4): 294-304. DOI:10.1016/j.knosys.2007.07.001 (0) |
[4] |
王映龙, 曾淇, 钱文彬, 等. 变精度下不完备混合数据的增量式属性约简方法[J]. 计算机应用, 2018, 38(10): 2764-2771. WANG Yinglong, ZENG Qi, QIAN Wenbin, et al. Incremental attribute reduction method for incomplete hybrid data with variable precision[J]. Journal of computer applications, 2018, 38(10): 2764-2771. DOI:10.11772/j.issn.1001-9081.2018041293 (0) |
[5] | MA Fumin, DING Mianwei, ZHANG Tengfei, et al. Compressed binary discernibility matrix based incremental attribute reduction algorithm for group dynamic data[J]. Neurocomputing, 2019, 344: 20-27. DOI:10.1016/j.neucom.2018.01.094 (0) |
[6] | QIAN Yuhua, LIANG Jiye, PEDRYCZ W, et al. Positive approximation: an accelerator for attribute reduction in rough set theory[J]. Artificial intelligence, 2010, 174(9/10): 597-618. (0) |
[7] | LIANG Jiye, MI Junrong, WEI Wei, et al. An accelerator for attribute reduction based on perspective of objects and attributes[J]. Knowledge-based systems, 2013, 44: 90-100. DOI:10.1016/j.knosys.2013.01.027 (0) |
[8] | DAI Jianhua, HU Qinghua, HU Hu, et al. Neighbor inconsistent pair selection for attribute reduction by rough set approach[J]. IEEE transactions on fuzzy systems, 2018, 26(2): 937-950. DOI:10.1109/TFUZZ.2017.2698420 (0) |
[9] | TENG Shuhua, LU Min, YANG AFeng, et al. Efficient attribute reduction from the viewpoint of discernibility[J]. Information sciences, 2016, 326: 297-314. DOI:10.1016/j.ins.2015.07.052 (0) |
[10] | QIAN Yuhua, LIANG Jiye, LI Deyu, et al. Approximation reduction in inconsistent incomplete decision tables[J]. Knowledge-based systems, 2010, 23(5): 427-433. DOI:10.1016/j.knosys.2010.02.004 (0) |
[11] | MENG Zuqiang, SHI Zhongzhi. A fast approach to attribute reduction in incomplete decision systems with tolerance relation-based rough sets[J]. Information sciences, 2009, 179(16): 2774-2793. DOI:10.1016/j.ins.2009.04.002 (0) |
[12] | XIE Xiaojun, QIN Xiaolin. A novel incremental attribute reduction approach for dynamic incomplete decision systems[J]. International journal of approximate reasoning, 2018, 93: 443-462. DOI:10.1016/j.ijar.2017.12.002 (0) |
[13] | DAI Jianhua, HU Qinghua, ZHANG Jinghong, et al. Attribute selection for partially labeled categorical data by rough set approach[J]. IEEE transactions on cybernetics, 2017, 47(9): 2460-2471. DOI:10.1109/TCYB.2016.2636339 (0) |
[14] |
王锋, 刘吉超, 魏巍. 基于信息熵的半监督特征选择算法[J]. 计算机科学, 2018, 45(S2): 427-430. WANG Feng, LIU Jichao, WEI Wei. Semi-supervised feature selection algorithm based on information entropy[J]. Computer science, 2018, 45(S2): 427-430. (0) |
[15] |
张维, 苗夺谦, 高灿, 等. 基于粗糙集成学习的半监督属性约简[J]. 小型微型计算机系统, 2016, 37(12): 2727-2732. ZHANG Wei, MIAO Duoqian, GAO Can, et al. Semi-supervised data attribute reduction based on rough-subspace ensemble learning[J]. Journal of Chinese computer systems, 2016, 37(12): 2727-2732. DOI:10.3969/j.issn.1000-1220.2016.12.026 (0) |
[16] | XU Zenglin, KING I, LYU M R T, et al. Discriminative semi-supervised feature selection via manifold regularization[J]. IEEE transactions on neural networks, 2010, 21(7): 1033-1047. DOI:10.1109/TNN.2010.2047114 (0) |
[17] | HAN Yahong, YANG Yi, YAN Yan, et al. Semisupervised feature selection via spline regression for video semantic recognition[J]. IEEE transactions on neural networks and learning systems, 2015, 26(2): 252-264. DOI:10.1109/TNNLS.2014.2314123 (0) |
[18] | LINAG Jiye, WANG Feng, DANG Chuangyin, et al. A group incremental approach to feature selection applying rough set technique[J]. IEEE transactions on knowledge and data engineering, 2014, 26(2): 294-308. DOI:10.1109/TKDE.2012.146 (0) |
[19] | LI Shaoyong, LI Tianrui, HU Jie. Update of approximations in composite information systems[J]. Knowledge-based systems, 2015, 83: 138-148. DOI:10.1016/j.knosys.2015.03.016 (0) |
[20] | JING Yunge, LI Tianrui, LUO Chuan, et al. An incremental approach for attribute reduction based on knowledge granularity[J]. Knowledge-based systems, 2016, 104: 24-38. DOI:10.1016/j.knosys.2016.04.007 (0) |
[21] | SHU Wenhao, QIAN Wenbin. An incremental approach to attribute reduction from dynamic incomplete decision systems in rough set theory[J]. Data & knowledge engineering, 2015, 100: 116-132. (0) |
[22] | HU Qinghua, YU Daren, XIE Zongxia. Neighborhood classifiers[J]. Expert systems with applications, 2008, 34(2): 866-876. DOI:10.1016/j.eswa.2006.10.043 (0) |