开发者学堂课程【Cassandra数据库入门与实战:DBA在云浪潮下的AI技能进化之路】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/784
DBA在云浪潮下的AI技能进化之路
(面向DBA的AI技能提升系列课程第二讲)
内容简介
一、无监督学习之聚类算法
二、无监督学习之降维
三、无监督学习之异常检测
四、AI实践课:AutoML
AI和数据库的区别在于:AI主要有三个要素,即数据,算法和算力;数据库主要是一个和DBA强相关的场景,也是整个公司的核心资产。
DBAI:面向未来的职业技能再进化由传统dba进化而来的未来职业新物种。在未来,DBA必然会和AI有融合,原因如下:云计算,大数据,AI发展势头旺盛;AI已成国家级发展战略,将诞生大量发展机会;DBA是离数据及业务最近的人。由此推测,未来高校在数据库,AI相关专业也将会有相互融合的课程。对于DBA与AI的融合之路,课程将从以下几个方面开展。机器学习-监督学习,深度学习-CNN, AI实战课。包括数据库在未来也会和AI有一定融合。
与Cassandra数据库也会有融合。
下图为AI分类
下图为AI三要素
一、无监督学习之聚类算法
无监督学习,也就是无标签数据。训练集和数据集都会有标注的数据,每输入一个x的特征值,最终会输出y值,而y值就就是标签。那么无标签数据也就是只有x的特征值数据而无法得到具体的y值。这样的算法就代表将数据输入到算法时,需要从数据中由算法来找出这些数据的内在结构(规律)。
图示数据看起来可分成两个分开的典籍(称为簇)一个能够圈出这些点击的算法(对数据进行分组),就被称为聚类算法,此外还有其他类型的非监督学习算法。可以找到其他类型的结构或模式,而不只是簇。
应用场景举例:
市场分割:在数据库中存储了许多客户信息,将他们分成不同的客户群。以对不同类型的客户分别销售产品或服务,就可以利用聚类算法来进行处理。
社交网络分析:例如用户经常同哪些人联系,而这些人又经常给哪些人发邮件,跟哪些人联系,由此找到关系密切的人群。
使用聚类算法来更好的组织管理数据中心,识别哪些计算机经常协作工作,用于重新分配资源。布局网络优化数据中心。
利用聚类算法了解星系构成。
聚类算法典型的名称叫K-Means,也就是K-均值,是普及的聚类算法。
将未标记的数据集中的数据,分门别类的到不同的组中。就某一组数据,该组数据的质心(均值)则用来表示该组。例如目前有大量数据用二维标注到图表中,要把这些数据分成两大类,此时可运用K-Means来进行划分。算法的原理就是先随机初始化k个聚类中心,即从数据中随机取两个值作为这两个类的聚类中心;第二步,将数据集中的每个数据关联到其中一个类,分别计算出该数据与距离每个中心点的距离(相似度),将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。以数据距离聚类中心的长度作为判断标准来判断数值属于哪一个类。通过计算每一个点和聚类中心的距离,就可得知该点属于哪一个聚类中心;第三步,分别计算每组的平均值将该组所关联的中心点移动到此平均值的位置。
所有的点都存在质心,找到每一个点的质心作为最优点,接下来进一步的把所有点重新做计算,找到新的分类从而重新做分类;第四步,重复步骤二步骤三直至中心点不在变化。
K-Means代价函数就是辅助评测在聚类算法中下一步的选择是否正确。其本质就是最小化所有的数据点与其所关联的聚类中心点之间的距离之和。第一个循环为了减少因为归类不合理导致的代价,第二个循环为了减少中心点所带来的代价。
由此可见,每一次的迭代过程一定会是每一次迭代都在减少代价函数,而如果代价函数增加,则说明函数出现错误。此时会存在局部最优问题,其解法就是多次运行K-Means算法,每次都重新随机初始化,分别计算出代价函数,选择代价函数最小的作为最终结果。
代价函数如下:
由于数据没有任何标注,理论上无法确定该分类的数量,于是就存在肘部算法和人工选择。人工选择就是依据所解决问题的需要来确定种类的数量k。肘部法则也就是使代价函数下降的很快的k。在计算中,随着k的增长代价函数会下降的很明显。,到达一定k值后,代价函数变化不明显,于是这个k就是所需确定的数值。
以下为相似度的算法(不只是距离):核心目的就是找到最为接近中心点。
二、无监督学习之降维
当特征值很大的时候,计算不方便,此时就需要降维。
降维就是从二维投影到一维,从三维降低到二维,建立一个平面,通过三维向量投射到二维平面上降至二维的特征向量。
利用场景为压缩数据,节省算力:通过一些数据处理手段将特征归并。通过降维的手段,可把任意维度的数据降低到任何想要的维度,例如将1000堆的特征降到100为尤其是处理海量特征时,又无法清晰取舍个特征的时候,降为是一种很好的方法。
降维的原理思考并不是简单舍弃一些特征值,而是对的个特征一视同仁。只是在降维后,相关特征值的某些细节被舍弃。
优点是不需要使用者深入理解个特征的含义,把特征一视同仁,但同时这也是最大的缺点,某些关键特征的细节信息有可能也在降维过程中被舍弃,无法做出较优秀的推理,从而导致无法训练出很好的模型,故需慎重使用降维只有在有必要的时候,例如算法运行太慢或耗费太多资源时,才需要考虑采用降维方法。
主成因分析PCA:
PCA:把所有的数据都投射到一个方向,向量(vector Direction)并且投射的平均方。误差能尽可能的小,方向向量是一个经过原点的向量,而投射误差是特征向量。向该方向向量做垂线的长度。将n维数据降至kv数据的问题找到相量,使得总的投射误差最小。
步骤:
第一步,特征缩放,计算出各特征的均值,然后令x=x-μ,如果个特征值的跨度在不同数量级上,还需将除以标准差s,即该特征值的范围max-min。
第二步,计算协方差矩阵。公式如下:
第三步,计算协方差矩阵的特征向量在octave里可以利用奇异值来分解来求解。
上式中的U是一个与数据之间最小投射误差的方向向量构成的n乘n矩阵,如果希望将数据从n维降至kv,只需要从优中选取前k个向量获得一个恩城k维度的矩阵,然后计算获得所需的新特征向量。
三、无监督学习之异常检测
异常检测的定义给定正常数据集,构造一个模型,预测新的数据是不是异常的及这个测试数据属于该组数据的几率是多少,在工业上的应用较广, 可用于构造模型,汽车零件的品质率。
如图在蓝色圈内的数据属于该组数据的可能性较高,而离圈很远的数据,其属于该组数据的可能性就较低,这种方法称为密度估计表达式如下:
应用场景:
一,欺诈检测行为分析。例如在线采集而来的有关用户数据,特征向量中可能会包含如用户多久登陆一次访问过的页面,在论坛的发帖数量,甚至是打字速度等,根据这些特征构建一个模型,用这个模型来识别那些不符合该模式的用户。
二,异常值检测系统监控。如用于数据中心系应用系统采集内存,磁盘,cpu,网络等的负载及资源使用率,根据这些特征,可以构建一个模型,用来判断某些计算机或系统是不是有可能出错了。
异常检测算法:高斯分布正态分布。例如,人的身高良品检测就是一个高斯分布和正态分布,是固定的一个范围。如果数据落在了高斯分布之外,就被认为是一个异常数据。算法公式如下:
均值就代表样本数据的平均值,方差代表样本值和平均值之间的方差值。求出方差值和均值之后,就可以构造一个p(x)。
异常检测算法:特征处理
思考:异常检测,以假设特征符合高斯分布,如果数据分布不是高斯分布呢?
运用到的方法是,如果非高斯分布异常,检测算法也能工作,但是最好是将数据转换为一个高斯分布,例如通过对数函数等。
有一个常见的问题,异常数据可能也会有较高值,因此被算法认为是正常的,在这种情况下,需要分析那些被算法错误预测为正常的数据,从问题中发现需要增加的一些新特征,从而更新算法,更好地进行异常检测。
也可以将一些相关的特征进行组合,来构造新的更好的特征(异常数据在该组合特征下的直译长的大或小),例如在检测速数据中心计算机状况的例子中,可以用cpu负载的网络贷款的比例作为一个新特征,通常网络带宽高则说明业务流量大,cpu负载也会变高,异常情况下,如果该值异常的大或小变,很有可能意味着该服务器可能出现问题了
异常检测模型训练及评估
由于没有y值的输出,无法使用损失函数评估。
异常检测算法是一个非监督学习算法,也就无法向监督学习那样,根据预测结果和样本中的变量y值来构建损失函数,并以此评测算法的有效性了,需要另一种方法来检测算法是否有效。该方法是从已有的数据集入手,从其中选择一部分正常的数据构建训练集,然后将剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集,例如有1万台正常引擎数据,有20台异常引擎数据可以这样分配数据:6000台正常引擎和数据作为训练集2000台正常引擎和十台异常引擎的数据作为交叉检验及2000台正常引擎和十台异常引擎的数据作为测试集。分配好数据之后,评测方法如下:
1.根据测试及数据,计算出各特征的平均值和方差,构建出p(x)函数
2.针对交叉检验及尝试使用不同的ε值作为阀值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择适合的ε。
3.选定ε后,针对测试集进行预测,计算异常检验系统的F1值或者查准率与查全率之比。
在一些方面中,异常检测和监督学习有相似之处,将异常检测中的正向极富像样本补充y值就可以构建出完整的标注的数据集,何时使用,异常检测,何时使用监督学习成为了值得思考的问题。
异常检测是非常少量的正向类(异常数据y=1),大量的负向类(y=0);监督学习,同时有大量的正向类和负向类。异常检测许多不同种类的异常,非常困难,根据非常少量的正向类数据来训练算法;监督学习有足够多的正向类实例足够用于训练算法,未来遇到了正向类实例,可能与训练集中的非常近似。异常检测,未来遇到的异常可能予以掌握的异常具有许多不同 点,例如欺诈行为检测生产,例如飞机引擎检测,数据中心的计算机运行情况等。而监督学习可用于邮件过滤器,天气预报,肿瘤分类。
选用异常检测的原则是异常样本的数量极少,甚至有时候是零或异常的种类及情况很多,并且很难确定,难以预知有太多没见过的,不同的异常类型,那么对于这类问题,通常应该使用异常检测算法。例如良品率很高时可以采用异常检测。
四、AI实践课
AI原理的理解较为困难,但仍值得学习。在实际运用过程中,只有理解了AI原理之后,才能正确的选择每个实例所适用的解决方法。AI没有具体模型和方法,理解原理后可以更加容易选择使用的方法。许多公司发展到如今,在这个数据大爆炸的时代,公司已收集了海量数据,但苦于没有适合的数据加工方法,海量数据不仅没为公司创造出价值,反而成为了成本负担,则可以采用AI方法论或AI工具。
ML本质:机器学习相当于寻找一个函数。
第一步:收集数据,提取特征。
第二步:函数集合(依据经验选择模型)。
第三步:定义模型中函数的好坏。
第四步:找出最佳函数及最优参数。
然而,人工智能中目前依然涉及大量人工,如数据准备:数据收集,数据清洗,数据标注等,数据加工:数据特征提取,模型选择,参数调节模型评估。由此,自动化机器学习或深度学习应运而生:AutoML,AutoDL。AI的目的就是每个人都能通过AI来创造价值。