优点:同回归方法一样,分类树的集成方法在实践中同样表现十分优良。它们通常对异常数据具有相当的鲁棒性和可扩展性。因为它的层级结构,分类树的集成方法能很自然地对非线性决策边界建模。 缺点:不可约束,单棵树趋向于过拟合,使用集成方法可以削弱这一方面的影响。 随机森林 Python 实现:#regression 随机森林 R 实现:https://cran.r-project.org/web/packages/randomForest/index.html 梯度提升树 Python 实现:#classification 梯度提升树 R 实现:https://cran.r-project.org/web/packages/gbm/index.html 2.3 深度学习 深度学习同样很容易适应于分类问题。实际上,深度学习应用地更多的是分类任务,如图像分类等。 优点:深度学习非常适用于分类音频、文本和图像数据。 缺点:和回归问题一样,深度神经网络需要大量的数据进行训练,所以其也不是一个通用目的的算法。 Python 资源:https://keras.io/ R 资源: 2.4 支持向量机 支持向量机(SVM)可以使用一个称之为核函数的技巧扩展到非线性分类问题,而该算法本质上就是计算两个称之为支持向量的观测数据之间的距离。SVM 算法寻找的决策边界即最大化其与样本间隔的边界,因此支持向量机又称为大间距分类器。
支持向量机中的核函数采用非线性变换,将非线性问题变换为线性问题 例如,SVM 使用线性核函数就能得到类似于 logistic 回归的结果,只不过支持向量机因为最大化了间隔而更具鲁棒性。因此,在实践中,SVM 最大的优点就是可以使用非线性核函数对非线性决策边界建模。 优点:SVM 能对非线性决策边界建模,并且有许多可选的核函数形式。SVM 同样面对过拟合有相当大的鲁棒性,这一点在高维空间中尤其突出。 缺点:然而,SVM 是内存密集型算法,由于选择正确的核函数是很重要的,所以其很难调参,也不能扩展到较大的数据集中。目前在工业界中,随机森林通常优于支持向量机算法。 Python 实现:#classification R 实现:https://cran.r-project.org/web/packages/kernlab/index.html 2.5 朴素贝叶斯 朴素贝叶斯(NB)是一种基于贝叶斯定理和特征条件独立假设的分类方法。本质上朴素贝叶斯模型就是一个概率表,其通过训练数据更新这张表中的概率。为了预测一个新的观察值,朴素贝叶斯算法就是根据样本的特征值在概率表中寻找最大概率的那个类别。 之所以称之为「朴素」,是因为该算法的核心就是特征条件独立性假设(每一个特征之间相互独立),而这一假设在现实世界中基本是不现实的。 优点:即使条件独立性假设很难成立,但朴素贝叶斯算法在实践中表现出乎意料地好。该算法很容易实现并能随数据集的更新而扩展。 缺点:因为朴素贝叶斯算法太简单了,所以其也经常被以上列出的分类算法所替代。 Python 实现: R 实现:https://cran.r-project.org/web/packages/naivebayes/index.html 3、聚类 聚类是一种无监督学习任务,该算法基于数据的内部结构寻找观察样本的自然族群(即集群)。使用案例包括细分客户、新闻聚类、文章推荐等。 因为聚类是一种无监督学习(即数据没有标注),并且通常使用数据可视化评价结果。如果存在「正确的回答」(即在训练集中存在预标注的集群),那么分类算法可能更加合适。 3.1 K 均值聚类 K 均值聚类是一种通用目的的算法,聚类的度量基于样本点之间的几何距离(即在坐标平面中的距离)。集群是围绕在聚类中心的族群,而集群呈现出类球状并具有相似的大小。聚类算法是我们推荐给初学者的算法,因为该算法不仅十分简单,而且还足够灵活以面对大多数问题都能给出合理的结果。
(责任编辑:本港台直播) |