Py学习  »  机器学习算法

机器学习实战 | 分类算法学习目录

生信菜鸟团 • 4 年前 • 704 次点击  


哈喽,大家好,不知不觉我的机器学习笔记已经走过了十期,啃完了《机器学习实战》中的分类算法部分。我们学习了从最开始的如何配置环境到数据预处理,特征选择,建立模型,到最后的评价模型这一系列数据挖掘的基本过程,在此,我们做一个阶段性的总结目录,供大家学习归纳~



进行数据挖掘,必然需要一个强大方便的分析环境,正所谓「工欲善其事必先利其器」,首先给大家介绍的 Jupyter Notebook 正是这样一件利器,一个可以把代码、图像、注释、公式和作图集于一处,从而实现可读性分析的交互式笔记本。我们可以用它一边运行代码进行数据分析,一边用 Markdown 语法来记录实验过程。


在准备数据挖掘之前,对数据的探索性分析以及一系列数据预处理的步骤十分重要,因为一些不完整、不一致、有异常的数据,通常会严重影响到数据挖掘建模的执行效率甚至导致挖掘结果出现偏差。所以在这一期中,我们介绍了如何使用 sklearn 包处理缺失值、对分类数据进行编码、切分数据集以及数据的无量纲化。以此来提高数据的质量,让数据可以更好地适应模型。


当数据预处理完成后,我们通常需要选择有意义的特征输入机器学习的算法和模型进行训练。这里,我介绍了包括对数据进行方差过滤,去除低方差的特征以及如何使用 sklearn 中的 feature_selection 库来进行特征选择(过滤法、包装法、嵌入法)。


学习了上游的数据处理以及特征工程以后,就开始学习算法吧~ 每个算法的内容都包括了算法原理以及代码实战。



第一个算法,我们介绍的是最简单的 k-邻近算法,用一个词来描述这个算法就是「物以类聚」。如果一个样本在特征空间中的 k 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。



决策树,顾名思义,即以建树的形式来做决策。我们首先会将所有特征看成一个个节点,接着遍历当前数据,找到最佳的分割点并根据分割点得出进一步的子节点,以此循环,最终使得,所有子节点中所包含的样本都尽可能属于同一类(为了判断「节点的纯度」,我们还引入了「信息熵」的概念)。



朴素贝叶斯算法是机器学习中常见的基本算法之一,主要用于进行分类。它是基于贝叶斯定理与条件独立性假设的分类方法。对于给定的训练数据集,首先基于特征条件独立性假设学习输入/输出的联合概率分布,然后基于此模型,对于给定的输入 x 利用贝叶斯定理求出后验概率最大的输出 y。



逻辑回归是一种广义线性回归分析模型,虽带有「回归」二字,但其实是一种线性分类器。本期从线性回归引入 sigmoid 函数以构建分类模型,介绍了损失函数的概念以及代码实现梯度下降法来求解模型的最优参数。



支持向量机,是机器学习中获得关注最多的算法。它的目的就是寻找一个超平面来对样本进行分割,分割的原则是间隔的最大化,最终转化为一个凸二次规划问题来求解。由于公式推导比较晦涩难懂,我们先通过第一期「一文读懂支持向量机」大致介绍了支持向量机的基本概念,而在第二期「支持向量机·sklearn 参数详解」中则详细介绍了 sklearn 包中关于支持向量机的各种参数,最后通过一个简单的案例尝试构建模型。



和我们之前介绍的算法不同,Adaboost 算法是一种集成学习方法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成所有模型的建模结果,以此提高模型的准确性。简单来说就是“三个臭皮匠顶个诸葛亮”。



构建了模型之后,我们就需要对模型的好坏进行评估,我们从最基础的 TP,FP,FN,TN 四个基本概念介绍了机器学习中的混淆矩阵,进一步衍生出准确率「Accuracy,精确率「Precision,灵敏度「Sensitivity,特异度「Specificity的概念,同时也包括了 F1 score 和 ROC 曲线的原理和意义。

至此,我们已经学习了《机器学习实战》中的分类算法,除了书上的内容以外,我还增加了 Python 中 sklearn 包的实战内容以及更清晰易懂的算法原理内容,希望对大家有所帮助。

看到这里的童鞋一定对机器学习充满了兴趣吧  ~ 那就不要犹豫了,一起来学习吧!




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44663
 
704 次点击