对机器学习和数据挖掘的科学定义是这样的:
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
数据挖掘(英语:Data mining),又译为资料探勘、数据采矿。它是数据库知识发现(英语:Knowledge-Discovery in Databases,简称:KDD)中的一个步骤。数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。
简单地说就是,机器学习和数据库是数据挖掘的基石。
机器学习致力于研究如何通过计算的手段,利用经验来改善自身的性能,而这里的经验指的就是数据。我们研究出了一系列在理论层面上可行的算法,即(learning algorithm),然后将数据集应用到这些算法上,产生学习模型,这个学习模型可以应用到新的数据集上,对新数据集的一些情况进行预测和判断。(典型例子:信用卡偿还的违约与否。)
在这个过程中会遇到很多问题:
1.怎么获取数据集?
2.怎么对获得的数据进行清洗和转换?
3.怎么进行特征选择,删除哪些冗余特征(用到相应的领域知识),怎么进行特征提取(用到多元统计分析的知识(PCA主成分分析,因子分析)),也就是数据的降维处理?
4.怎么对数据类型进行处理(连续数据离散化,连续数据与分类数据二元化),以适用于相应的算法?
5.选择哪些算法合适(目的是进行预测还是聚类;预测的是离散变量(分类)还是连续变量(回归);用于预测的变量是连续的还是离散的,又或者是二元变量)?
6.用算法训练出来的模型好用吗,怎么评估(模型的泛华能力如何)?
7.既然算法需要评估,就需要数据集,可以用用来训练模型的的数据集评估模型吗?训练集和检验集大小怎么分配?用作训练集的数据还可以用来检验吗?(我们获得的数据集只是整个样本空间的采样,通常我们会假设这些数据点独立同分布,数据集越大,得到的结果趋近于真实世界的结果,所以我们希望训练样本可以尽可能大,但是留出的检验集又不能太小,不然估计的泛化会误差不准确。)
上面遇到的每一个问题都在学习过程中得到了一定程度的解决,我接下来也会将我学习到的东西跟大家一起分享。
根据训练数据是否同有标记信息,学习任务可大致分为两类:监督学习和无监督学习。根据监督学习可用于一个特定的数据集(训练集)具有某一属性(标签),但是其他数据没有标签或者需要预测标签的情况。无监督学习可用于给定的没有标签的数据集(数据不是预分配好的),目的就是要找出数据间的潜在关系。
下面分享一些比较主流的算法:
决策树是一个决策支持工具,它使用树形图或者决策模型以及可能性序列,包括偶然事件的结果、资源成本和效用。下图是其基本原理:
从业务决策的角度来看,决策树是人们必须了解的最少的是/否问题,这样才能评估大多数时候做出正确决策的概率。作为一种方法,它允许你以结构化和系统化的方式来解决问题,从而得出合乎逻辑的结论。
朴素贝叶斯分类器是一类简单的概率分类器,它基于贝叶斯定理和特征间的强大的(朴素的)独立假设。图中是贝叶斯公式,其中P(A|B)是后验概率,P(B|A)是似然,P(A)是类先验概率,P(B)是预测先验概率。
一些应用例子:
如果你懂统计学的话,你可能以前听说过线性回归。最小二乘法是一种计算线性回归的方法。你可以将线性回归看做通过一组点来拟合一条直线。实现这个有很多种方法,“最小二乘法”就像这样:你可以画一条直线,然后对于每一个数据点,计算每个点到直线的垂直距离,然后把它们加起来,那么最后得到的拟合直线就是距离和尽可能小的直线。
线性指的是你用来拟合数据的模型,而最小二乘法指的是你最小化的误差度量。
逻辑回归是一个强大的统计学方法,它可以用一个或多个解释变量来表示一个二项式结果。它通过使用逻辑函数来估计概率,从而衡量类别依赖变量和一个或多个独立变量之间的关系,后者服从累计逻辑分布。
总的来说,逻辑回归可以用于以下几个真实应用场景:
SVM是二进制分类算法。给定N维坐标下两种类型的点,SVM生成(N-1)维的超平面来将这些点分成两组。假设你在平面上有两种类型的可以线性分离的点,SVM将找到一条直线,将这些点分成两种类型,并且这条直线尽可能远离所有这些点。
从规模上看,使用SVM(经过适当的修改)解决的一些最大的问题包括显示广告、人类剪切位点识别(human splice site recognition)、基于图像的性别检测,大规模图像分类……
集成方法是学习算法,它通过构建一组分类器,然后通过它们的预测结果进行加权投票来对新的数据点进行分类。原始的集成方法是贝叶斯平均,但是最近的算法包括纠错输出编码、Bagging和Boosting。
那么集成方法如何工作?并且为什么它们要优于单个模型?
聚类是将一系列对象分组的任务,目标是使相同组(集群)中的对象之间比其他组的对象更相似。
每一种聚类算法都不相同,下面是一些例子:
PCA是一个统计学过程,它通过使用正交变换将一组可能存在相关性的变量的观测值转换为一组线性不相关的变量的值,转换后的变量就是所谓的主分量。
PCA的一些应用包括压缩、简化数据便于学习、可视化等。请注意,领域知识在选择是否继续使用PCA时非常重要。 数据嘈杂的情况(PCA的所有成分具有很高的方差)并不适用。
在线性代数中,SVD是复杂矩阵的因式分解。对于给定的m * n矩阵M,存在分解使得M=UΣV,其中U和V是酉矩阵,Σ是对角矩阵。
实际上,PCA是SVD的一个简单应用。在计算机视觉中,第一个人脸识别算法使用PCA和SVD来将面部表示为“特征面”的线性组合,进行降维,然后通过简单的方法将面部匹配到身份,虽然现代方法更复杂,但很多方面仍然依赖于类似的技术。
ICA是一种统计技术,主要用于揭示随机变量、测量值或信号集中的隐藏因素。ICA对观测到的多变量数据定义了一个生成模型,这通常是作为样本的一个大的数据库。在模型中,假设数据变量由一些未知的潜在变量线性混合,混合方式也是未知的。潜在变量被假定为非高斯分布并且相互独立,它们被称为观测数据的独立分量。
ICA与PCA有关,但是当这些经典方法完全失效时,它是一种更强大的技术,能够找出源的潜在因素。 其应用包括数字图像、文档数据库、经济指标和心理测量。