前沿 随着人工智能阿尔法狗的新闻,人工智能进入大众视野,并在各个领域的研究呈现井喷趋势。 人工智能研究核心在计算机科学,但是,应用层面还是分布于各个行业。人工智能医学研究,在2017年以前,有少量研究,主要涉及机器学习,2017年以后也呈现井喷趋势。应用方法扩展到深度学习。相关研究在顶级期刊《Nature》、《science》发表。近几年的国家级基金,在该领域立项课题也是翻倍增加。究其原因,国家鼓励发展人工智能;目前我国科研的论文数量已经位列全球前列,但是,科研转化却存在较大鸿沟。而医工交叉的数据科学在转化方面存在巨大优势。优秀的研究结果,可以直接申请专利并进行商业化部署。比较成功的案例就是人工智能医学在胸部CT肺结节的精准识别。 一、AI医学优势: (一)适合非高校的医院的科研: 1、绝对大部分非高校直属的医院,少有独立的生物学实验室,生物学实验室的维护成本极高。而人工智能医学研究,算是一种轻资产,最为核心的研究环节就是算法的构建、算力的运用。固然,有专门的软件和公司提供服务,也可以采取医院自建的模式,投入最大的是智力和精力。在经费上投入不算多,因为是用于科学研究,对于信息安全等级要求不高,也没有多少维护费用。 2、跟蛋白组学、基因组学研究类似,人工智能医学的研究,其算法是对于临床各个科室是通用的。可应用于影像组学的核心算法也可以用于构建彩超图像的模型。随机森林、决策树不仅可应用于预测心肌梗死的预后,也可以应用于护理的跌倒风险评估,甚至可扩展到医院行政管理。 3、目前,大部分医院均实现电子病历,产生海量的数据。而人工智能医学的基础在于数据。研究的设计简单地归纳为两个部分,临床数据采集和需求、模型构建和运行。临床数据收集、临床需求的确定,这个对于绝对部分医院来说,是完全没有问题的。而其中问题最大的是模型构建和运行。而这块跟高校的计算机实验室恰恰相反,他们缺少的是临床数据和需求。 4、做好人工智能医学研究,可以有几个方式。与高校的计算机实验室合作、依靠腾讯云等集成平台。但经过实践,再加上绝大部分代码均可以在github上找到。以及论文的发表需要调参和提供原始代码,医院完全可以独立开发算法和模型。构建自己的人工智能医学实验室。 (二)研究方向: 结果预测(predict): 基于一些复杂数据的结果预测。例如,手术结局预测,死亡风险预测。 以手术成败,死亡作为target,临床诊疗过程中的所有因素做为Feature。流程为环境搭建数据预处理选择算法算法训练生成模型模型测试(结果输出)。这其中选择算法可以选择多种算法,对不同算法的结果进行比较;结果预测一般涉及机器学习(machinelearning),常用算法:eXtremeGradientBoosting(XGBoost),AdaptiveBoosting(AdaBoost),DecisionTree(DT),Supportvectormachines(SVM),RandomForest(RF),GradientBoostingDecisionTree(GBDT)。 结果输出的指标:precision,ROC,F1,recall。 图像识别: 属于无监督学习。对医疗图像进行标签,主要涉及深度学习(deeplearning)。就发表论文的成功概率来说,图像识别更容易发表论文。 (三)常见投稿期刊: 1、AnnTranslMed 2、MathBiosciEng 3、SciRep 二、零基础入门步骤: (一)名词与关系: 1。名词解释: 人工智能:人工智能(ArtificialIntelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人工智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能与人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。 机器学习:机器学习(ML,MachineLearning)是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。 机器学习还有下面几种定义: (1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。 (2)机器学习是对能通过经验自动改进的计算机算法的研究。 (3)机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。 深度学习:深度学习(DL,DeepLearning)是机器学习(ML,MachineLearning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标人工智能(AI,ArtificialIntelligence)。 深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。 Python:python是一种计算机编程语言。 2。名词关系: 人工智能是一个比较大的概念,更多是面向公众。机器学习是人工智能实现的一个具体方法,而深度学习是机器学习的一个分支,其技术难度更先进。而目前实现机器学习、深度学习的编程,主流还是应用python语言。有很多也使用R语言来做机器学习的研究。 (二)工作环境的搭建: 安装:目前主流推荐Anaconda。其具体步骤可以按照知乎的这个教程: Anaconda安装https:zhuanlan。zhihu。comp339690068 Anaconda安装https:zhuanlan。zhihu。comp432043531 说的是Anaconda安装好后,就包含了python了。不过,我也没理清之间的关系,保险一点可以把Python也安装了。 Python的安装:https:zhuanlan。zhihu。comp363708165 费用:以上软件商用是要收费的,不过,安装的时候选择个人使用是免费的。 (三)编辑器选择: 编辑器就是我们编写代码的地方,安装好Anaconda会有多种编辑器。具体哪一种更好,我也正在摸索。 (四)基础知识: Python也是一种编程语言,编程语言都有一些规则。比如,什么是字符串,引号是什么意思,怎么输出结果。由于Python应用于各个领域,厉害的Python大神都是各大公司抢着要的,我们跨界过去也不可能那么多精力,就主要学习最基本的框架和主要用于医学领域的。这里推荐一个B站教学视频: https:www。bilibili。comvideoBV1rg411G7mp?fromsearchseid4851026855846953069spmidfrom333。337。0。0 此外,也可以看官方文档: https:docs。python。org3tutorialmodules。htmlimportingfromapackage 1、Python内部环境部署: 1。1机器学习环境部署标准三联: importnumpyasnp importpandasaspd importmatplotlib。pyplotasplt 常用语法和逻辑: 对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】 1。2ROC曲线的制作: ROC曲线的全称是受试者工作特性曲线(ReceiverOperatingCharacteristic),源于二战中用于敌机检测的雷达信号分析技术。是反映敏感性和特异性的综合指标。它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1特异性)为横坐标绘制成曲线,曲线下面积越大,判别的准确性越高。在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。 输出高清图像 configInlineBackend。figureformatretina matplotlibinline ROC曲线做出来是一个图像,所以,需要matplotlib这个库,这个库是python里面非常有用的库。还可以做直方图、散点图、折线图。也就不必另外用统计图软件了。 matplotlib。rcParams〔axes。unicodeminus〕False importseabornassns sns。set(fontKaiti,styleticks,fontscale1。4) importpandasaspd pd。setoption(maxcolwidth,200) importnumpyasnp importpandasaspd importmatplotlib。pyplotasplt fromsklearn。preprocessingimportLabelEncoder,labelbinarize fromsklearn。modelselectionimporttraintestsplit fromsklearn。ensembleimportRandomForestClassifier fromsklearn。metricsimport 这其中,sklearn。metrics就是我们用来数据归回分类评估的核心库。这个import,后面这个要注意,是包含所有模块,但是使用有争议,暂时也没有找到其他代码,先用着吧。 2、数据预处理: 2。1、数据格式: 我们就可以数据预处理。Python是可以支持CSV的数据库格式,这种格式可以直接从医院的HIS系统导出,如果对于海量数据还是要选择这种格式。此外,Python是支持Excel的。用EXCEL可以自己在excel里面把数据进行处理,比较适用于我们。 CSV格式:(代码如下) importpandasaspd importcsv withopen(A。csv,r)ascsvfile: readercsv。DictReader(csvfile) column〔row〔Age〕forrowinreader〕 Execl格式:(代码如下) importpandasaspd filePath01D:我的文件使用python读取Excel的路径表格1。xlsx python的路径是,不是 df1pd。readexcel(filePath01,sheetnameSheet1) 2。2数据结构: 数组(Array)是由相同类型的元素(element)集合组成的固定长度(Size)的一种数据结构。 2。3数据处理: 这里用了泰坦尼克号的数据案例: trainpd。readcsv(dataTitanic处理后数据。csv) 将字符串类型的分类变量进行重新编码 labelLabelEncoder() train〔Name〕label。fittransform(train〔Name〕) train〔Embarked〕label。fittransform(train〔Embarked〕) train〔Sex〕label。fittransform(train〔Sex〕) Python的符号格式有三种:字符串、整数、浮点数,那么,像临床常用的基线数据,姓名性别就需要转换为Python可识别的数据。以上代码就是转换用。 3、模型构建: 定于预测目标变量名 Target〔Survived〕 目标变量:我们要研究的目标。例如,我如果想研究息肉切除后出现风险,就可以定义为: Target〔bleed〕 定义模型的自变量名 trainx〔Pclass,Name,Sex,Age,SibSp,Parch,Fare,Embarked〕 这一句也非常重要,是我们临床研究基线特征。 将训练集切分为训练集和验证集 Xtrain,Xval,ytrain,yvaltraintestsplit(train〔trainx〕,train〔Target〕, testsize0。25,randomstate1) 机器学习的数据要分为两个部分:训练集、验证集。这句代码就是把数据进行分割。不过,一般都是2:8分。20用来验证。 下面的程序中使用RandomForestClassifier()函数建立了包含100个决策树,最大深度为5的随机森林模型,针对训练好的模型并计算出其它训练集和验证集上的预测精度。 使用随机森林对泰坦尼克数据进行分类 rfc1RandomForestClassifier(nestimators100,树的数量 maxdepth5,子树最大深度 oobscoreTrue, classweightbalanced, randomstate1) rfc1。fit(Xtrain,ytrain) 4、结果输出: 输出其在训练数据和验证数据集上的预测精度 rfc1labrfc1。predict(Xtrain) rfc1prerfc1。predict(Xval) print(随机森林的OOBscore:,rfc1。oobscore) print(训练数据集上的精度:,accuracyscore(ytrain,rfc1lab)) print(验证数据集上的精度:,accuracyscore(yval,rfc1pre)) 但是,为了让论文更好发表,最好有图片。 可视化在验证集上的Roc曲线 preyrfc1。predictproba(Xval)〔:,1〕 fprNb,tprNb,roccurve(yval,prey) aucvalauc(fprNb,tprNb)计算auc的取值 plt。figure(figsize(10,8)) plt。plot(〔0,1〕,〔0,1〕,k) plt。plot(fprNb,tprNb,r,linewidth3) plt。grid() plt。xlabel(假正率) plt。ylabel(真正率) plt。xlim(0,1) plt。ylim(0,1) plt。title(随机森林ROC曲线) plt。text(0。15,0。9,AUCstr(round(aucval,4))) plt。show() 最后就应该得出这么一个ROC结果。 三、常用python算法库: 1)Scikitlearn:是一个常用的算法库:相关代码可参考:https:mp。weixin。qq。comscSl7nceawz6AHm5Mtw0w 四、未完待续: 上面例子的(随机森林)机器学习是人工智能应用领域比较简单的模块,要发更高因子的文章和中课题,还是要去深度学习,无监督学习、影像(超声)组学。不过这块难度要高很多,可以参考:https:www。madao33。compost7 该教程文档不断更新,版本号越高,就是最新版,上面很多代码在运行中还有很多bug,希望更多同行进行交流,互相提供代码和教程,目前跟朋友一起合作了一篇文章,相关代码分享在https:github。comganbingliangyimachinelearning,公号:肝病梁韬