3.2 了解模型建立的过程
人工智能是一个综合性的概念,目前许多人把通过机器来模拟人类认知能力的技术都称作人工智能,因此人工智能的概念在商业中时常会被提起,有些企业只要运用人工智能某一项技术,就标榜自己是人工智能的产品。但对于学术界来说,科研人员会更倾向于在某一算法领域取得研究成果。
对于AI产品经理或非科研人员,在阅读人工智能的相关论文时会有很大的困难,因为人工智能各项算法都需要拥有综合性学科的知识才能理解,而且大量的运算对数学知识要求很高,如线性代数、微积分等都是进行算法研究的入门知识,因此,AI产品经理通过学术论文进行学习的成本非常高。无论如何,所有的人工智能都是从建模开始的,AI产品经理可以通过了解建模的过程,来了解AI工程师处理问题的流程。
3.2.1 初识建模过程
在工作过程中,我们经常会遇到一个名词——模型。什么是模型呢?模型可以理解为“为了解决某一个问题而构造的一个函数”。从模型的简化过程来看,就是输入和输出的过程:模型基于系统的输入,通过各种参数计算会得到一个输出,这个输出的数值含义可能代表“是或否”,也可能代表“可信程度”,这取决于模型解决的目标。模型不是天然存在的,它需要根据数据样本进行构建,构建模型的过程称为建模过程。一个模型的建立过程如图3-2所示。
图3-2 一个模型的建立过程
在一个通用模型的建立过程中,业务系统会保存原始数据,包括历史数据和实时数据,我们针对数据需要进行数据抽取,可以选择性地抽取或者实时同步抽取。原始的数据会有很多无效的数据,因此针对原始数据,我们需要经过数据预处理,得到理想的数据样本,才能够根据样本数据对模型进行训练。训练模型需要根据模型评价指标确定是否可以进行输出,在模型上线后,还需要根据实时数据评估模型的优劣,不断调整模型的参数,这就是一个常见的模型建立的基本过程。
例如,以识别手写数字0~9这一经典问题作为建模过程的案例。我们采集了44位作家的手写字体作为数据集,并建立了拥有250个样本的数据库,该样本中所有的输入属性的范围是0~100,最后一个属性是类代码0~9。如图3-3所示为一组手写数字0~9的字体样本,我们通过肉眼观察可以发现,不同的人写出来的数字样式是有区别的,但即使数据经过变形,人的肉眼依然能够很好地识别数字,但这些特征如何进行描述,才能让计算机也能够识别手写的数字呢?
图3-3 一组手写数字0~9的字体样本
为了能够让计算机识别这些手写的字体,首先要对这些图片样本进行特征的提取,这里出现了一个专业概念——特征提取。特征提取指的是对某一模式的组测量值进行变换,以突出该模式具有代表性特征的一种方法。对于产品经理来说,特征提取指的是将隐含在数据样本中的特征,通过一定的数学或描述方法提取出来。
不同领域会有不同的特征提取方法,如针对手写数字字体,特征提取就是如何将这些人类看得懂的图片转化成机器需要识别的特征。为了提取手写数字的特征,可以构建数字特征矩阵,用于保存数字的特征信息。图3-4所示为数字2的二值化处理,通过将待识别的数字2的图片进行二值化处理,将图片中的背景部分用0表示,而数字覆盖到的区域用1表示,每个数字样本就会存一个0和1的描述矩阵,这个0和1的描述矩阵,就可以当作一个特征,让模型进行学习。
图3-4 数字2的二值化处理
除此之外,对于识别图片中的数字,人工还可以通过以下方式构造特征。
① 字体的长宽比:如1的长宽比较小,而其他数字的长宽比和数字1有显著差别。
② 空间密度:如果把数据分为左上、左下、右上、右下四个方位,不同方位的数字密度也会有所差别。如数字0的四个方位相差不大,而7这个数字的四个方位就显然有所不同。
③ 数据的横向切片数:如1的横向切片数和7的横向切片数的特征不同。
④ 切片数为1的位置:不同数字的位置不同,有的靠左、有的靠右、有的靠上、有的靠下、有的在数字中间。
在手写字体中,数字字体的颜色对于数字识别其实没有决定性因素,这个时候色彩就不会作为特征构建到训练数据中去;而如果色彩是图片识别中重要的特征时,就需要输入模型中进行学习。这些描述均是图像特征的构建,属于特征工程领域,且是一些经典模型处理图片识别的做法。而现在比较流行的深度学习算法,其优势在于不需要人为构建特征,而是由模型自行构建特征。AI产品经理需要有这样一个认知:样本数据构建的特征不同,对于模型的准确度是有较大影响的。
特征如何构建主要是由AI工程师处理的,但AI产品经理的工作是可以对特征提供更多的参考意见。对于AI产品经理来说,重点在于了解业务的背景以及这些数据的特点,在AI工程师不了解业务背景情况下,可以将业务的背景传达出去,以便团队充分理解。例如,在日常工作中,业务人员希望借助计算机视觉的能力判定证照是否为假证,那么AI产品经理应该提前了解“假证的特征是什么?”这样便于AI工程师构建业务所需要的模型特征。
3.2.2 模型的训练过程
在特征构建完毕后,AI工程师需要使用训练数据对模型进行训练,对于模型来说也是学习的过程。AI产品经理在向AI研究团队提出需求时,就可以根据现有的数据情况,初步估计学习模型的类型。图3-5所示为模型的基本训练方式,一般来说,根据训练数据是否有标签,模型训练可以分为有监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)和半监督学习(Semi-Supervised Learning)。
图3-5 模型的基本训练方式
(1)有监督学习
有监督学习指的是使用已知正确答案的示例训练模型的方式,其重要特征是训练数据中包含输入数据及其对应的输出数据。常见的有监督学习算法包括感知机、决策树、线性回归、逻辑回归、支持向量机等学习算法。有监督学习是日常使用最多的建模形式,根据不同的目的,还可以具体细分为分类模型和回归模型。例如,根据鸢尾花的图片进行种类的分类,其目标是需要模型根据鸢尾花的形状、颜色等特征进行模型自动划分种类,这个过程就是分类;如果模型训练的结果是预测速度的变化之类连续的数字,则称为回归,分类和回归的概念会在后文进行详细说明。
(2)无监督学习
无监督学习指的是训练数据中只包含输入数据,而不提供任何输出标签,算法需要根据数据内部的特征进行学习,如聚类算法、降维算法等均属于无监督学习。聚类算法包括K-均值聚类、层级聚类和用户聚类方法等,而降维算法则包括主成分分析法和独立成分分析法等。有许多场景会应用无监督学习,例如,评论数据挖掘,需要在分析大量语句之后,训练出一个模型,将较为接近的词分为一类,而后可以根据一个新的词在句子中的用法(和其他信息)将这个词分入某一类中。无监督学习比较微妙的地方在于,有时候数据是无法人为地观察出其特征的,通过无监督学习后挖掘的特征,可能会对数据集有新的启发。例如,根据用户的购买习惯进行聚类,就是无监督学习的模型构建过程,在构建前并未对用户特征进行标记。
(3)半监督学习
半监督学习指的是数据中包含输入数据,只提供部分输出数据的模型训练方式。应用场景同样包括分类和回归,半监督学习的算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。半监督学习的数据集比较特殊,是部分有标签、部分无标签的数据集,由于有标签的数据很多时候需要花大量的人力和物力去分类和生成,半监督学习也被视作当前训练模型的重要组成部分。在通常情况下,半监督问题往往会利用一些假设,将半监督学习转化为传统的有监督学习或无监督学习问题。半监督学习可以在小数据样本的情况下使用。
在传统的学习方式中,并没有引入强化学习(Reinforcement Learning)的概念,但部分学者会将这种学习方式与监督学习并列。强化学习又称再励学习、评价学习,在智能机器人及分析预测等领域有许多应用,其核心是以“试错”的方式进行学习,通过与环境进行交互获得的奖赏指导行为,目标是使智能体获得最大的奖赏。强化学习不同于连接主义学习中的监督学习,主要表现在强化信号上,强化学习中的强化信号是对产生动作好坏进行的一种评价。
不同的模型训练方式要求的数据是不一样的,这是AI工程师对数据评估的初步判定原则。对于有监督学习的训练方式,实际上要求提供的数据是带有输出标签的;对于无监督的训练方式,则需要确保数据样本覆盖广,能够将所有条件产生的数据提供给AI工程师。训练数据的质量决定了模型的质量,所以AI产品经理在提出相关需求时,应该提前了解数据的质量,是否存在大量空数据或无效数据,数据的特征是否比较明显,数据之间是否有联系,从而不至于让AI工程师因为数据问题难以建立高质量的模型。
1.训练数据
当数据准备完成后,AI工程师需要对模型进行训练。我们经常听到的训练数据,指的就是模型在建模过程中进行参数调优的数据。训练数据在训练的过程中使用,目的是找出一套合适的模型。训练数据一般是原始数据经过特征提取之后获得的,如果模型的训练数据质量较差,在进行特征提取之前,AI工程师还会对数据进行清洗。模型需要根据训练数据进行调优,当模型针对训练数据能够有质量较高的输出时,就完成了模型的训练过程。AI产品经理需要提前考察训练数据的质量,初步评估是否可用模型解决,同时应该知晓数据清洗和特征提取也需要占据一定的工作量,这正是同功能开发有区别的地方,建模的过程是会出现无法满足业务需求的情况的。
2.测试数据
数据是模型训练的前提,模型能否达到输出的标准,则需要通过测试数据进行验证,测试数据可用于判断找出的方法是否有效。在给AI工程师提供数据后,AI工程师一般会将数据分为两部分,一部分为训练数据,另一部分为测试数据。测试数据是用于测试模型是否达到准确率的样本。模型经过训练数据后会得到一组参数,AI工程师将通过测试数据验证训练出来的参数是否可靠,一般来说,训练数据和测试数据的精度都到达一定要求后,模型就基本搭建完成了,可用于生产环境中。
3.归一化处理
在建立模型的过程中,我们要对多个变量进行归一化处理,什么是归一化处理呢?归一化是指在数据处理过程中,将有量纲的表达式或数据变为无量纲的表达式或数据的过程,使数据成为标量。在数学处理方式上可以简单概括为将样本数据中的最大值设为1,最小值设为0,其他数据等比例处理为0~1的数据的处理过程。为何要对变量进行归一化处理呢?因为不同变量的度量单位是不一样的,例如,水的温度和水的流速、空气的温度有关,假设水的流速是1m/s,空气的温度是30℃,这时候1和30显然不能同时输入函数中,需要同时归到0~1的关系中才能够更好地度量自变量与因变量的关系。
4.模型的训练精度
AI工程师在交付模型后,会提供本次模型的训练测试精度指标,但在运用到生产环境时,有时会发现效果可能无法像离线数据或训练数据的效果那样好。为什么模型的训练精度高但实际应用的精度低呢?AI产品经理可以初步判断模型可能出现了三个问题:模型过拟合、模型欠拟合或模型的泛化能力较差。
5.模型过拟合与欠拟合
形象地说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。拟合的过程就是针对已知点列,从整体上靠近它们,那什么是模型过拟合或欠拟合呢?如图3-6所示展示了在数据层面上,欠拟合和过拟合的表现形态。在欠拟合状态下,模型的预测和实际的分布基本不一致;过拟合的状态则与所有分布一致,但无法正确描述实际的趋势;最佳效果则可以在一定程度上表达数据的变化特征,同时能够适应新的数据。
图3-6 数据的三种表现形态
欠拟合一般发生在模型训练刚开始的阶段,简单来说就是模型根本还没有学习到数据样本的特征,所以模型的精度始终无法达到AI产品经理的要求。欠拟合的情况是模型在训练阶段就无法达到设定的准确度,所以欠拟合模型在实际运用阶段自然就更难保证准确度了。
与欠拟合相反的情况是过拟合。过拟合问题是训练模型只能针对训练数据的输入有较好的输出,对于新的数据准确度就很低了。过拟合的产生现象就是训练样本得到的输出和期望输出基本一致,但是测试样本的输出和测试样本的期望输出相差却很大。过拟合产生的原因是训练过程中模型过度的学习训练数据中的细节和噪声,以致模型在新的数据上表现很差。过拟合的产生意味着训练数据中的噪声或者随机波动也被当作概念被模型学习了,而问题在于这些概念不适用于新的数据,从而导致模型泛化性能变差。如果在训练过程中模型的准确率非常高,但对于新样本数据的输出却非常差,就可以基本判定模型有过拟合现象了。
与拟合相关的还有另外两个相似的概念,即插值和逼近,插值指的是在已知点列并且完全经过点列中补插连续函数;逼近是已知曲线,或者点列,通过逼近使得构造的函数无限靠近它们。拟合、插值和逼近被称作是数值分析的三大基础工具。
6.泛化能力
与过拟合概念结合比较紧密的是模型的泛化能力,通常来说,过拟合程度越高的模型,其泛化能力就越差,泛化能力体现的是模型对于新数据的适应能力。什么是新数据?模型的输入数据与训练数据具有同一规律,我们把分布在训练数据范围以外的数据称为新数据。模型学习的目的是学到隐含在数据背后的规律,经过训练的模型如果能够对新数据的输出同样适用,可以说这个模型的泛化能力较强。
训练数据始终是有限的,泛化能力较好的模型,对于新出现的数据样本,其输出的质量比泛化能力较差的模型更精准;然而泛化能力不好的模型,一旦出现新样本数据,就会输出完全错误的结果。泛化能力和模型的精度是需要平衡的,模型在训练精度上可能不是最高,但却能适应多样化的新样本,如果泛化能力太强,就会导致模型的精准度出现问题。以手写数字为例,假定模型学习的是10个人的手写数字,精度高但是泛化能力差的模型,其表现就是模型能够很好地识别10个人的手写数字,但只能识别这10个人写得非常符合训练时提供的数字样式,对于这10个人以外所写的数字样式几乎无法识别,这样就会出现判定错误的情况。这就不是一个通用的识别模型,相应的模型的泛化能力也就不达标。相反,如果模型的泛化能力强,说明模型虽然不能百分之百地识别出这10个人所有的手写数字样式,但是模型可以接受其他非10人中的手写数字样式,因此这个模型的通用性更强。对模型的准确率和泛化能力的考量,需要AI产品经理根据实际情况进行确认,并不是说泛化能力越强的模型就越好。
7.模型的优化重构
新的样本总会一直出现,旧的模型就需要进行参数的调整,就像产品迭代一样,模型也需要优化迭代。因此,监督模型准确率的变化情况,也是AI产品经理的日常工作之一,一旦出现准确率持续下降的情况,就应该考虑重新对模型进行优化重构。简单的模型优化重构当然是使用新的样本数据重新进行训练学习,但现在也有一些训练方法,能够结合历史样本参数实现在线的参数调整,这是AI产品经理应该提前了解的一些常识。
总结来看,模型的训练过程可以分为以下步骤。
① 收集数据。数据是模型学习的基础,也是人工智能落地的前提条件,不同的产品或业务形态数据有不同的收集方法。例如,互联网的业务数据一般存储在数据库中,可以通过接口的方式获取;网络数据可以通过公开数据源或者网络爬虫的方式进行数据抽取;智能设备的数据则主要来自设备传感器发来的实测数据。
② 准备样本数据。计算机能够处理的数据格式有限,AI工程师需要将数据转换为计算机可处理的格式,如将离散数据转换为整数值、填充缺失数据为特定的值。AI产品经理可以在这一阶段检验数据集的数据质量,查看是否有含义不清的数据或脏数据,通过绘制图表等手段,了解数据的基本特征和分布规律,可以挖掘出有价值的信息提供给AI工程师。
③ 分析输入和输出。输入数据一般分为低维和高维输入数据,低维数据指的是数据的特征值低于三维,可以将这些数据点绘制出来,人工分析数据的特征,看是否有明显的分布模式,是否存在明显的异常值。例如,考察用户购买商品的概率,输入数据,包括用户的点击、收藏和加入购物车3个行为特征,就属于比较低维的特征。对于大于三维的高维数据,可以使用降维的方法将其压缩到三维以下,方便图形化展示数据,AI工程师分析数据的目的是确保没有垃圾数据,否则将降低算法的性能。同样是用户是否购买商品的研究,只要增加时间、用户性别等维度特征,就会形成多维数据样本,而且在分析数据的同时,AI工程师也需要明确输出数据是离散型的还是连续型的,这与模型的训练目标有关。
④ 训练模型。根据模型目标选择学习算法,模型从这一步才真正开始学习。对于有监督学习,AI工程师会将样本数据进行拆分,用作模型测试;对于无监督学习,因为不存在目标变量值,故不需要训练算法,则建立模型后会直接对模型进行测试验证效果,如果与业务方经验有强依赖,则需要业务方考察模型的质量。
⑤ 测试模型。对于有监督学习,在测试的过程中便会使用测试数据检测算法的准确率或者性能;对于无监督学习,运用机器学习算法,可以通过多个模型对比的方式检验算法的性能,也可以将输出结果交由业务方进行判断,有些模型会进入A/B测试阶段,以验证新模型的效果。
⑥ 模型上线。模型通过测试后,就会将模型能力包装转换为应用程序或者接口,提供给业务方调用,执行实际的生产任务,检验上述步骤是否可以在实际生产环境中正常工作。一般情况下会关注调用量的情况,如果调用量过大导致数据计算量增大,也会影响模型输出的稳定性。
3.2.3 经典的学习任务
在人工智能技术发展过程中,逐步形成了几类经典问题,分类(Classification)、回归(Regression)、聚类(Clustering)、推荐(Recommendation)、排序(Ranking)。实际上,在许多人工智能的产品应用中,当拆开某一个单元来看的时候,都是其中的某一类问题,例如,图像识别本质就是分类问题,无论技术应用在什么领域,模型本质其实并没有改变,根据不同的问题,也会有不同的训练模型。
1.分类问题
分类问题是人工智能应用中最常见的问题,从算法输出结果来看,一般分类模型输出的结果是离散的,常见的算法包括决策树和支持向量机等。分类问题也有很多应用,例如,人工智能在医疗领域的应用,医生使用分类算法诊断病人是否健康,将病人的检查结果分为不健康和健康两类,这可以简单抽象为一个医学诊断的二分类问题。
分类的算法有很多种,如图3-7所示的分类器,可以分为基本分类器和集成分类器,基本分类器是根据不同的算法原理进行划分的,而集成分类器指的是集合不同的基本分类器构建的新分类器。常见的分类器模型包括K近邻法、支持向量机、决策树、朴素贝叶斯、神经网络、逻辑回归。K近邻法、朴素贝叶斯、决策树是简单的分类算法,模型直观、实现容易。支持向量机与逻辑回归是较复杂但更有效的分类算法。
图3-7 分类器
(1)常见问题1:多分类问题
许多分类问题属于二分类问题,简单理解就是“非黑即白”的问题,如垃圾邮件过滤、正负向的情感分析均属于分类应用中的二分类问题。在大多数情况下,现实世界的分类问题会更复杂,并不是简单的二分类问题,而是更升一级的多分类问题。例如,模型依据用户对产品的评价数据进行分类,用户的问题分类一定是多种多样的,如产品质量、服务态度、物流等问题,这就是典型的多分类问题。AI产品经理需要知道应根据不同的应用场景来选择模型,但多分类的模型难度显然是高于二分类的模型,所以在评估需求时也要清楚分类问题的类别。
(2)常见问题2:不平衡数据
不平衡数据的产生是在建模过程中常见的现象,指的是不同类别的样本数据相差悬殊。若不同类别的样例数目稍有差别,通常对模型的建模影响不大,但若相差悬殊则会对学习产生困扰,这正是数据不平衡引发的问题。
对于不平衡数据,分类模型则可以用于检测异常情况。例如,在金融领域的风控模型,就需要通过模型找到信用不合格的人;在信用卡欺诈的检测中,合法交易远远多于欺诈交易,如果1%的信用卡交易是欺诈行为,则预测每个交易都是合法的模型就有99%的准确率,那么这个模型就很有可能检测不到任何欺诈交易。在不平衡数据中,通常稀有类会比较有意义,这时检测到异常的特征就更加重要了。
2.回归问题
回归分析研究的是通过自变量的给定值估计或预测因变量的均值,其研究的是因变量对自变量的依赖关系。通常来说,回归模型可用于预测、时间序列建模以及发现各种变量之间的因果关系,因此回归问题通常用来预测某一个值。简单来说,回归问题就是寻找自变量和因变量之间关系的函数。例如,现实生活中一个区域的温度和风速的关系,显然我们无法找到其中的函数关系,但可以通过收集样本数据,模拟温度和风速的关系,好的模型往往就可以比较准确地拟合实际的情况。
在日常工作中,我们实际上已经运用了简单的回归模型处理比较有规律的数据。在Excel表格中添加趋势线,实际上就是回归模型建立过程的基本应用,包括指数、线性、对数等拟合方式,如图3-8所示。
图3-8 Excel中运用的回归模型
在回归模型中,最常见的模型是线性回归和逻辑回归,线性回归通常是人们在学习预测模型时首选的技术。在该技术中,因变量是连续的,单个或多个自变量可以是连续的也可以是离散的,回归线的性质是线性的。线性回归使用的是最佳的拟合直线。Logistic回归可用于发现“事件=成功”和“事件=失败”的概率,当因变量的类型属于二元(1/0、真/假、是/否)变量时,就可以使用逻辑回归模型。
(1)常见问题1:线性和非线性
在一项工程进行中我们经常会听到这样的说法:这个问题是线性的或者这个问题是非线性的。什么是线性呢?线性指的是量与量之间按比例、呈直线的关系,当变量之间的函数在数学上的一阶导数为常数时,可以称这两个变量之间是线性关系;非线性关系则是指量与量之间不按比例、不呈直线的关系,当变量之间的函数在数学上的一阶导数不为常数时,两个变量之间就是非线性关系。需要注意的是,多元线性方程在平面中也不是呈直线的关系,但其本质上也是线性函数,因此我们不要只用呈现形式是否为直线来判定是线性还是非线性。
回归模型本质上就是通过训练算法来获得变量之间函数关系的,因此线性回归就是在完成具有多个自变量、一个或多个因变量之间的关系的线性建模时用到的解决方法。当然,在现实生活中,自变量和因变量的关系显然不是线性模式这么简单,当数据维数增多时,就会有多重共线性的影响,这时自变量和因变量通常是非线性函数关系,也就是非线性问题,则需要非线性模型来解决。非线性模型通常采用核函数方法,是对向量内积空间的扩展,使得非线性回归的问题在经过核函数的转换后可以变成一个近似线性回归的问题。神经网络就是典型的非线性模型,绝大部分非线性回归问题是可以通过“核函数+线性回归”的思路来解决的。
(2)常见问题2:什么是核函数
许多数据样本属于低维空间线性,不可分,采用核函数(Kernel Function)技术可以解决这类问题。核函数的作用是将数据映射到更高维的空间,通过核函数将非线性映射到高维特征空间,在更高维的空间中,数据可以变得更容易分离或更好地实现结构化,从而实现数据的线性可分。核函数在聚类、排名、主成分、相关性和分类方面都有所应用。
核函数一般用k表示,以下为常见的核函数。
① 线性核函数。线性核函数主要用于线性可分的情况。线性可分指的是两类样本可以用一个线性函数完全分开。线性可分的样本从特征空间到输入空间的维度是一样的,其参数少、速度快,对于线性可分数据,其分类效果很理想。因此,对于线性可分的数据样本,通常AI工程师会首先尝试用线性核函数做分类,看看效果如何,如果不理想再换别的核函数,其表达式为
② 多项式核函数。多项式核函数可以实现将低维的输入空间映射到高维的特征空间。多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或无穷小,计算复杂度会大到无法计算,其表达式为
③ 高斯核函数(RBF)。高斯核函数是一种局部性较强的核函数,它可以将一个样本映射到一个更高维的空间内。该核函数是应用最广的一个,无论其为大样本还是小样本都有比较好的性能,而且其相对于多项式核函数来说参数要少,因此大多数情况下在不知道用什么核函数的时候,会优先使用高斯核函数,其表达式为
④ Sigmoid核函数。Sigmoid核函数是一个在生物学中常见的S型函数,也称为S型生长曲线。采用Sigmoid核函数,支持向量机实现的就是一种多层神经网络。在信息科学中,当函数具备单调递增以及反函数单调递增等性质时,会被用作激活函数。对于AI产品经理来说,只需要了解Sigmoid函数是一个S型函数,能将变量映射到0和1之间即可,其表达式为
回归模型的应用是人工智能中数据智能的案例。天气预报中的温度预测是典型的回归分析问题,其模型背后是通过一系列采集的历史数据和实时数据来预测未来温度的变化情况,如图3-9所示。还有许多其他的预测也属于回归问题,如预测商品价格、未来几天的PM2.5、房价变化、基于财务报表分析股票波动等。从结果而言,回归模型的预测是对真实值的一种逼近预测。
图3-9 天气预报中的温度预测
3.聚类问题
将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。聚类算法属于无监督学习,它是发现隐藏数据结构和知识的有效手段。目前,很多推荐新闻类的应用都会将聚类算法作为主要的实现手段,通过大量未标注的数据构建强大的主题聚类是聚类算法的目标。聚类算法有很多类型,包括K-means基于密度的聚类、用高斯混合模型的最大期望(EM)聚类等。
聚类问题通常很容易与分类问题混淆。我们通常没有过多地区分这两个概念,认为它们都是将样本按照类别进行分组,认为聚类就是分类,分类也差不多就是聚类。但AI产品经理需要重点理解这个问题,避免犯低级错误。虽然聚类分析起源于分类学,但是聚类不等同于分类。分类问题通常是在既定的范围内给样本打上相应的标签,而聚类则是根据不同的特征构造方式,找到数据的特征进行聚类的过程。聚类与分类的差别主要在于聚类是使用无监督方式,通过数据的差异性进行归类,根据不同的标准会归纳很多类别;而分类指的是按照某种标准给对象贴标签(工程上也称Label),再根据标签进行区分归类。例如,通过人物头像区分男女,模型的输出一定是男或者女,我们已经事先知道需要分类的类别,这属于分类问题;而根据一组用户的购买数据特征直接划分用户群体,会发现有相似购买习惯的人群,而用不同的聚类维度和算法,可以生成不同的类别,这属于聚类问题。聚类方法可以应用在用户分割、欺诈检测的产品中。用户分割可以根据用户的消费行为习惯,将用户划分为不同的类别;欺诈检测则可用在金融领域中,发现正常与异常的用户数据,识别欺诈行为。
传统的聚类分析计算方法主要有如下几种。
(1)基于距离划分的方法
基于距离划分的方法是给定一个有N个元组或记录的数据集,通过分裂法构造K个分组,每一个分组代表一个聚类,其中K<N。大部分划分方法是基于距离的。给定要构建的分组数K,聚类方法首先创建一个初始化划分,然后采用一种迭代的重定位技术,通过把对象从一个组移动到另一个组进行划分。一个好的划分标准是:同一个簇中的对象尽可能相互接近或相关,而不同的簇中的对象尽可能远离或不同。使用这个基本思想的算法有K-means算法、K-Medoids算法和CLARANS算法。算法一般会根据向量之间的距离来确定划分效果。
(2)基于密度的方法
基于密度的方法主要用于克服由于基于距离的聚类算法只能发现“类圆形”的聚类的缺点(类圆形指的是数据分布呈现多个圆的分布)。基于密度的方法对于发现任意形状的簇有较好的效果。这个方法的指导思想:只要一个区域中的点的密度大于某个阈值,就把它加到与之相近的聚类中去。代表算法有DBSCAN算法、OPTICS算法和DENCLUE算法等。
(3)基于层次的方法
层次聚类方法对给定的数据集进行层次分解,可以是基于距离的或基于密度的,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。例如,在“自底向上”方案中,初始时每一个数据记录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。代表算法有BIRCH算法、CURE算法和CHAMELEON算法等。
(4)基于网格的方法
基于网格的聚类方法是首先将数据空间划分为有限个单元的网格结构。基于网格的方法比较适用于很多空间的数据挖掘问题,通常都是一种有效的方法。基于网格的方法的优点是处理速度很快,通常这与目标数据库中记录的个数无关,只与把数据空间分为多少个单元有关。代表算法有STING算法、CLIQUE算法和WAVE-CLUSTER算法。
(5)基于模型的方法
基于模型的方法是指给每一个聚类假定一个模型,然后寻找能够很好地满足这个模型的数据集。通常,目标数据集具有由一系列的概率分布所决定的特征,基于此,能够找到数据点在空间中的密度分布函数。对于这类数据,可以使用基于模型的方法进行聚类,通常有基于统计的模型和神经网络的模型的聚类方法。
4.推荐问题
推荐问题是当前互联网产品中常见的问题,各种类型的互联网产品都期望通过用户行为数据进行精准推荐,以达到最佳的营销效果。在推荐算法中,协同过滤是经典算法。
当系统想要向某个用户推荐某商品时,最常见的做法就是找到与其具有相同爱好的用户,分析其行为,或者关注那些与该用户之前购买物品相似的商品,并推荐相似的产品,这就是协同过滤的基本思路。协同过滤有两种基本算法,分别是基于用户的协同过滤算法和基于商品的协同过滤算法。
基于用户的协同过滤算法就是我们找到相似的用户群体,然后将某个属性下用户群体喜欢的商品或内容推荐给同一属性群体的其他用户,用户的购买、收藏和评价等行为可以表征用户的喜好程度,从而将这种主观的用户感受的行为转化成可度量的评分,然后再根据用户大规模的行为计算出其对商品的喜好程度。不同用户对相同商品或内容的喜好程度就是一个多维的向量,据此可以计算用户之间的相似关系,然后在有相同喜好的用户间进行商品推荐。例如,用户A和用户B都购买了X、Y商品,并且都给出了好的评价,那么,在模型中我们就会将用户A和用户B划分为同一类用户,模型会认为用户A购买的商品同样适用于用户B,因此会将商品Z推荐给用户B,如图3-10所示。
图3-10 基于用户的协同过滤算法
基于物品的协同过滤算法与基于用户的协同过滤算法原理是一致的,就是在商品和用户之间进行互换。基于物品的协同过滤算法是按照物品的维度,我们可以通过不同用户对不同物品的评分或评价等行为,获得物品之间的关系,从而对用户进行相似物品的推荐。在用户购买商品模式中,购买商品X的用户A同时会购买商品Z,说明商品X和商品Z的相关度较高,当用户B也购买了商品X时,可以推断其也可能有购买商品Z的需求,于是可以将商品Z推荐给用户B,如图3-11所示。
图3-11 基于物品的协同过滤算法
在实际的推荐算法中,当然不会简单地使用协同过滤算法,系统还可以根据物品成对出现的关系进行推荐。当然,“深度学习”也被引用于推荐问题中。如YouTube在2016年公布的基于“深度学习”而做的个性化的推荐算法中,个性化推荐系统大致可以分为三个层次。以电商推荐场景为例,第一层次是用户购买过什么,能够给用户推荐类似的商品,本质是协同过滤算法;第二层次推荐的是用户需要并且也适合用户的其他商品;第三层次是能够基于用户的性格、兴趣等个人特征,为用户推荐意想不到却符合其心意的商品。推荐算法的数据量和计算量其实非常大,并且还会存在稀疏矩阵的问题(即数值为0的元素数目远远多于数值非0的元素),毕竟大部分用户只能对一小部分商品有喜好评价。
推荐算法在电商行业产品的典型应用就是“千人千面”,它是淘宝在2013年提出的新的排名算法。依靠淘宝大数据及云计算能力,我们能从细分类目中抓取特征与买家兴趣点匹配的商品,展现在目标客户浏览的页面上,从而帮助卖家锁定真正的潜在买家,实现精准营销,如图3-12所示。例如,淘宝能够根据用户的地域特征设计不同的商品展示内容,如在冬季,向气温较高的南方地区优先推荐单鞋商品,而向气温较低的北方地区则优先推荐冬靴。
图3-12 “千人千面”算法的原理
有针对性的个性化推荐不仅是电商产品精细化运营的手段,甚至在政治、经济、文化等领域也有所应用。随着心理学和计算机研究的不断发展及两者的深度融合,如何有效掌握用户的性格特征并融入个性化推荐场景中值得研究,但是基于性格的个性化推荐算法的研究仍然处于初步阶段,而推荐算法还会引发数据滥用的问题,也会被大众诟病。2019年1月1日起开始施行的《中华人民共和国电子商务法》对此有明确规定,因此实际操作中AI产品经理需要谨慎。
5.排序问题
排序学习是搜索、广告的核心方法,在互联网的迅速发展过程中,搜索引擎扮演着重要的角色。让用户在海量的信息中找到自己想要的信息,这其中离不开排序算法的功劳。传统的检索模型靠人工拟合排序公式,并通过不断地实验确定最佳的参数组合,效率较慢。随着影响相关度的参数逐步增多,传统的打分机制逐渐不能满足这方面的要求,而使用机器学习排序与此思路不同,机器学习能够通过机器自动学习找到最合理的排序公式,人仅需要给机器学习提供训练数据即可。随着算法的进步,以深度学习和强化学习为代表的人工智能技术,同样给搜索排序带来了新的变化,主要成果体现在语义搜索、搜索个性化和智能决策3个方面。
以搜索引擎算法发展更新为例,互联网的搜索技术也随着计算方式的不同,经历了三代发展的历程。
① 第一代搜索技术。将互联网网页看作文本,采用传统信息检索的方法。
② 第二代搜索技术。利用互联网的超文本结构,根据计算网页的相关度与重要度排序,代表的算法有PageRank等。
③ 第三代搜索技术。有效利用日志数据与统计学习方法,使网页相关度与重要度计算的精度有了进一步的提升,代表的方法包括网页重要度学习、匹配学习、话题模型学习、查询语句转化学习。
正是因为搜索引擎的发展,对于某个网页进行排序需要考虑的因素也越来越多,包括网页的PageRank值在内,还有查询和文档匹配的单词个数、网页URL链接地址长度等都会对排序产生影响,因此需要更加智能的排序模型。机器学习算法更适合采用很多特征进行公式拟合,排序学习可以是监督、半监督或强化学习,通常用于构建信息检索系统的排名模型。常用的排序学习方法主要有逐个的(PointWise)、逐对的(PairWise)和逐列的(ListWise),这三种方法的主要区别在于损失函数,不同的损失函数执行不同的模型学习过程和输入、输出空间。随着搜索引擎的不断发展,排序算法也从检索时代、大规模机器学习时代、大规模实时在线学习时代演进到深度学习与智能决策时代。