应用场景及优缺点:
https://www.zhihu.com/question/26726794
https://blog.csdn.net/haipengdai/article/details/51981890
https://www.cnblogs.com/nolonely/p/6678256.html
机器学习分类情况、优缺点:https://my.oschina.net/sunmin/blog/789809
一、k-means
1. 输入数据
k-means是要计算距离的,所以只能应用于连续型数据,并且在聚类前要手动选择分成几类(可以事先画图看适合分成几类)。
参考:https://blog.csdn.net/sinat_36710456/article/details/88019323
2. 初选中心、距离计算、求新的中心点、直到中心趋于稳定
最常用欧式距离。为防止某些属性数据值大影响距离的计算,可以归一化处理。
参考:https://blog.csdn.net/github_39261590/article/details/76910689
https://www.jianshu.com/p/5dbb677ff35c
3. 应用场景
解决聚类问题。
4. 优缺点
优点:
① 算法简单、快速
② 对处理大数据集,该算法是相对可伸缩的和高效率的
③ 时间复杂度接近于线性,而且适合挖掘大规模数据集。K-Means聚类算法的时间复杂度是O(n×k×t) ,其中n代表数据集中对象的数量,t代表着算法迭代的次数,k代表着簇的数目。
④ 当簇是密集、球状或团状的,簇与簇之间区别明显时,它的聚类效果很好。
不适合非凸面形状的簇,或者大小差别很大的簇。
缺点:
① 它只有在簇的平均值被定义的情况下才能使用,涉及有分类属性的数据就不适用。
② 必须给出要生成的簇的数目k,而这个k值有时不知道确定为几。
③ 对初值敏感。需要不断调整参数。因此当数据量非常大时,算法时间开销是很大的。
④ 对“噪声”和“孤立点”敏感。少量的该类数据能够对平均值产生极大影响。
⑤ 可能收敛到局部最优,最终解的质量很大程度上取决于初始化的分组。
⑥ 算法假设:均方误差是计算群组分散度的最佳参数。
改进:
一是数据预处理:归一化处理。
二是初始聚类中心选择:k-means++思想,初始的聚类中心之间的相互距离要尽可能远。(步骤:先随机选第一个类中心,根据较远距离选择第二中心,重复直到k个中心都选出来)
三是对于孤立点的改进——基于距离法。
找出孤立点并移除:首先扫描一次数据集, 计算每一个数据对象与其临近对象的距离, 累加求其距离和, 并计算出距离和均值。如果某个数据对象的距离和大于距离和均值, 则视该点为孤立点。
二、决策树
应用场景:分类或回归问题
优点:容易可视化;算法完全不受数据缩放的影响,决策树算法不需要特征预处理,比如归一化或标准化;特别特征的尺度完全不一样时或者二元特征和连续特征同时存在时,决策树的效果很好。
缺点:容易过拟合,泛化能力差(预剪枝)。往往使用集成方法(随机森林)
1. C4.5
1.1 输入数据要求
离散型和连续性属性
1.2 计算熵、计算信息增益、计算分裂信息度量、计算信息增益率、根据信息增益率进行选择属性集中的属性作为树节点
熵:值越大,不确定性越大。熵计算公式:H(X)=- ∑ pi * logpi,i=1,2, ... , n
信息增益(经验熵):g(D,A)=H(D)−H(D|A) 实际上就是特征A和D的互信息
分裂信息度量和信息增益率:
避免ID3不足的一个度量就是不用信息增益来选择Feature,而是用信息增益比率(gainratio),增益比率通过引入一个被称作分裂信息(Splitinformation)的项来惩罚取值较多的Feature,分裂信息用来衡量Feature分裂数据的广度和均匀性。
但是当某个Di的大小跟D的大小接近的时候,
SplitInformation(D,A)→0,GainRatio(D,A)→∞,
为了避免这样的属性,可以采用启发式的思路,只对那些信息增益比较高的属性才应用信息增益比率。
1.3 优缺点
优点:
① 克服了ID3算法中以信息增益为分裂依据的不足
② 除了离散型属性,还能处理连续型属性
③ 构造决策树之后进行剪枝操作,提高泛化能力;能够处理有缺失属性值的训练数据;分类规则易于理解,准确率较高(决策树共有优点)
缺点:
① 构造树过程中,多次顺序扫描和排序,导致计算效率较低,特别是含有连续型属性样本时
② 算法在选择分裂属性时,没有考虑到条件属性间的相关性,只计算数据集中每一个条件属性与决策属性之间的期望信息,有可能影响到属性选择的正确性。
2. CART(二叉树)
2.1 输入数据
离散值、连续值
2.2 计算基尼系数/均方差之和、进行分裂、直到停止
分裂标准:
分类树:基尼系数(最小)——损失度量
回归树:每一类的均方差、均方差之和(最小)——损失度量
2.3 剪枝
CCP(代价复杂度)剪枝:选择增益值最小的非叶子节点,删除其左右子节点;若有多个非叶子节点增益值相同小,则选择子节点数最多的删除。
2.4 缺点
① 无论ID3,C4.5,CART都是选择一个最优的特征做分类决策,但大多数,分类决策不是由某一个特征决定,而是一组特征。这样得到的决策树更加准确,这种决策树叫多变量决策树(multi-variate decision tree)。在选择最优特征的时,多变量决策树不是选择某一个最优特征,而是选择一个最优的特征线性组合做决策。
② 样本一点点改动,树结构剧烈改变。可以用随机森林方法改进。
3. 随机森林
随机森林是通过集成学习的bagging思想将多颗树集成的一种算法,它的基本单元是决策树。
参考:https://blog.csdn.net/qq_34106574/article/details/82016442
三、KNN
1. 非参、惰性
2. 优缺点
优点:
① 简单易用,相比其他算法,KNN算是比较简洁明了的算法。即使没有很高的数学基础也能搞清楚它的原理。
② 模型训练时间快。
③ 预测效果好。
④ 对异常值不敏感
缺点:
① 对内存要求较高,因为该算法存储了所有训练数据
② 预测阶段可能很慢
③ 对不相关的功能和数据规模敏感
当需要使用分类算法,且数据比较大的时候就可以尝试使用KNN算法进行分类了。
四、逻辑回归
1. 数据要求
线性回归模型:因变量是连续变量
逻辑回归:因变量是定性变量,是分类问题
2. 由于线性回归拟合结果容易受异常值的影响,逻辑回归将线性回归的判别函数转换,将得到的结果放在[0,1]区间里,表示为出现正例的概率。而具体的判定阈值需要视具体情况而定。
3. 逻辑回归对样本类别数目差距很大时,预测效果不好。这时我们需要对数据进行欠采样/重采样。
五、AdaBoost
1. Adaboost算法是经过调整的Boosting算法,其能够对弱学习得到的弱分类器的错误进行适应性调整。每一次迭代,都要对权重进行更新。更新的规则是:减小弱分类器分类效果较好的数据的概率,增大弱分类器分类效果较差的数据的概率。最终的分类器是个弱分类器的加权平均。
2. 优缺点
优点:
(1)Adaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选。
(2)Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提高学习精度。
(3)Adaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。Adaboost可以根据弱分类器的反馈,自适应地调整假定的错误率,执行的效率高。
(4)Adaboost对同一个训练样本集训练不同的弱分类器,按照一定的方法把这些弱分类器集合起来,构造一个分类能力很强的强分类器,即“三个臭皮匠赛过一个诸葛亮”。
缺点:
在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。