经常用得到的机器学习算法
孤立森林(Isolation Forest,IF)是一个基于Ensemble的快速异常检测方法,具有线性时间复杂度和高精准度,是符合大数据处理要求的state-of-the-art算法。其可以用于网络安全中的检测,金融交易欺诈检测,疾病侦测,和噪声数据过滤等。
该算法用于挖掘异常数据的无监督模型,利用坏用户与规律相比的差异来划分。每次随机选取一定数量的样本训练一棵iTree树,任选特征顺序与分割值,重复多次得到iForest森林。
将全量样本沿着每棵iTree达到叶子节点,每个用户在iForest上距离根节点的平均路径长度作为客户异常评分,路径长度越短越可疑。孤立森林擅长分析每个维度对异常用户划分的影响,极值单侧分布的变量更容易区分异常用户,使结果更加精确。但是,孤立森林无法从整体上分析好坏用户的差异,且算法复杂度较高,结果解释性较低。
决策树算法(Decision Tree,DT)是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。
本质上决策树是通过一系列规则对数据进行分类的过程。决策树方法最早产生于上世纪60年代,到70年代末。由J Ross Quinlan提出了ID3算法,此算法的目的在于减少树的深度。但是忽略了叶子数目的研究。C4.5算法在ID3算法的基础上进行了改进,对于预测变量的缺值处理、剪枝技术、派生规则等方面作了较大改进,既适合于分类问题,又适合于回归问题。
决策树算法构造决策树来发现数据中蕴涵的分类规则.如何构造精度高、规模小的决策树是决策树算法的核心内容。决策树构造可以分两步进行。第一步,决策树的生成:由训练样本集生成决策树的过程。一般情况下,训练样本数据集是根据实际需要有历史的、有一定综合程度的,用于数据分析处理的数据集。第二步,决策树的剪枝:决策树的剪枝是对上一阶段生成的决策树进行检验、校正和修下的过程,主要是用新的样本数据集(称为测试数据集)中的数据校验决策树生成过程中产生的初步规则,将那些影响预衡准确性的分枝剪除。
该算法可用于信息分类工作,将关键信息分为不同类别;也可以用于人脸识别,对人的面部特征分类,例如鼻梁高低,获取特征数据后,与数据库内数据匹配,进而识别。
人工神经网络(Artificial Neural Network,ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。
神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。最近十多年来,人工神经网络的研究工作不断深入,已经取得了很大的进展,其在模式识别、智能机器人、自动控制、预测估计、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。
种子k均值聚类算法(Seeded k-means Clustering Algorithm),简称SKM,是利用好坏用户人群区分度较高的特点,将用户人群分为两类,使同一类中的用户相似度较高,而不同类间用户的相似度较低。选取用户数量少的类作为异常客户,将每个异常用户到正常用户类中心点的距离记作“用户异常评分”,评分越高,用户越可疑。聚类分析擅长从多个维度综合分析用户之间的差异,分布在极值两端的变量对模型结果的影响大,运算效率高,结果可解释性好,但是容易忽略单个指标的决定性作用,且划分结果不够精确。
支持向量机(Support Vector Machine,SVM)可以快速处理大量的数据,用于生物学分类问题,例如人类等高等真核生物基因剪接位点识别问题;也可以通过构造一系列超平面,将大规模的图片进行分类。
朴素贝叶斯(Naive Bayes,NB)对大量的数据的分类效率稳定,常用于医院给病人分类的系统,也用于新闻网站的新闻分类。
k-近邻(KNN)算法常用于手写数字识别领域,准确率非常高。处理数据时,先将训练数据用矩阵储存,之后再转化为向量。然后将测试数据输入模型,输出所写数字。
逻辑回归(Logistic Regression,LR)银行在进行信用评估时常使用LR算法,例如在客户填写信息表,银行从表和第三方信息源处获得客户的信用信息,并将此数据作为输入,信用值作为输出,经过LR计算确认该客户的信用等级。
深度学习
“深度学习”(Deep Learning)一词最初于1986年被引入机器学习概念,2000年时又被用于人工神经网络。深度学习由多个层组成,以学习具有多个抽象层次的数据特征。
深度学习允许计算机通过相对简单的概念来学习复杂的概念。对于人工神经网络,深度学习(也叫分层学习)是指在多个计算阶段中精确地分配信用,以转换网络中的聚合激活。
为了学习复杂的结构,深度架构被用于多个抽象层次,即非线性操作,例如人工神经网络具有许多隐藏层。总的来说,深度学习是机器学习的一个子领域,使用多层次的非线性信息处理和抽象,用于有监督或无监督的特征学习、表示、分类和模式识别。
深度学习是机器学习中神经网络算法的扩展,它是机器学习的第二个阶段——深层学习(第一阶段为浅层学习),其中深度是指神经网络的层数。
因为机器学习中的单层感知机只适用于线性可分问题,而无法处理线性不可分问题。但深度学习中的多层感知机可以实现,它针对浅层学习的劣势——维度灾难(特征的维度过高,或者无法有效表达特征),能够通过它的层次结构、低层次特征中提取高层次特征,弥补浅层学习的不足。
神经网络是深度学习中的一种算法,它也是深度学习的载体。它包含输入层、神经元和输出层,最早的单层神经网络又叫感知机,在结构上它由输入层、隐藏层和输出层组成,连接各层之间的是权值。但单层神经网络有局限,它不可以处理非线性可分的问题,而且如果增加层数,则计算量会迅速增大。后来两层神经网络被提出用于解决非线性可分问题,为减少计算量,有人提出BP算法。其中BP算法是一种由后向前计算梯度、更新权值的机制,它基于高等数学中的链式法则。
深度神经网络(DNN)是指具有两层以上的神经网络,它可以通过增加层数或者增加每层的单元数,来存储更多的参数,从而构建更精密的模型。它的训练是基于贪心算法的逐层训练,也就是训练好上一层之后再增加下一个层,把上一层的输入作为下一层的输出。通过梯度下降方法来更新权值。
但DNN会随着层数的增加而记忆退化,也就是出现梯度消失或梯度爆炸等问题,为更好的记忆参数,有人提出“循环神经网络(RNN)”的概念。
隐层中的神经元基于时间传递,即上一时刻的隐层中的参数输出,作为下一时刻隐层中的输入。RNN的训练主要基于BPTT算法,它的局限在于,长期依赖问题。当它处理那些需要前后联系的信息的问题时,效果会变得差。比如,机器翻译里的长句翻译,若是基于RNN构建模型来训练,翻译效果极差。为了解决该问题,有人提出长短期记忆(LSTM)。
将RNN中的隐藏层中的神经元替换为更复杂的神经元结构——增加了一些门结构,如输入门、输出门、遗忘门。长短期记忆网络(Long Short Term Memory,LSTM)是基于循环神经网络(Recurrent Neural Network,RNN)的一种优化神经网络模型,其优势是可以处理一些依赖长期历史记忆的场景,这是传统的RNN模型不具备的学习能力。
LSTM的核心是在RNN中加入了一个判断信息是否有用的处理器,包括输入门、遗忘门、和输出门,符合模型条件的信息会被留下,其他信息被遗忘门略去。把LSTM网络应用于交易链场景中可以更好地处理并记录交易行为在时间轴上的关联,有效区分异常的交易行为。
卷积神经网络(Convolutional Neural Network,CNN)最早被用于图像处理和识别的场景中,主要由卷积层和池化层构成。卷积层是卷积神经网络的核心,通过固定大小的卷积核的移动构造局部连接,利用参数共享大小减小网络模型。
池化层通常夹杂在卷积层之间或者之后,通过池化操作提取变量特征,提高计算效率的同事防止过拟合。在用户交易分析中,由于交易链与图都具有相关性,并且距离越近相关性越大,因此可以通过选取相关交易行为的办法,将某一时刻的一维交易链转化为二维交易链图,再利用卷积神经网络训练找出异常用户行为。
CNN是一个多层神经网络,它解决了深层神经网络中模型复杂、参数过多问题。它由输入层、特征提取层、特征映射层等组成。
CNN通过三种机制——局部感受野、权值共享、时间/空间亚采样,来保证信息的稳定性——尺度、位移、形状不变。特征提取层是一个卷积层,它通过卷积运算来强化特征信息,同时降低噪音。特征映射层是个下采样层,它通过对此图像进行子抽样,来减少信息量从而降低噪音。
卷积神经网络通过感受野和权值共享来减少参数的个数,从而降低训练模型的训练成本。普通的神经网络是通过全局来感受外界图像,而卷积神经网络是通过局部感受野来感受外界图像,第一层的神经元综合起来传递给高层,然后高层得到全局信息。通过这种方式可以减少权值参数。
受限波尔兹曼机(RBM)由可视层和隐藏层两部分组成,它是基于能量模型和波尔兹曼网络。能量模型是一种基于状态来定义状态的能量的模型,而波尔兹曼网络是一种随机网络,它的输入层可以计算隐层节点的值得概率,输出层也可以。
隐藏层和可视层通过权值连接,而同层之间没有连接。所有的隐藏层和可视层都满足波尔兹曼分布,所以可以通过输入可视层来得到隐藏层,然后由隐藏层得到可视层,根据偏差来调整参数直得到的可视层与原来的可视层一致为止,这时候的隐藏层便可以作为可视层变换后的特征。
增加隐藏层的数量便得到深度波尔兹曼机,把靠近可视层的部分改为有向图模型,远离可视层的部分仍为受限制波尔兹曼机时,便可得到深度信念网络(DBN)。DBN是一种生成模型,它由多个RBM组成,训练时通过逐层传递的方式来计算权值参数,这样便于学习权值。
自编码网络(Auto Encoder,AE)是一种适用于无监督场景下的深度学习网络模型,其主要用途是将数据压缩,在需要的时候用损失尽量小的方式恢复数据。在自编码网络中,输出层神经元的数量与输入层神经元的数量完全相等,通过控制隐藏神经元的数量达到压缩数据的目的。在反欺诈场景中,由于欺诈用户与正常用户在行为上存在较大差异,对于整个数据集来说是冗余信息。
自编码网络目前还没有在银行反欺诈领域中大规模应用,但是对数据量和计算环境的高要求有待进一步探索。深度自编码器(AE)是神经网络(NN),其中输出即输入。AE采用原始输入,编码为压缩表示,然后解码以重建输入。在深度AE中,低隐藏层用于编码,高隐藏层用于解码,误差反向传播用于训练。