从零开始掌握Python机器学习:七步教程 进阶篇

前言

本篇是使用 Python 掌握机器学习的 7 个步骤系列文章的下篇。快速回顾之后,本篇文章会更明确地集中于几个机器学习相关的任务集上。由于安全地跳过了一些基础模块——Python 基础、机器学习基础等等——我们可以直接进入到不同的机器学习算法之中。

第一步

机器学习基础回顾&一个新视角

上篇中包括以下几步:

  1. Python 基础技能
  2. 机器学习基础技能
  3. Python 包概述
  4. 运用 Python 开始机器学习:介绍&模型评估
  5. 关于 Python 的机器学习主题:k-均值聚类、决策树、线性回归&逻辑回归
  6. 关于 Python 的高阶机器学习主题:支持向量机、随机森林、PCA 降维
  7. Python 中的深度学习
    如上所述,如果你正准备从头开始,我建议你按顺序读完上篇。我也会列出所有适合新手的入门材料,安装说明包含在上篇文章中。
    然而,如果你已经读过,我会从下面最基础的开始:

机器学习关键术语解释,作者 Matthew Mayo。
地址:Machine Learning Key Terms, Explained
维基百科条目:统计学分类。
地址:Statistical classification
机器学习:一个完整而详细的概述
地址:Machine Learning: A Complete and Detailed Overview
Shai Ben-David 的机器学习介绍视频讲座
地址:http://suo.im/1TFlK6
理解机器学习:从理论到算法
地址:http://suo.im/1NL0ix

记住,这些介绍性资料并不需要全部看完才能开始我写的系列文章。视频讲座、教科书及其他资源可在以下情况查阅:当使用机器学习算法实现模型时或者当合适的概念被实际应用在后续步骤之中时。具体情况自己判断。

第二步

更多的分类

   我们从新材料开始,首先巩固一下我们的分类技术并引入一些额外的算法。虽然本篇文章的第一部分涵盖决策树、支持向量机、逻辑回归以及合成分类随机森林,我们还是会添加 k-最近邻、朴素贝叶斯分类器和多层感知器。


Scikit-learn 分类器
k-最近邻(kNN)是一个简单分类器和懒惰学习者的示例,其中所有计算都发生在分类时间上(而不是提前在训练步骤期间发生)。kNN 是非参数的,通过比较数据实例和 k 最近实例来决定如何分类。
使用 Python 进行 k-最近邻分类。

地址:K-Nearest Neighbor classification using python
使用 Scikit-learn 进行文档分类
地址:Document Classification with scikit-learn
神经网络模型(监督式),Scikit-learn 文档。地址:1.17. Neural network models (supervised)
Python 和 Scikit-learn 的神经网络初学者指南
地址:A Beginner’s Guide to Neural Networks with Python and SciKit Learn 0.18!

第三步

更多聚类

我们现在接着讲聚类,一种无监督学习形式。上篇中,我们讨论了 k-means 算法; 我们在此介绍 DBSCAN 和期望最大化(EM)。

Scikit-learn聚类算法
首先,阅读这些介绍性文章; 第一个是 k 均值和 EM 聚类技术的快速比较,是对新聚类形式的一个很好的继续,第二个是对 Scikit-learn 中可用的聚类技术的概述:

聚类技术比较:简明技术概述
地址:Comparing Clustering Techniques: A Concise Technical Overview
在数据集中比较不同的聚类算法,Scikit-learn 文档
地址:Comparing different clustering algorithms on toy datasets

期望最大化(EM)是概率聚类算法,并因此涉及确定实例属于特定聚类的概率。EM 接近统计模型中参数的最大似然性或最大后验估计(Han、Kamber 和 Pei)。EM 过程从一组参数开始迭代直到相对于 k 聚类的聚类最大化。
首先阅读关于 EM 算法的教程。接下来,看看相关的 Scikit-learn 文档。最后,按照教程使用 Python 自己实现 EM 聚类。

扫描二维码关注公众号,回复: 6622334 查看本文章

