机器学习各种算法的理解(不断更新)

1、K-近邻算法

刚刚把K-近邻算法整理了一下,下面说一下我对它的理解

(1)优点

  • 简单有效:效果很好(对于适用这个算法的问题来说),而且原理很简单,没有什么困难的数学公式来推导理解
  • 不需要很长时间的训练:只要有数据集就可以直接运行,不需要训练出模型
  • 是一种online算法:也就是它是一种在线算法,新数据可以直接加入数据集而不必重新训练(没有它本身就没有模型可言)

(2)缺点

  • 首先,这个算法不是常规的机器学习算法,因为它没有“学习过程”,一般的机器学习算法是需要通过训练数据来学习得到一个模型的,但是KNN没有这个过程,虽然它也有训练集,这就导致它每次预测新的样本,就要将所有训练集都保存到内存中,然后一个个比较,如果你的数据集非常大,这就非常占据内存资源了(一般来说数据集越大,准确度越高)
  • 无法给出任何数据的基础结构信息,因此我们也无法知晓平均实例样本和典型实例样本具有什么特征,换句话来说,让你区分一个人是欧洲人还是中国人,很好区分,但是让你区分中国人和韩国人,有时候就比较困难,前面那个区分是典型的(一眼就可以看出来,这叫特征明显),而后一个就不太明显了(这就是不典型了)
  • 没有解决样本不平衡问题(也就是有些类别样本数量很多,有些样本数量很少),遇到这种问题,它的预测偏差会比较大
  • K值大小的选择,这个要根据你的数据集样本和种类的分配,还有类别的不同来决定,随着数据集的变化可能会发生变化,有时候要不断筛选才可以得出

(3)应用领域

理论上,只要数据可以转化成向量,就可以用KNN算法,只是效果好坏不一样罢了,这里列举的都是效果比较好的:

文本分类、模式识别、聚类分析、多分类领域

2、决策树

(1)优点:

  • 决策树具有一般机器学习算法的优点,那就是一劳永逸,一旦获得一棵决策树,就不需要再用到原来的数据集了(当然是基于这棵决策树的准确率很不错的情况),下次预测一个样本,只要将其放入决策树中,就可以轻松得到分类或者回归结果
  • 非常容易理解,因为决策树在我看来更像是基于规则的分类,在形式上比起K近邻算法要容易理解,可解释性也很强,决策树模型可以想象,在你大脑中可以轻易复现出来,可以说决策树是一个白盒模型,不像神经网络那样更偏向于黑盒模型
  • 需要的数据量相对而言不大,其他技术需要的数据量一般要大很多,而且HIA需要去除不完整数据,但是决策树不需要(专门有针对不完整数据的策略)
  • 决策树算法的时间复杂度(即预测数据)是用于训练决策树的数据点的对数
  • 可以处理的问题领域很广(而且准确率相对而言也是很高的),而其他算法大都是针对某一领域的数据集具有较高的准确率
  • 能够处理多输出问题

(2)缺点

  • 决策树的结果很不稳定,可能数据集一个小的变化,就会导致生成一棵完全不同的决策树(可以使用集成决策树来解决)
  • 容易造成过拟合现象,也就是枝叶太过茂盛,节点过多(可以采用剪枝策略来解决)
  • 针对最优决策树来说,决策树实际上是一个启发式算法,如贪婪算法,寻求在每个节点上的局部最优决策,这样的算法不能保证返回全局最优决策树
  • 树的每次分叉都减少了数据集,有意地创造分裂将会潜在地引入偏差(bias)
  • 针对连续值属性来说,划分的选择是一个大问题,也就是怎么改变区间大小,比如年龄从0-200,你可以划分为1-10,11-20,这时候区间大小为10,如果你划分成1-20,21-40,这时候区间大小是20,但是你应该怎么划分呢,如果一个属性还好说,但是如果很多属性都是连续的,那么就有些不好处理了
  • 对有时间顺序的数据,需要很多预处理的工作

(3)决策树们

不同种类的决策树,可以参考:决策树有哪些特性



猜你喜欢

转载自blog.csdn.net/yuangan1529/article/details/80848622