引入
计算机发明初,专家通过将专业知识和经验梳理成规则输入计算机程序,但是这样跟不上知识更新速度,费时费力!于是一种“偷懒“的方法诞生了——机器学习,计算机可以从数据中自动学习规律,它并不神秘难懂,实际上它是一套严谨的运算逻辑(数据处理逻辑)。算法好比机器的引擎,能让计算机无人干预下,基于数据变成某一领域”专家“。
一、何为机器学习
什么是“学习”?在图灵奖和诺贝尔经济学奖得主西蒙教授看来,学习的核心是改善性能。“机器学习”最早由塞缪尔提出,他的西洋跳棋程序是世界上第一个能自我对弈的程序。汤姆.米切尔这样定义“机器学习”:是一个计算机程序,由一些任务(T)中的表现(P)来度量,通过经验(E)学习改进。吴恩达教授认为,机器学习是一门使计算机可以不用显式编程就能运作的科学。
1、定规则和学规则
传统编程基于规则,目的式快速找到答案,这里的规则指的是程序员比较熟悉的数据结构和运算方法,它们都是计算机程序的核心,规则定好后输入数据就会得到相应答案,通常答案式确定的。
机器学习与传统编程最大的区别是,计算机输出的是一套将输入变成输出的过程,而非答案的结果——机器学习时,算法尝试找到输入与输出数据的“关联”,并不断更新迭代这个“关联”,一旦通过检验,这套关联规则就成了一个数学模型。
从数学角度看,机器学习具备3个要素:模型、算法、策略。
①模型:定义了学什么,将一个实际业务问题转化为一个可用数学来量化表达的问题。
②算法:定义了怎么学,实质上是一种数学运算方法。如数学上求解最小二乘问题时会用到梯度下降的迭代方法,这就是算法。
③策略:定义了何时结束学习,即学习优化的目标和准则。数学上通常表现为一个损失函数,来评价预测值与理论值之间的差距,将机器学习转化为一个损失函数最小化的优化问题。
注意:“机器学习”和“机器学习算法”不一样。机器学习是一个从数据中学习得到模型的完整过程,是一个工程问题;而机器学习算法是期间用到的数学运算方法,是一个数学问题。
范围上,AI>机器学习>深度学习,机器学习是实现AI的一种方法,深度学习是实现机器学的一种技术。深度学习是以人工神经网路为基础的一系列模型;机器学习除了神经网络结构,只要是能通过数据训练出来的模型都可归到机器学习范畴;AI则除了机器学习这样的计算机应用外,还会拓展到生物学、认知学和心理学等。
2、算法的定义
算法是提前定义的运算方法,是计算机遵循的一组步骤或规则,算法就是“烹饪过程”。在计算机中算法表现为一段程序指令,如冒泡算法、MD5加密算法、哈希算法等。它们给出了一套通用解决方案,具备很强的问题迁移能力!
以前,算法指令只是一套事先就决定了基本执行逻辑的规则,有多“智能”取决于程序员。后续出现了机器学习算法,来自动总结数据规律解决更复杂的问题!
在今天几乎90%的程序员不会跟算法直接打交道,这些算法被专门的算法工程师封装到软件,对其他程序员来说像一个”黑盒“。一些简单算法可直接调用软件包,复杂的算法则需要专门购买,”算法“变成了一种商品!
二、机器学习算法
算法在设计之初思想很朴素,很简洁,只是为了解决某个问题,之所以难以理解是因为它与人类思考问题的方式差异很大。构建一个机器学习算法模型,有几个核心问题需要解决:
①建模问题。用数学函数来表达现实功能,最难最重要,AI存在的缺陷/局限并不是因为计算机解不出数学方程,而是无法用数学函数很好描述。
②评估问题。一套评价标准评估函数模型的优劣,商业中”杀熟现象“(如老顾客看到的价格比新顾客高)就是因为人为使用具有特定倾向性目标的评估函数。
③优化问题。找到性能最佳的某个函数。
1、常见学习方法
按学习方式分——无监督学习、监督学习、强化学习。
①无监督学习:输入数据没有维度标签,输出通常是自动聚合的不同类别的标签。分类是自动进行的,只要有数据就会找到相近特征,它的典型算法是聚类算法。
例子,让计算机将一篮水果中的同类别水果归到一起,不知道水果种类(标签),
首先它需要得到各个水果的特征数据,并表示为数学向量,假设此向量包含
了颜色、味道、形状等特征。然后将相似向量(距离较近)的水果归为一类。
②监督学习:已知输入数据的类别(标签)。它可根据已知数据的标签预测未知数据的标签,典型的应用场景是推荐和预测,是机器学习中应用最广泛的。
还是上面的水果问题,这次知道水果标签(苹果、香蕉等),
计算机学习这些标签和特征数据之间的联系,如发现红色、甜的、
圆的很有可能是苹果,黄的、甜的、长条的很有可能是香蕉。学习好
以后,就得到一个可判断水果类别的模型。
③强化学习:输入是一些数据的状态、动作以及环境交互的反馈,输出是当前状态的最佳动作。目的是让长期奖励回报最大,不断追求更好。
相比前两种,强化学习是动态的学习过程,无明确目标,对结果也无精确衡量标准。带有决策属性,连续选择一些行为(没有任何标签和数据告诉计算机该怎么做),只能尝试做些行动然后根据反馈改进。
这有点像闭环控制,没错,许多控制类和决策类问题都属于强化学习问题,例如无人机实现稳定飞行,或让人工智能在电子游戏中取得高分。
2、回归
回归是一种监督学习算法,是一种分析变量之间相互关系的一种方法。如房价与房屋面积、气候变暖与碳排放量。
”回归“一词最早由达尔文提出,无论是豌豆尺寸、人类身高都存在“向均值回归”的现象。数学上,“回归”常与数据预测联系在一起,但实际上该词本身不存在预测含义,只是由于某些原因该词被保留了下来。
算法目的一般两个:①解释已有规律。用已知数据找到合适方程表达式;②预测未知和未来。数学方程不仅可表示关联性,也可对数据样本进行预测。下面以一元线性回归为例:
一元线性回归只研究一个自变量X与一个因变量Y之间的关系。假设有一组数据,有X和Y两个变量,将这些数据画在函数图形上,可得到散点图,可看到这些数据点似乎聚集在直线附近,这条隐藏直线就是要求解的回归方程。
①假设Y与X是线性关系,。其中是随机误差,是所有不确定因素影响的总和,其值通常不可观测。数学上是把它看作随机噪声,假定其服从正态分布;至于参数和,思路是找到一条直线(如果数据是多维的,则需要找到一个平面),使得样本数据到这条直线的距离平方和尽可能小——最小二乘拟合法(最小平方法)。
②确定了Y与X的表达式后,还需要对回归方程进行假设检验,因为在计算之前它们的线性关系是假设的。要借助统计方法,对回归方程的参数进行假设检验,以验证Y与X是否真的是线性关系。
拓展:
线性回归可找出两组变量之间的关联关系,是一个机器学习过程。但实际场景是多维的,如要预测房价,除了房价数据,还需要人均收入、房屋面积、距离市区远近、医疗教育资源等,存在多变量影响结果——多元线性回归。数学方法与一元线性回归类似。
多元线性回归可能会遇到多重共线性问题,多重共线性是指样本数据中存在一些具有较强线性相关性的变量,比如房屋的建筑面积和使用面积就是在这种关系。在预测房价时,最好不要同时使用它们两个,这样会增加计算复杂度、解释性变差,还可能导致方程解不稳定。
在线性回归算法基础上改进和优化发展出了——岭回归、Lasso回归、弹性网络回归等。
3、分类
分类是一种监督学习算法,机器学习中最广泛的一类应用,它根据输入数据的特点将其归到有限个提前定义好的类别中,输入输出都是离散变量。以文本分类为例,输入是文本的特征向量,输出是文本的类别。
常见的分类算法:人工神经网络算法、决策树算法、支持向量机、K邻近法、朴素贝叶斯、逻辑回归算法等。
①分类评价方法
建立分类模型的第一步是找到一种评价分类效果的方法。对于一个分类模型,人们有时看重它判断正确的能力,有时则更关注它决策错误的风险。这需要定义两个重要指标——查准率和查全率。
查准率也称准确率、精度,用来衡量分类本身的准确度。查全率也称召回率,用来衡量分类正确的覆盖度。对于一个二分类问题(分类结果只有“真”和“假”两种),查准率表示在认为是“真”的样例中,实际到底有多少是“真”;查全率表示在所有“真”的样例中,实际找出多少“真”。有时,也用查准率和查全率的调和平均值作为综合评价的指标。
总的来说,不同场景偏重不同,如警察抓罪犯要以查准率为重,灾难预报要更偏重查全率。这两个指标通常不可兼得。
②分类算法1——K邻近算法
K邻近算法即KNN算法,它通过“测量距离”分类。数学上经常用“距离”区分数据,这里指的是“欧氏距离”,在二维平面上欧式距离表示两个点之间的几何平面距离。
它可以在特征空间中选出与“新来的未知样本”距离最近的K个数据点,然后分析它们的类别。如果多数点都属于某个类别,则这个新来的样本也属于这个类别。这里的“K”数量是自定义(通常<20的整数),所选的这“K”个邻居都是已经正确分类的对象,算法只依据最靠近的这K个邻居类别决定待分类新样本的类别——通俗说,分类的依据是“少数服从多数”,这K个最近的邻居多数属于哪个类别,新来的就是哪个类别。
实例可见前面的OpenCV的博客:【OpenCV-Python】——机器学习kNN算法&SVM算法&k均值聚类算法&深度学习图像识别&对象检测
优点:逻辑简单,易于理解,无须估计参数,也不需要数据训练,比较适用于多分类问题。
缺点是,①算法采用多数表决的分类方式,可能会在原始样本的类别(这些原始邻居)分布偏斜时出现缺陷——好比人决策时总喜欢听到精英的意见,但是精英往往是少数,周围民众会给你带来较大误判影响。②必须保存全部数据集,存储空间需求大,必须对每个数据样本计算距离,计算量大。
③分类算法2——支持向量机算法
支持向量机(SVM)的设计实现很巧妙,也是公认的将工程问题和数学问题优雅地结合在一起的算法。假设有以下样本数据,它们用黑点和白点表示,现在要把它们划分为两类,有好几种分法,但是哪种最好呢?
该算法告诉我们,最佳分割线是到两边的点的间隙距离最大的那条直线,如左图。但是在划分数据集时不是所有问题都可以用一条直线来完成分割,如右图。
其中的秘密武器是,使用到了一种被称为“核技巧”的数学转换方法。它能将数据从采样空间重新映射到更容易被分离的超空间,实质是一种数据“升维”处理。涉及数学过程较为复杂:非线性规划求解、拉格朗日乘子法、对偶问题优化、序列最小优化算法(SMO)、核函数方法等,不展开!简单来说,SVM算法将在低维空间里解决不了的分类问题,放到高维空间解决,数学上证明这种“升维”动作是可行的,不会带来额外的计算开销(这点保证了算法运作的高效)。
它的逻辑是这样的,二维空间无法解决的线性不可分问题映射到三维空间,原本二维空间上的分类边界变成三维空间上分类函数在二维空间上的投影。同理三维空间上的线性不可分问题,可把函数映射到四维空间,找到四维空间的超平面来完成分割任务,以此类推。
一个更为简单的例子,一维上的3个点(-1、0、1)无法只用一个断点来分成三类,它的过程可以使这样:
SVM是一种优雅的算法,既有数学上的美感,游客很好解释工程问题,还蕴含哲学思想——当你掌握更多维度的数据,以更高的视角去观察事物,一切将变得so easy!
④分类算法3——决策树算法
树形也是人类思维的基本规律,这种结构易于记忆、说话、演讲、写作等,人所作的每个选择都可分解成一连串的小型决策,一个又一个小型决策组成巨大的决策树,德国数学家莱布尼兹曾说:“生命可以分解为一连串连续的二元决策,某种意义上生命就是决策树算法!多么美妙的解释!
树形结构擅长分类和检索。数据库中的数据表索引一般是树形结构,操作系统的内存和进程管理也会用到树,可以较小的开销大幅提高搜索速率。
决策树算法是一种树形结构的决策算法,决策树可看作一个编程语法中if-then规则的集合,整个决策过程直观易理解,解释逻辑良好,可视化良好!
核心逻辑——把一件很复杂的事情拆分成一个个高效的子决策项。如海龟汤游戏用问“是否的问题”猜测事物的真相。
算法目的——生成一棵泛化能力尽可能强的决策树,让它可以很好地处理没见过的数据——找出一种最能消除不确定性的划分枝叶的方法。
实现——每次决策后比较划分枝叶前后的信息熵,计算出信息增益量,信息增益量越大,说明消除的不确定性越高,本次这种划分也最好。当然实际构建决策树,特征选择还有很多方法(如基尼指数等),但无论哪一种目的都是挑选最佳的特征,通过特征的选择使得原
剪枝问题——决策树算法中样本数据很容易过度划分,剪枝就是为一棵决策树剪去多余的枝叶,避免出现过拟合。一般有两种方法:①预剪枝,在决策树生成过程中,估计每个节点在划分后的效果提升程度,决定是否接受当前的划分;②后剪枝,先生成一棵完整的决策树,然后自底向上逐个考察各个非叶子节点(最底下是叶子),评估它们能否替换为叶子节点,这种方式属于后剪枝。
缺陷与解决——决策树模型是单个预测器,最大的问题是不稳定,有时训练样本集合的变化很小,但是生成的决策树会有很大差异。为此,人们将数以百计的决策树模型组合起来,每次分类时随机选择树模型,形象称之为随机森林算法。随机森林中每棵树模型的层数较少,分类精度不会要求太高,但是组合起来也会表现出很好的预测结果。
续下篇...
上面介绍了回归、分类两种类型,下篇接着聚类、降维、时间序列等算法!
往期精彩:
【AI底层逻辑】——篇章3(下):信息交换&信息加密解密&信息中的噪声
【AI底层逻辑】——篇章3(上):数据、信息与知识&香农信息论&信息熵
【机器学习】——续上:卷积神经网络(CNN)与参数训练
【AI底层逻辑】——篇章1&2:统计学与概率论&数据“陷阱”
版权归原作者 柯宝最帅 所有, 如有侵权,请联系我们删除。