小白机器学习基础算法学习必经之路(下)

378 阅读5分钟

我们在上文小白机器学习基础算法学习必经之路(上)简述了线性回归 (Linear Regression) ,逻辑回归 (Logistic Regression) ,决策树 (Decision Tree) ,支持向量机(SVM) ,朴素贝叶斯 (Naive Bayes) 现在我们接着继续学习另五个算法:


K邻近算法(KNN)

k-NN算法是最简单的分类算法,主要的思想是计算待分类样本与训练样本之间的差异性,并将差异按照由小到大排序,选出前面K个差异最小的类别,并统计在K个中类别出现次数最多的类别为最相似的类,最终将待分类样本分到最相似的训练样本的类中。与投票(Vote)的机制类似。


k-近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据。

  • 优点:精度高,对异常值不敏感,无数据输入假定
  • 缺点:时间和空间复杂度高,无法获取样本特征
  • 数据:数值型和标称型

k-均值算法(K-means)

KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且**的簇作为最终目标。


K个初始聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机地选取任意k个对象作为初始聚类中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离赋给最近的簇。当考查完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。


基本步骤 (1) 从 n个数据对象任意选择 k 个对象作为初始聚类中心;

(2) 根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;

(3) 重新计算每个(有变化)聚类的均值(中心对象);

(4) 计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤(2)。


随机森林 (Random Forest)

随机森林是指利用多棵决策树对样本进行训练并预测的一种算法。也就是说随机森林算法是一个包含多个决策树的算法,其输出的类别是由个别决策树输出的类别的众树来决定的。在Sklearn模块库中,与随机森林算法相关的函数都位于集成算法模块ensemble中,相关的算法函数包括随机森林算法(RandomForestClassifier)、袋装算法(BaggingClassifier)、完全随机树算法(ExtraTreesClassifier)、迭代算法(Adaboost)、GBT梯度Boosting树算法(GradientBoostingClassifier)、梯度回归算法(GradientBoostingRegressor)、投票算法(VotingClassifier)。

随机森林

随机森林的特点

它有如下几个特点: 在当前所有算法中,具有极好的准确率 能够有效地运行在大数据集上 能够处理具有高维特征的输入样本,而且不需要降维 能够评估各个特征在分类问题上的重要性 在生成过程中,能够获取到内部生成误差的一种无偏估计 对于缺省值问题也能够获得很好得结果


实际上,随机森林的特点不只有这六点,它就相当于机器学习领域的Leatherman(多面手),你几乎可以把任何东西扔进去,它基本上都是可供使用的。在估计推断映射方面特别好用,以致都不需要像SVM那样做很多参数的调试。


GradientBoost和Adaboost算法

AdaBoost分类器就是一种元算法分类器,adaBoost分类器利用同一种基分类器(弱分类器),基于分类器的错误率分配不同的权重参数,最后累加加权的预测结果作为输出。


adaboost算法的一些实际可以使用的场景:

1)用于二分类或多分类的应用场景

2)用于做分类任务的baseline无脑化,简单,不会overfitting,不用调分类器

3)用于特征选择(feature selection)

4)Boosting框架用于对badcase的修正


只需要增加新的分类器,不需要变动原有分类器


由于adaboost算法是一种实现简单,应用也很简单的算法。Adaboost算法通过组合弱分类器而得到强分类器,同时具有分类错误率上界随着训练增加而稳定下降,不会过拟合等的性质,应该说是一种很适合于在各种分类场景下应用的算法。


GradientBoost算法

和Adaboost不同,Gradient Boosting 在迭代的时候选择梯度下降的方向来保证最后的结果最好。损失函数用来描述模型的“靠谱”程度,假设模型没有过拟合,损失函数越大,模型的错误率越高如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度方向上下降。


下面这个流程图是Gradient Boosting的经典图了,数学推导并不复杂,只要理解了Boosting的思想,不难看懂

GradientBoost算法

这里是直接对模型的函数进行更新,利用了参数可加性推广到函数空间。训练F0-Fm一共m个基学习器,沿着梯度下降的方向不断更新ρm和am。

完.......