常见机器学习算法分类
按照学习方法不同进行分类:根据学习样本数据不同,对问题有不同的建模方式
- 监督式学习:学习样本中有结果标记
- 无监督学习:学习样本中无结果标记
- 半监督学习:学习样本中部分记录有结果标记
有监督学习(Supervised learning)
利用一组已知类别的样本来训练模型,使其达到性能要求。特点为输入数据(训练数据)均有一个明确的标识或结果(标签)。即由我们提供样例给计算机“教”计算机如何学习
无监督学习(Unsupervised learning)
从无标记的训练数据中推断结论。其特点为输入数据(训练数据)不存在明确的标识或结果(标签)。常见的无监督学习为聚类,即发现隐藏的模式或者对数据进行分组。即计算机根据我们提供的材料“自动”学习,给定数据,寻找隐藏的结构或者模式
有监督学习经典样例-分类
分类就是通过已有数据集(训练集)的学习,得到一个目标函数f(模型),把每个属性x映射到目标属性y(类),且y必须是离散的(若y为连续的,则属于回归算法,回归也属于有监督学习)。通过对一直类别训练集的分析,从中发现分类规则,以此预测新数据的类别
分类算法常用的评估指标:
- 精确率:预测结果与实际结果的比例
- 召回率:预测结果中某类结果的正确覆盖率
- F1-Score:统计量,综合评估分类模型的指标,取值0~1之间,越大模型可用度越高
KNN算法(K-Nearest Neighbour)
分类算法中最简单的算法之一,其核心思想是如果离某一个样本最近的k个样本中大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。KNN不但可以预测分类,还可以进行回归分析
N个已知分类结果的样本点,对新纪录r使用KNN将其分类的步骤:
- 确定k值,确定计算距离的公式,比如欧氏距离,曼哈顿距离,余弦相似度
- 计算r和其他样本点之间的距离d
- 得到目前和r最接近的k个样本,作为KNN的训练模式
- 将k个样本中最多归属类别的分类标签赋予新记录r,分类结束
KNN优点:
- 原理简单,容易理解
- 重新训练代价较低
- 时间,空间复杂度取决于训练集(一般不会太大)
KNN缺点
- KNN属于lazy-learning算法,得到结果的及时性差
- K值对结果的影响大
- 不同类记录相差较大时容易误判
- 样本点较多时,计算量较大
- 相对于决策树,结果可解释性不强
决策树
决策树创建流程
信息度量的方式:信息增益
- 熵(信息熵)描述混乱程度的度量,取值0~1,值越大,越混乱
- 基尼系数
信息增益
- 信息是确定性的增加
- 从一个状态到另一个状态信息的变化
- 信息增益越大,对确定性贡献越大
在信源中,考虑的不是某一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性。若信源符号有n种取值:U1…Ui…Un,对应概率为:P1…Pi…Pn,且各种符号的出现彼此独立。这时,信源的平均不确定性应当为单个符号不确定性-logPi的统计平均值(E),可称为信息熵,即
名称 | 颜色 | 味道(甜/不甜) | 水果? |
---|---|---|---|
西红柿 | 红 | 不甜 | 否 |
黄瓜 | 绿 | 不甜 | 否 |
苹果 | 红 | 甜 | 是 |
提子 | 红色 | 甜 | 是 |
决策树是基于ID3系列算法(Iterative Dichotomiser 3,迭代树3代)
核心是信息熵,根据++信息增益++决定树的结点
存在以下问题:
- 信息度量不合理:倾向于选择取值多的字段
- 输入类型单一:离散型
- 不做剪枝:容易过拟合
无监督学习算法
聚类算法
聚类:就是将相似的事物聚集在一起,而将不相似的事物划分到不同的类别的过程。它是一种探索性分析,不必事先给出一个分类标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用的方法不同,往往会得出不同的结论
常见算法:层次聚类,划分聚类,基于密度聚类
常见聚类算法 K-Means
算法优点
- 原理简单,容易实现
- 聚类结果容易解释
- 聚类结果相对较好
算法缺点
- 分类个数K对结果影响较大
- 初始K个类簇中心的位置对最终结果有影响
- 能识别的类簇仅为球状,非球状的聚类效果差
- 样本点较多时,计算量较大
- 对异常值敏感,对离散值需要特殊处理