Appearance
分类算法应用实践和比对
支持向量机(Support Vector Machine, SVM),是一种强大的监督学习算法,广泛应用于分类和回归任务。它通过寻找最优超平面来最大化不同类别数据之间的间隔,从而实现分类或预测。可以算是整个机器学习分类算法的天花板。 在深度学习发展起来之前,支持向量机几乎是称霸机器学习领域的一个存在。
一、应用实践
0、题目要求
构建模型,来预测患者是否有糖尿病
有以下特征:
- 年龄、体重指数(BMI)血糖水平和家族病史(0表示没有,1表示有)。
- 目标变量是患糖尿病的结果(0表示不患病,1表示患病)
问题: 一个新患者的数据如下,年龄50岁,BMI30,血糖水平150,无家族病史预测这个患者是否会患糖尿病?
任务: 思考梳理不同的分类算法来实现这个需求的基本原理,实现步骤...
1、KNN解决
(1)算法原理:寻找离待预测的样本点最近的K个样本点,经过“投票决定”
(2)距离的计算
(3)K值的选择
2、逻辑回归
(1)算法原理:拟合一个逻辑函数,预测二分类问题的概率。
(2)特征加权
(3)逻辑函数
(4)概率解释
3、朴素贝叶斯算法
(1)算法原理: 在给定先验知识的情况下通过观测到的数据来更新事件的概率估计。
(2)计算先验概率
- P(yes) = 患有糖尿病的人数/总人数 =3/5
- P(no) = 不患糖尿病的人数/总人数 = 2/5
(3)没有患病情况下的普遍数据-定义数据类型: 年龄 > 40为高龄,BMI > 27.9为超重,血糖水平 >=150 为高血糖。
- P(高龄) = 高龄的人数 / 总人数 = 6/10
- P(超重) = 超重的人数 / 总人数 = 6/10
- P(高血糖) = 高血糖的人数 / 总人数 =7/10
- P(无病史) = 无病史的人数 / 总人数 = 6/10
(4)计算条件概率: 计算给定患病结果下各个特征出现的条件概率:
- P(高龄|yes) = 患病人群中高龄的人数 / 患病人数 = 4/6
- P(高龄|no)= 未患病人群中高龄的人数 / 未患病人数 = 2/4
- P(超重|yes) = 患病人群中超重的人数 / 患病人数 = 5/6
- P(超重|no) = 未患病人群中超重的人数 / 未患病人数 = 1/4
- ......
(5)计算后验概率
根据待预测样本情况,计算它患病及不患病的概率
患病的概率:
不患病的概率:
(6)分类决策: 比较患病和不患病的后验概率,较高的概率决定最终的分类
4、决策树
(1)计算熵值
在10个历史用户的患病情况数据中,4个人没有患病,6个人患病了,所以此时的熵为:
(2)基于家族病史的划分
(3)基于血糖水平的划分
血糖水平>=150 的为高血糖,否则为低血糖
5、支持向量机算法
(1)算法原理:找到一个超平面(在二维中是一条线,在三维中是一个平面,以此类推),这个超平面能够正确地分开不同的类别,并且保持最大的边界(或间隔)
(2)核函数进行比对
二、分类算法优缺点对比
| 算法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| KNN | “近朱者赤,近墨者黑”,根据最近的K个邻居的分类来投票确定自己的类别 | 简单,不需要假设数据分布,易于理解 | 随着数据量的增加,计算和存储要求高,需要标准化特征以避免距离度量的偏差 |
| 逻辑回归 | 根据线性回归拟合一条直线,然后利用 平滑函数将输出值映射到0-1的概率值设定阈值做判断 | 提供概率结果,易于实现和解释 | 假设特征和结果的线性关系,可能在复杂关系中表现不佳 |
| 朴素贝叶斯 | 根据条件概率和先验概率,估算得到后验概率,注意特征之间要互相独立 | 计算效率高,适用于大型数据集,即使特征相关也能工作 | 假设所有特征都是独立的,这在实际中很少见 |
| 决策树 | 根据信息增益,寻找一颗树的最佳根节点与内部结点,构建决策树 | 非常直观,易于解释,不需要特征缩放 | 易于过拟合,对于某些类型的数据不稳定 |
| SVM | 利用核函数,将数据在空间站线性可分,构建超平面对数据进行分类 | 在高维空间中效果好,适用于非线性问题 | 对于大型数据集计算成本高,选择合适的核函数和参数调整可能复杂 |