周三晚七点,七楼工作间。
林小禾把三个文件夹拖到共享目录里,键盘敲得啪响。
“形状特征模块,全部交付。”
他转过椅子面向陆远洲,反光的镜片后也藏不住他的得意。“球形度、边缘不规则度、体积比,三个参数全通过单元测试。精度误差控制在千分之三以内。”
陆远洲拉了把椅子坐过去,接过鼠标,从第一个参数的测试日志开始逐行看。
测试用例跑了两百多个,覆盖了正常肝组织、良性肿瘤和恶性肿瘤三种掩膜。输出值跟人工测量的金标准对比,偏差全在可接受范围内。
他又调出球形度的边界值测试极端形态下有没有溢出、除零、异常报错。
没有,干干净净。
“不错。”
林小禾在旁边搓了搓手:“那今晚合并跑一次?”
“跑。”
陆远洲把椅子推回自己那台电脑前,打开建模脚本。原来的特征矩阵只有灰度共生矩阵和游程长度那几组纹理特征,现在要把形状信息接进去,特征维度一下子多了十一个。
“我改配置文件,你盯着数据管道别断。”
两人分头动手。
工作间的灯管嗡嗡响着,空调出风口吹下来的冷气打在林小禾后脖颈上。他缩了下脖子,但手没停。
四十分钟后,数据管道联调完毕。六十七例训练集的完整特征矩阵生成成功,没有一条报错。
“开始建模。”
陆远洲按下回车。
屏幕上的进度条开始爬。逻辑回归、随机森林、支持向量机三个模型同时训练,五折交叉验证。
林小禾盯着进度条,手里无意识地转着笔。
“预估多久?”
“六十七例不算大,十分钟左右。”
实际跑了十一分钟。
屏幕刷出最终结果的时候,林小禾的笔停了。
随机森林模型,五折交叉验证,平均曲线下面积(auc):0。89。
五折的分值分别是:0。87、0。91、0。88、0。86、0。92。
没有一折低于0。86。
稳得离谱。
林小禾从椅子上弹起来,巴掌拍在桌面上,“啪”地一声把旁边的空泡面碗震得跳了一下。
“零点八九!”
他又拍了一下。
“零点八九!”
第三下直接拍到了键盘上,屏幕蹦出一串乱码。
“你冷静点。”陆远洲把他的手从键盘上拨开,“别把结果文件给我覆盖了。”
林小禾往后退了一步,双手插在头发里,在原地转了两圈。
“上个月零点七八,加了形状特征直接跳到零点八九。六个百分点啊陆哥!这东西发出去,国内影像组学领域第一篇完整建模的临床研究论文就是咱们的!”
陆远洲没接话,盯着屏幕又看了两分钟。
他把五折的混淆矩阵逐一调出来看。敏感性最低一折是84%,最高91%。特异性最低86%,最高93%。
没有某一折异常拉高或拉低。模型的泛化能力在训练集内部是过关的。
“保存结果,备份两份。”他关掉屏幕上的可视化面板。
林小禾还在那兴奋,搓着手来回走。“我给你算,协和那边数据跑通之后,多中心验证加上去,这文章投出去至少五分以上的杂志……”
“先别想发哪。”陆远洲打断他,“训练集的曲线下面积再高都是自己跟自己玩。外部验证过不了,什么都白搭。”
林小禾的脚步顿了一下,兴奋劲稍微收了收。
“协和数据预处理到哪了?”
“百分之五十。灰度标准化做了一半,层厚重采样还没动。”
陆远洲打开白板上的进度表,拿起马克笔把“形状特征模块”那行画了个勾。然后在下面写了一行新的:协和数据预处理deadline:两周半。