精准化糖尿病知识问答(LLM+机器学习预测模型)
精准化糖尿病知识问答(LLM+机器学习预测模型)
关键词:精准化;糖尿病(慢病)
这里主要是对APP部署途径的叙述,在这之前讨论两个问题:
-
慢性疾病适用什么样的预测模型。对于糖尿病等慢病来说,诊断是容易的,比如糖尿病在空腹血糖值达到一定的水平即可诊断,高血压也是如此,所以制作慢病类的诊断预测模型必要性不大,又因为慢病重在预防,所以制作cox类的预测模型预先估计一段时间后慢病发生的风险,就有一定的用途。
-
精准化如何实现?仅仅知道患病风险大还不够,还要知道哪些因素造成了风险,所以在做出风险估计之后,还需要做归因,即分析出当前指标对于预测结果的贡献大小,以便有的放矢地改善不良指标,而达到预防的目的。又因为人与人或者不同阶段的不良指标是不同的,归因分析要求个性化以实现精准化预防。
以上过程可以通过构建COX机器学习模型+SHAP分析来实现,是目前比较成熟的技术,此处主要叙述以以上工作为基础的APP部署的实现。
实现过程分为三个步骤:
1. API部署糖尿病cox预测模型
采用fastapi包来部署预测模型,预测模型中实现了3个API,分别是预测第3年的患病风险,预测第5年的患病风险,给出SHAP分析变量的归因结果。
宝塔面板部署API,联合内网穿透实现外网访问,这样就可以在千帆平台中引用API。
机器学习部署中需要注意问题就是算力有一定的要求,所以在一些算力较小的环境下可能部署不聊,比如免费的Render账号。
2. 千帆平台构建应用
将预测模型API构建成组件,以便应用访问。可以有多种设计,原先的设计是用户输入时间后给出特定时间的患病风险,后来感觉容易引起大模型的误会,所以采用了目前的设计,输入数据给出第3年和第五年的患病风险以及归因结果。牺牲了自由度,降低了出错的可能性。
应用中还加入了另外组件,健康小助手,以便回答相对专业一点的医疗问题,解释结果并根据结果给出个性化的预防建议。
注意选择高级一点的LLM,有助于理解数据的处理。
3.构建streamlit应用
第二步结束以后已经可以进行问答,但是APP样式和部署途径是固定的,如果说想实现更加样式个性化以及更多的部署途径,可以使用streamlit等工具进行包装,仅仅复制了千帆应用的问答。
streamlit的chat功能感觉样式不多,也可以选择gradio等。
APP访问地址:https://stdiabetes.streamlit.app/
总结
对于慢性疾病来说,通过COX预测模型预测未来一段时间内的患病风险是更适合的模式,结合模型解释分析可以实现个性化、精准化地预防。
LLM+API可以看作是部署机器学习模型的另外一种形式,与纯streamlit等可视化的形式相比,在处理和展示图片等方面有所削弱,但是在结果的整理和解释方面有独特的优势。