美文网首页
Python - 机器学习

Python - 机器学习

作者: 天线嘟嘟茄 | 来源:发表于2020-03-31 23:28 被阅读0次
    什么是机器学习

    机器学习在许多方面都可以看作是数据科学能力延伸的主要手段。机器学习是用数据科学的计算能力和算法能力去弥补统计方法的不足,其最终结果是为那些目前既没有高效的理论支持、又没有高效的计算方法的统计推理与数据探索问题提供解决方法。

    机器学习的本质就是借助数学模型理解数据。当我们给模型装上可以适应观测数据的可调参数时,“学习”就开始了;此时的程序被认为具有从数据中“学习”的能力。一旦模型可以拟合旧的观测数据,那么它们就可以预测并解释新的观测数据。

    机器学习一般可以分为两类:

    • 有监督学习(supervised learning):对数据的若干特征与若干标签(类型)之间的关联性进行建模的过程;只要模型被确定,就可以应用到新的未知数据上。这类学习过程可以进一步分为分类(classification)任务与回归(regression)任务。在分类任务中,标签都是离散值;而在回归任务中,标签都是连续值。

    • 无监督学习(unsupervised learning):对不带任何标签的数据特征进行建模,通常被看成是一种“让数据自己介绍自己”的过程。这类模型包括聚类(clustering)任务和降维(dimensionality reduction)任务。聚类算法可以将数据分成不同的组别,而降维算法追求用更简洁的方式表现数据。

    另外,还有一种半监督学习(semi-supervised learning)方法,介于有监督学习与无监督学习之间。半监督学习方法通常可以在数据标签不完整时使用。

    代码地址:https://github.com/jakevdp/PythonDataScienceHandbook

    1、分类:预测离散标签(离散点)

    假如我们有一些带标签的数据点,希望用这些信息为那些不带标签的数据点进行分类。

    我们看到的是二维数据,也就是说每个数据点都有两个特征,在平面上用数据点的 (x, y) 位置表示。另外,我们的数据点还用一种颜色表示一个类型标签,一共有两种类型,分别用两种颜色表示。我们想根据这些特征和标签创建一个模型,帮助我们判断新的数据点是“蓝色”还是“红色”。

    5-1

    虽然有许多可以解决分类任务的模型,但是这里还是先用最简单的一种。假设平面上有一条可以将两种类型分开的直线,直线的两侧分别是一种类型。那么,我们的模型其实就是“一条可以分类的直线”,而模型参数其实就是直线位置与方向的数值。这些模型参数的最优解都可以通过学习数据获得(也就是机器学习的“学习”),这个过程通常被称为训练模型。

    5-2

    模型现在已经训练好了,可以对一个新的、不带标签的数据进行分类了。也就是说,我们可以拿一组新数据,把这个模型的直线画在上面,然后根据这个模型为新数据分配标签。这个阶段通常被称为预测。

    5-3

    机器学习方法的真正用途是要解决大型高维度数据集的分类问题。

    常见的分类任务:垃圾邮件自动识别,通常会获得以下特征与标签:

    • 特征 1、特征 2……特征 n → 垃圾邮件关键词与短语出现的频次归一化向量(“Viagra”“Nigerian prince”等)

    • 标签 → “垃圾邮件”或“普通邮件”

    在训练数据集中,这些标签可能是人们通过观察少量邮件样本得到的,而剩下的大量邮件都需要通过模型来判断标签。一个训练有素的分类算法只要具备足够好的特征(通常是成千上万个词或短语),就能非常高效地进行分类。

    一些重要的分类算法:包括高斯朴素贝叶斯分类、支持向量机,以及随机森林分类。

    2、回归:预测连续标签(连续值)

    所有样本的标签都在一个连续的区间内。有一个二维数据,每个数据点有两个特征。数据点的颜色表示每个点的连续标签。

    5-4

    用简单线性回归模型作出假设,如果我们把标签看成是第三个维度,那么就可以将数据拟合成一个平面方程——这就是著名的在二维平面上线性拟合问题的高阶情形。如果将三维数据拟合成一个平面,就可以对任何输入参数集进行预测。

    5-5

    回到原来的二维投影图形上,拟合平面时获得的结果:

    5-6

    这个拟合平面为预测新数据点的标签提供了依据。

    5-7

    类似的回归任务:计算通过天文望远镜观测到的星系的距离,可能会用到以下特征与标签:

    • 特征 1、特征 2……特征 n → 具有若干波长或颜色的星系的亮度

    • 标签 → 星系的距离或红移(redshift)

    少量星系的距离可以通过直接观察(通常成本也非常高)进行测量。之后,我们就可以利用适当的回归模型估计其他星系的距离,而不需要为整个星系集合使用昂贵的观察设备。在天文学领域中,这种问题通常被称为“测光红移”(photometric redshift)。

    一些重要的回归算法:包括线性回归、支持向量机,以及随机森林回归。

    3、聚类:为无标签数据添加标签

    回归与分类示例都是有监督学习算法,需要建立一个模型来预测新数据的标签。无监督学习涉及的模型将探索没有任何已知标签的数据。

    聚类:数据被聚类算法自动分成若干离散的组别。

    5-8

    仅通过肉眼观察,就可以很清晰地判断出这些点应该归于哪个组。一个聚类模型会根据输入数据的固有结构判断数据点之间的相关性。通过最快、最直观的 k-means 聚类算法,就可以发现类簇(cluster)。

    k-means 会拟合出一个由 k 个簇中心点构成的模型,最优的簇中心点需要满足簇中的每个点到该中心的总距离最短。显然,在二维平面上用聚类算法显得非常幼稚,但随着数据量越来越大、维度越来越多,聚类算法对于探索数据集的信息会变得十分有效。

    5-9

    其他重要的聚类算法还有高斯混合模型和谱聚类。

    4、降维:推断无标签数据的结构

    降维是另一种无监督算法示例,需要从数据集本身的结构推断标签和其他信息。一般来说,降维其实就是在保证高维数据质量的条件下从中抽取出一个低维数据集。不同的降维算法用不同的方式衡量降维质量。

    5-10

    可以清晰地看出数据存在某种结构:这些数据点在二维平面上按照一维螺旋线整齐地排列。从某种程度上,你可以说这些数据“本质上”只有一维,虽然这个一维数据是嵌在高维数据空间里的。适合这个示例的降维模型不仅需要满足数据的非线性嵌套结构,而且还要给出低维表现形式。

    5-11

    图中的颜色(表示算法提取到的一维潜在变量)沿着螺旋线呈现均匀变化,表明这个算法的确发现了肉眼所能观察到的结构。

    降维算法同样要在处理高维数据时才能大展拳脚。例如,我们可能需要对一个包含 100 或 1000 个特征的数据集内部的关联性进行可视化。要对一个 1000 维的数据进行可视化是个巨大的挑战,一种解决办法就是通过降维技术,让我们可以在更容易处理的二维或三维空间中对数据进行可视化。

    一些重要的降维算法:包括主成分分析和各种流形学习算法,如 Isomap 算法、局部线性嵌入算法。

    相关文章

      网友评论

          本文标题:Python - 机器学习

          本文链接:https://www.haomeiwen.com/subject/laynuhtx.html