期望最大化(EM)算法教程,作者 Elena Sharova
地址:A Tutorial on the Expectation Maximization (EM) Algorithm
高斯混合模型,Scikit-learn 文档
地址:2.1. Gaussian mixture models
使用 Python 构建高斯混合模型的快速介绍
地址:Quick introduction to gaussian mixture models with python

如果高斯混合模型初看起来令人困惑,那么来自 Scikit-learn 文档的这一相关部分应该可以减轻任何多余的担心:
高斯混合对象实现期望最大化(EM)算法以拟合高斯模型混合。
基于密度且具有噪声的空间聚类应用(DBSCAN)通过将密集数据点分组在一起,并将低密度数据点指定为异常值来进行操作。
首先从 Scikit-learn 的文档中阅读并遵循 DBSCAN 的示例实现,然后按照简明的教程学习:

DBSCAN 聚类算法演示,Scikit-learn 文档
地址:Demo of DBSCAN clustering algorithm
基于密度的聚类算法(DBSCAN)和实现
地址:http://suo.im/1LEoXC

第四步

更多的集成方法

上篇只涉及一个单一的集成方法:随机森林(RF)。RF 作为一个顶级的分类器,在过去几年中取得了巨大的成功,但它肯定不是唯一的集成分类器。我们将看看包装、提升和投票。

给我一个提升
首先,阅读这些集成学习器的概述,第一个是通用性的;第二个是它们与 Scikit-learn 有关:

集成学习器介绍,作者 Matthew Mayo
地址:Data Science Basics: An Introduction to Ensemble Learners
Scikit-learn 中的集成方法,Scikit-learn 文档
地址:1.11. Ensemble methods
Python 中的随机森林,来自 Yhat
地址:Random Forests in Python

包装、提升和投票都是不同形式的集成分类器,全部涉及建构多个模型; 然而,这些模型由什么算法构建,模型使用的数据,以及结果如何最终组合起来,这些都会随着方案而变化。
包装:从同一分类算法构建多个模型,同时使用来自训练集的不同(独立)数据样本——Scikit-learn 实现包装分类器
提升:从同一分类算法构建多个模型,一个接一个地链接模型,以提高每个后续模型的学习——Scikit-learn 实现 AdaBoost
投票:构建来自不同分类算法的多个模型,并且使用标准来确定模型如何最好地组合——Scikit-learn 实现投票分类器
那么,为什么要组合模型?为了从一个特定角度处理这个问题,这里是偏差-方差权衡的概述,具体涉及到提升,Scikit-learn 文档:单一评估器 vs 包装:偏差-方差分解,Scikit-learn 文档。地址:http://suo.im/3izlRB
现在你已经阅读了关于集成学习器的一些介绍性材料,并且对几个特定的集成分类器有了基本了解,下面介绍如何从 Machine Learning Mastery 中使用 Scikit-learn 在 Python 中实现集成分类器:使用 Scikit-learn 在 Python 中实现集成机器学习算法,作者 Jason Brownlee。地址:Ensemble Machine Learning Algorithms in Python with scikit-learn - Machine Learning Mastery

第五步

梯度提升

下一步我们继续学习集成分类器,探讨一个当代最流行的机器学习算法。梯度提升最近在机器学习中产生了显著的影响,成为了 Kaggle 竞赛中最受欢迎和成功的算法之一。


给我一个梯度提升
首先,阅读梯度提升的概述:

维基百科条目:梯度提升
地址:http://suo.im/TslWi
为什么梯度提升完美解决了诸多 Kaggle 难题?
地址:Why does Gradient boosting work so well for so many Kaggle problems?
Kaggle 大师解释什么是梯度提升
地址:A Kaggle Master Explains Gradient Boosting
维基百科条目:XGBoost
地址:Xgboost - Wikipedia
Ghub 上的 XGBoost 库
地址:dmlc/xgboost
XGBoost 文档
地址:Introduction to Boosted Trees
Python 中 XGBoost 梯度提升树的实现指南
地址:A Guide to Gradient Boosted Trees with XGBoost in Python
XGBoost 在 Kaggle 上的示例(Python)
地址:Titanic: Machine Learning from Disaster
Iris 数据集和 XGBoost 简单教程
地址:Iris Dataset and Xgboost Simple Tutorial

