(46.3%)为乳腺恶性病变。该数据集可用于开发模型,
根据图像特征和患者年龄[17]预测乳腺病变在组织病
理学上是良性还是恶性。
软件
所有分析均使用 R 4.0.3 版本。
机器学习分析
数据准备
我们首先从 UCI 存储库加载数据集,并按照数据集描
述中指定的方式标记列(参见表 1,Task 1.1 和 1.2,有
关 R 代码)[16]。结果数据集被称为“db”,有 6 列(“BI-
RADS” 、 “Age” 、 “Shape” 、 “Margin” 、 “Density” 和
“outcome”)。
在创建数据集之后,我们根据数据集描述将每列转换
为因子(分类)或数值变量,并分配特定的因子水平和
参考类别以提高可读性(表 1,任务 1.3 和 1.4)。
在开始 ML 分析之前,最好检查每一列,以检测缺失
值或错误比例较高的变量。使用表 1(任务 1.6)中的代
码,我们可以检测和删除缺失率高的变量。虽然我们
将使用 imputation 技术来处理缺失数据,但我们会删
除丢失数据点超过 50%的任何变量。此外,一些数据
集可能有输入错误的数据,这些数据要么不可能输入
错误,要么很可能输入错误,例如,AGE< 0。我们
可以使用表 1(任务 1.5)中的代码将这些数据替换为
“NA”。需要注意的是,此代码仅用于演示目的,在当
前情况下不需要实现它们。
ML 中的标准实践是使用训练集进行模型开发,并使
用单独的测试集来评估模型的性能。由于 ML 模型中
的参数数量很多,训练数据的过拟合是一种明显的可
能性。理想情况下,我们有一个完全独立的数据集(例
如,它包含从不同的实践或医院收集的数据)来验证我
们的模型。或者,如果我们只有一个数据集,我们可
以将我们的数据集随机分成一个包含 80% 数据的开发
集和一个包含剩余 20%数据的验证集(表 1,任务 1.7)。
数据预处理
现在,我们开始对数据进行预处理。数据预处理应该
在每次孤立的重采样迭代中进行(图 1),以避免使用
来自训练数据集之外的信息训练模型时发生的信息泄
漏,从而降低模型对未来数据的可泛化性[14,18]。数
据预
处理步骤的顺序也会对模型输出产生影响。例如,在
归一化之前进行单热编码可能会改变数据的信息并产
生误导性的模型。关于数据预处理过程中的信息泄露
和数据预处理技术的顺序进行了深入的讨论,供感兴
趣的读者参考[14]。
R 中可用的“菜谱”包提供了一种优雅的方式来创建包
含数据预处理各个步骤的蓝图(菜谱)。我们将创建一
个蓝图,在交叉验证(CV)过程中分别应用于每个折叠,
以最大限度地减少信息泄漏。我们首先用我们的训练
数据集和公式 for-mat 中的变量信息定义一个配方对象
(表 1,Task 1.8)。然后,我们通过一系列步骤依次添加
使用配方准备训练数据所需的数据预处理技术。表 2
提供了本案例研究中使用的所有预处理步骤的描述。
“all_predictors()”函数用于表示我们将此步骤应用于所
有预测器,而不是预测器的子集。all_predictors()的其
他替代方法包括用于数值变量的“all_numerics()”和用
于分类变量的“all_nomals()”(表 1,任务 1.8)。我们还
可以使用预测器名称来指定应该应用步骤的位置。例
如,“step_log(AGE)”将返回 AGE 变量的日志转换版本。
相比之下,“- all_outcomes()”用于将结果变量从步骤
中排除。根据我们的经验,这些步骤对于许多医疗数
据集来说是足够的。我们建议根据手头的数据集,仔
细考虑使用哪些步骤及其顺序。关于数据预处理和特
征工程技术的更深入讨论发表在其他地方[14]。需要
额外数据预处理步骤的读者可直接访问“菜谱”包的网
站,以获取[19]的完整功能列表。
我们建议在将 ML 算法拟合到数据之前先查看准备好
的数据:首先,我们查看配方中包含的所有步骤(表 1,
任务 1.9)。其次,我们可以检查特定预处理步骤的变
化,例如 step_normo -malize 的均值和标准差( 表
1,Task 1.10;感兴趣的读者可以修改“数字”的值,以检
查蓝图中的其他步骤)。第三,我们全面审查准备好的
训练数据(表 1,任务 1.11)——预处理后的训练数据摘
录如图 2 所示。
算法开发和超参数调优
在准备好数据集之后,我们可以开始开发我们的模型。
在讨论不同的模型算法之前,我们首先定义一些可用
于所有算法的通用设置。首先,我们定义
文档被以下合辑收录
相关文档
评论