玩转UCI心脏病二分类数据集 领学课笔记

机器学习分类

UCI心脏病二分类这个题目主要是通过一系列数据的挖掘来判断病人有没有心脏病。
玩转UCI心脏病二分类数据集 领学课笔记_第1张图片
机器学习分为四个基本问题,分类、回归、聚类、降维

分类和回归是监督学习,需要用到标签,分类需要预测离散的类别,回归是要预测出一个连续的值
聚类和降维是无监督学习,不需要用到标签,聚类是把数据按照自组织的相似行聚类成一簇一簇的,在聚类之前也不知道哪些会聚簇,降维是高维映射到低维

心脏病数据集是分类中的二分类
玩转UCI心脏病二分类数据集 领学课笔记_第2张图片
玩转UCI心脏病二分类数据集 领学课笔记_第3张图片
玩转UCI心脏病二分类数据集 领学课笔记_第4张图片
逻辑回归、SVM、决策树都是传统的分类算法,可以作为上面的黑箱

数据可视化

模型建立

希望构建一个简单的准则,尽可能快的筛选过滤
玩转UCI心脏病二分类数据集 领学课笔记_第5张图片
如何衡量数据的纯,通过信息熵、信息增益、信息增益率、基尼指数等一系列的指标来判断数据纯度

构建出很多的树,然后集成在一起,那么就组成了随机森林,每一颗决策树都是随机采样单独训练而成,不光对数据随机采样,对特征也随机采样,每一颗树都不一样,但是集成在一起,会非常强大

为什么要成为随机森林,把很多基学习集成在一起,可以让很多的弱学习集集成成为一个强学习集,大大提升准确率,每个都是不同,共同做决策要比单个做决策少很多的偏见,可以有效防止过拟合。
玩转UCI心脏病二分类数据集 领学课笔记_第6张图片
这里是可视化出来的过程,落到每一个结点的数据,以及它是否纯
蓝色表示得了心脏病,黄色表示没得心脏病,颜色越深表示落到节点的数据越纯

对于机器学习,并不想让他成为一个黑箱,尽可能有可解释性,因为是医学上使用,还是要有可靠性
玩转UCI心脏病二分类数据集 领学课笔记_第7张图片
左边这个混淆矩阵,测试机共有六十多个数据,做一个比较组成了混淆矩阵,26代表实际健康也被预测为健康的人数,22是真实心脏病同时被预测为心脏病人数,9表示真实健康但是误判为心脏病,4表示真实心脏病但是被误判为健康。这里的数据中,4是最危险,因为没有检测出来

根据这个混淆矩阵,可以生成一系列评估指标
模型预测健康人中真实健康:26除以所在列的和
真健康人中多少被模型预测为健康,衡量模型的特异性:22除以所在行的和

在模型中也可以设置一些阈值,例如,大于0.8被认定为心脏病,通过调整阈值,得到多大范围的结果,每个阈值都可以生成一个混淆矩阵,每个混淆矩阵也都可以生成一个ROC曲线(工作受试者特性曲线),模型越靠近左上角性能越好,也就是ROC曲线面积越大越好

机器学习的可解释性分析

玩转UCI心脏病二分类数据集 领学课笔记_第8张图片
把数据集中某一个特征打乱,预测的结果偏离很大,表明特征重要,反之,模型性能不受影响,则这个特征无用
玩转UCI心脏病二分类数据集 领学课笔记_第9张图片
这个图每一条线代表一个病人,反映出心脏血管个数越多,患病概率越低
玩转UCI心脏病二分类数据集 领学课笔记_第10张图片
这个是年龄的关系,可以明显看出一拨人随着年龄增加风险增加,一拨人是风险降低

这样可以分析出每一个病人受某一个特征影响从小到大的影响程度
玩转UCI心脏病二分类数据集 领学课笔记_第11张图片
还可以画出两两之间关系的图,横轴表示心率,心率越高风险越大,纵轴表示血管个数,个数越多风险越小,这样可以分析出特征之间的耦合性,特征之间的互相影响
玩转UCI心脏病二分类数据集 领学课笔记_第12张图片
还有一个角度可以从SHAP值,这个值可以被认为,某一个病人的某一个特征对他预测为某一个结果的贡献,把每一个特征的贡献加起来,又可以得到一个特征的重要度
玩转UCI心脏病二分类数据集 领学课笔记_第13张图片
也可以画成这种图,对于左边,第二行主要血管的个数,红色表示主要血管多的病人,蓝色表示主要血管比较少的病人。从中轴线,越靠近右患心脏病正向贡献越大,越靠近左患心脏病负向贡献越大

你可能感兴趣的:(AI,决策树,机器学习,人工智能)