第六步

更多的降

降维是通过使用过程来获得一组主变量,将用于模型构建的变量从其初始数减少到一个减少数。
有两种主要形式的降维:

  1. 特征选择——选择相关特征的子集。地址:Feature selection
  2. 特征提取——构建一个信息性和非冗余的衍生值特征集。地址:Feature extraction
    下面是一对常用的特征提取方法。

主成分分析(PCA)是一种统计步骤,它使用正交变换将可能相关变量的一组观测值转换为一组称为主成分的线性不相关变量值。主成分的数量小于或等于原始变量的数量。这种变换以这样的方式定义,即第一主成分具有最大可能的方差(即考虑数据中尽可能多的变率)

以上定义来自 PCA 维基百科条目,如果感兴趣可进一步阅读。但是,下面的概述/教程非常彻底:
主成分分析:3 个简单的步骤,作者 Sebastian Raschka。地址:Principal Component Analysis

线性判别分析(LDA)是 Fisher 线性判别的泛化,是统计学、模式识别和机器学习中使用的一种方法,用于发现线性组合特征或分离两个或多个类别的对象或事件的特征。所得到的组合可以用作线性分类器,或者更常见地,用作后续分类之前的降维。

LDA 与方差分析(ANOVA)和回归分析密切相关,它同样尝试将一个因变量表示为其他特征或测量的线性组合。然而,ANOVA 使用分类独立变量和连续因变量,而判别分析具有连续的独立变量和分类依赖变量(即类标签)。
上面的定义也来自维基百科。下面是完整的阅读:
线性判别分析——直至比特,作者 Sebastian Raschka。地址:Linear Discriminant Analysis
你对 PCA 和 LDA 对于降维的实际差异是否感到困惑?Sebastian Raschka 做了如下澄清:
线性判别分析(LDA)和主成分分析(PCA)都是通常用于降维的线性转换技术。PCA 可以被描述为「无监督」算法,因为它「忽略」类标签,并且其目标是找到使数据集中的方差最大化的方向(所谓的主成分)。与 PCA 相反,LDA 是「监督的」并且计算表示使多个类之间的间隔最大化的轴的方向(「线性判别式」)。
有关这方面的简要说明,请阅读以下内容:
LDA 和 PCA 之间的降维有什么区别?作者 Sebastian Raschka。地址:Machine Learning FAQ

第七步

更多的深度学习

上篇中提供了一个学习神经网络和深度学习的入口。如果你的学习到目前比较顺利并希望巩固对神经网络的理解,并练习实现几个常见的神经网络模型,那么请继续往下看。

首先,看一些深度学习基础材料:

理解深度学习的 7 个步骤,作者 Matthew Mayo
地址:7 Steps to Understanding Deep Learning
接下来,在 Google 的机器智能开源软件库
TensorFlow(一个有效的深度学习框架和现今几乎是最好的神经网络工具)尝试一些简明的概述/教程:
机器学习敲门砖:任何人都能看懂的 TensorFlow 介绍(第 1、2 部分)
入门级解读:小白也能看懂的 TensorFlow 介绍(第 3、4 部分)
最后,直接从 TensorFlow 网站试用这些教程,它实现了一些最流行和常见的神经网络模型:
循环神经网络,谷歌 TensorFlow 教程
地址:http://suo.im/2gtkze
卷积神经网络,谷歌 TensorFlow 教程
地址:http://suo.im/g8Lbg

想要获取更多人工智能方面的资料
可以加V、、信:hcgx0904(备注“人工智能”)
点击:学习人工智能,开始学习吧!!!

猜你喜欢

转载自blog.csdn.net/hcgx2018/article/details/93485867
今日推荐