学习笔记2

机器学习互联网业务安全实践

互联网业务安全简述(第一章)

现状

业务安全事件有着以下的特点:

效率高、范围广

高度产业链化

危害严重,社会影响较大

如何应对挑战

1.对互联网业务安全预警信息实施监控【这是进行互联网业务安全防护的先决条件】

2.提升业务安全防护技术【这是互联网业务安全防护的基石】

3.培养业务安全相关的专业技术人员【这是业务安全防护的核心】

机器学习入门(第二章)

相似性

范数

范数(norm)是一个函数,主要用于度量向量或者向量空间的大小和长度。

在泛函分析与计算数学中,它都扮演着特别重要的角色【比如在数值代数、研究数值方法的收敛性、稳定性及误差分析问题】。

例如在赋范性空间中,范数的定义需要满足三个条件:①非负性②齐次性③三角不等式

向量范数

定义:若V是数域P以上的线性空间,而且对于V的任一向量x,若实值函数||·||:$\R^n$→R满足如下条件:

(1)∀x∈$\R^n$,||X||≥0;如果x=0,则||x||=0

(2)∀$\alpha$∈R,x∈R,有||$\alpha$x||=|$\alpha$|||x||

(3)∀x,y∈$\R^n$,||x+y||≤||x||+||y||

则称||·||为向量范数,其中$\R^n$表示n维向量空间。

向量范数是对向量大小的一种度量,可以形象地理解为向量的长度

以下是几个有代表性的n阶向量范数

1.L1=|x1|+|x2|+……

这里的L1表示向量x各元素的绝对值之和

2.L2=$\sqrt{x_1^2+x_2^2+……}$​

L2表示欧氏空间中的点到原点的距离,也叫欧式范数或者弗罗贝尼乌斯范数

3.Lp=($(|x_1|^p+|x_2|^p+……)^\frac{1}{p}$

通过1、2、3可以看出L1和L2以及Lp是相同的形式。

4.L∞=lim( $\sum{(|p_i-q_i|^k)^\frac{1}{k}}$

L∞表示向量x的元素中绝对值的最大值,称为无穷范数,也是一致范数(可以理解为Lp意义下的范数的极限)

PS:可以这样理解,在三维空间里,如果p是∞的时候,它会表示成一个正方体;如果p为2,则是一个球;p=1时为一个锥形;o<p<1时为一个类似陀螺的形状;p=0时为一条线

2-1

矩阵范数

定义:设A为mXn矩阵,$||·||\alpha$是$R^m$上的向量范数,$||·|| \beta$是$R^n$上的向量范数,则定义矩阵范数为:

||A||=max||x|| $\beta$=1||Ax||$ \alpha$

矩阵范数具有与向量范数相似的性质,区别在于向量范数的性质包含在定义的条件中,而矩阵范数由于包含了向量范数的定义,因此它有如下的性质:

(1)||Ax||$\alpha$≤||A||·||X||$\beta$

(2)||$\lambda$A||=|$\lambda$|·||A||

(3)||A+B||≤||A||+||B||

(4)||AD||≤||A||·||D||

其中,A、B为mXn矩阵,D是nXp矩阵,$\lambda$为实数,X∈$R^n$

同样的,下面列出几个有代表性的n阶矩阵范数:

(1)||A1=maxj $\sum_{i=1}^m{|a_{ij}|}$,称为列范数

(2)||A||2= $\sqrt{\lambda A^HA}$,$\lambda A^H$A表示$A^H$A的绝对值的最大特征值,||A||2又称为谱范数

(3)||A||=maxi$\sum_{j=1}^n{|a_{ij}|}$,称为行范数

其中A=(aij)mxn

模型(第三章)

账户业务安全(第六章)

账户安全保障

对于用户来说,账户安全涉及用户个人隐私信息的安全、用户体验以及资金安全等方面

对于平台来说,账号安全涉及广告投放、流量购买、营销活动以及战略决策等方面

横向来看,账户安全主要从两个环节来保障,一个是账户注册环节,另一个是账户登录环节

纵向来看,维护账户安全的手段主要有网络层防护、数据层防护以及业务层防护,相应的手段有WAF、设备指纹、验证码、生物探针、数字证书、安全SDK等

这些防护手段从技术原理来看,可以分成两大类,一类是加密/解密,即判断账户的请求是否被篡改;第二类是人机识别,即甄别账户的请求是来自人来时来自机器的操作。

注册环节

一般来说,注册环节是账户安全的第一入口

因为互联网公司需要保证独立访客量(UV)的增长,所以会通过各种运营活动来吸引新用户(拉新)。这些运营活动最常见的就是注册新用户返回红包这类有返利的活动,而许多有心人士会通过建立虚假账户将这些返利取走。

一般来说,黑灰产是通过一下三种方式进行注册账号的

1.机器注册:通过软件自动化大批量进行注册,这种手段主要涉及三个方面:账号注册软件、打码和解码平台以及IP地址切换器。

2.半人工注册:通过软件加人工手动操作的方式,来提升人工注册的效率,相当于使用软件来辅助人工注册。

3.人工注册:通过大量兼职人员手动注册账号,这种方式效率最低,但安全性最高。

注册方式 效率 安全性
机器注册
半人工注册
人工注册

应对方法:

1.梳理各个注册渠道的入口,加强对注册数据的监控,如果某个注册渠道的数据波动较大,就说明可能存在问题

2.留存好日志数据,将其作为数据分析的依据,依靠大数据技术来识别垃圾账号注册的蛛丝马迹

3.在注册过程中采取安全防护措施,如验证码、语音验证、短信上行验证等

4.监控外部黑灰产的数据

登录环节

登录环节进行业务安全防控的方法大体可以分为三类:

1.基础安全技术:常见的基础安全技术手段有数字证书、安全控件、虚拟机和模拟器检测、数据加密/解密等

2.人机识别技术:主要依托于生物探针技术来实现(通过登录环节收集到的数据【包括但不限于基础网络数据、用户操作数据等】来分析当前行为是否是机器人的行为)

3.安全验证技术:常见的手段主要有验证码(数字、图形、计算题等各种形式)、滑块、短信上行/下行验证等。

PS:所谓的上行和下行就是你发和你收的意思

聚类算法在账户安全中的应用

特征主体的聚集性是业务安全中最常利用的特性之一。

比如:同一个IP地址注册大量的账号,或者同一台设备注册大量的账号,这两种行为都可以归结为在单一维度下存在高度聚集性,从业务安全的角度可以认为该聚集性是有问题的。

K-Means算法

这是一个非常基础的聚类算法,其时间复杂度与数据规模线性相关,计算量小,适用于大规模的数据。

如何让这些点(指的是平面上距离相近的点)自主归类?书本给了一个例子:

假设现在有K个类别,将每个点与这些类别的代表(比如中心点)做相似度判断,相似度较高的点被归为一类。

那么如何进行相似度判断

在自然语言处理中可以使用TF-IDF(Term Frequency-Inverse Document Frequency)作为点的表示,使用余弦值作为衡量相似度的指标,或者直接使用欧氏距离作为衡量相似度的指标。

对于不同的数据,假设空间和维度可能需要选择不同的衡量指标,甚至可以使用信息论中的互信息(Mutual Information,MI)、信息距离交换(Variation of Information Distance)、KL散度(Kullback-Leibler divergence)等作为相似度的衡量指标。

于是问题又来了,如何选择同一个类别的代表方式*****?**

理论上来说,这些点的中心点通常就是聚类的中心。选择中心点的方式也有多种,最基本的方式是使用点集向量的均值作为中心点,这些中心点也就是聚类的中心。不过这样的聚类中心并不一定是存在的数据或者有意义的数据。

除此之外,我们还可以使用几何中心(如果有凸包快速计算几何中心的方法的话),或者使用最靠近聚类中心的有意义的点(这样做是为了让中心点不再是凭空产生多余的数据),这样处理出来的聚类中心就是真是存在的。

K-Means算法基础步骤

1.在原始数据中初始化K个聚类中心

2.分别计算每个对象与这K个聚类中心的距离,并根据每个对象与聚类中心的最短距离为相应对象重新划分类别

3.重新计算每个聚类的中心

4.计算标准测度函数。当满足一定条件,如函数收敛时,算法终止;如果不满足条件则返回步骤3

K-Means算法的时间复杂度时O(nkt),其中n为数据量,k为选取得聚类中心得个数,t是迭代得次数。

它是一种无监督学习方法,以k为参数,把n个对象分为k簇,使得簇内具有较高的相似度,而簇间的相似度则较低。一般以簇的中心为聚类中心,也叫质心。它也是一种典型的逐点迭代动态聚类的算法,所有对象元素按照某一规则聚到某一类后,最终会重新计算类的中心。

K-Means的一个主要问题是聚类的稳固性。由于迭代次序、中心点、距离函数等都有多种不同的选择,所以歌词迭代产生的聚类中心往往会有偏差。为了增加K-Means的稳固性,前人也做了很多尝试,如将各聚类中心之间的距离最大化,采用更能反应模型假设空间距离意义的测度函数(兰德系数、杰卡德相似系数、海明距离、最小匹配距离、互信息)

高斯混合模型(GMM)

这是一种应用很广泛的算法。它不仅能在给定聚类数时计算出样本点的类别,还能计算出每个类别下的样本分布。

高斯混合模型作为期望最大化(简称EM)算法的一种特例,有助于理解EM算法。

D维高斯分布

N(X|$\mu$,$\Sigma$)=$\frac{1}{(2Π)^2}$$\frac{1}{|\Sigma|^\frac{1}{2}}$exp{-$\frac{1}{2}$(x-$\mu$)T $\Sigma$-1(x-$\mu$)}

其中,$\mu$是D维的均值向量,$\Sigma$是DXD的协方差矩阵,|$\Sigma$|则表示$\Sigma$的行列式

所以高斯混合模型可以表示为以下这个式子:

P(x)=$ \sum_{k=1}^k$$Π_k$N(x|$\mu$k,$\Sigma_k$)

高斯混合模型的物理意义:空间种的样本点(向量)以不同的概率隶属于多个高斯分布。

假设Z是K维空间向量,且Z中的元素只有1个为1,其他的皆为0,这样Z就有K个状态了,而且Z中的元素满足$\Sigma_k$$Z_k$=1,那么$Z_k$表示任意样本点属于第k个高斯分布的概率,Z也可以看作是高斯混合模型的隐变量。

因此在计算样本点的后验概率时,需要先确定Z,再确定样本点在该高斯模型中的概率,即P(x,Z)由边缘分布P(Z)和条件分布P(x|Z)相乘而得。P(Z)的边缘概率为高斯模型中的混合系数$Πk$,即p($Z_k$=1)=$Π_k$,易知0≤$Π_k$,$ \sum{k=1}^k$$Πk$=1,所以也可以写成P(Z)=$\prod{k=1}^{k}$$Π_k^{Zk}$

所以高斯混合模型的分部也可以写成这样:

P(X)=$\sum_{Z}$P(Z)P(X|Z)=$\prod_{k=1}^{k}$N(X|$\mu_k$, $\Sigma_k$)

其中,每一个$X_n$的观测值都有一个对应的隐变量$Z_n$

OPTICS算法和DBSCAN算法

OPTICS算法

OPTICS算法是一种基于密度的聚类算法,目标是将空间中的数据安扎哦密度愤怒不进行聚类,跟DBSCAN算法背后的思想十分类似。

但不同的是,OPTICS算法可以获得不同密度的聚类,换句话说就是我们可以通过这个算法获得任意密度的聚类(原因是OPTICS算法输出的样本是一个有序队列的样本,从这个队列中可以获得任意密度的聚类)

OPTICS算法的输入参数比较简单,包括半径$\varepsilon$和最少点树MinPts。在这两个参数的基础上,我们可以定义算法中的一些核心概念。

1.核心点:如果一个点的半径为$\varepsilon$,领域内包含的点的数量不少于最少点书,则该点为核心点,其数学描述如下:

$N_\varepsilon$(P)≥MinPts

2.核心距离:在核心点的定义基础上可以引出核心距离的定义:对于核心点,距离其第$MinPts_{th}$d近的点与其之间的距离。

数学描述为:

coreDist(P)=$\begin{cases}UNDEFINED,,,ifN(P)≤MinPts\MinPts_{th}Distance in N(P),,,else\\end{cases}$

3.可达距离:对于核心点P,O到P的科大距离定义为O到P的距离或者P的核心距离

数学描述如下:

reachDist(O,P)=$\begin{cases}UNDEFINED,,,if N(P)≤MinPts\max(coreDist(p), dist(O,P)),,,else\\end{cases}$

4.直接密度可达:如果P为核心点,且P到O的距离小于半径,那么O到P就是直接密度可达的

OPTICS算法的难点在于维护核心点的直接密度可达点的有序列表

以下是算法中计算有序列表的过程

输入:数据样本$\Omega$,给定半径$\varepsilon$和最小点数MinPts。

初始化:所有点的可达距离和核心距离初始化为MAX

步骤

(1)建立两个队列:有序队列列(核心点及该核心点的直接密度可达点)和结果队列(存储输出的样本及处理次序)

(2)如果D中数据全部处理完,则算法结束;否则,从D中选择一个未处理且为核心点对象的点,将该核心点放入结果队列,将该核心点的直接密度可达点放入有序队列,并将这些直接密度可达点按可达距离升序排列

(3)如果有序队列为空,则回到步骤2,否则从有序队列中取出第一个点,如果该店不再结果队列中,则将该点存入结果队列,然后:

①判断该点是否为核心点,若不是则回到步骤3;如果是的话,则进行下一步

②找到该核心点的所有直接密度可达点,将这些点放入有序队列,并且将有序队列中的点按照可达距离重新排序。如果该点已经在有序队列中且新的可达距离较短,则更新该点的可达距离。

(4)重复步骤3,直到有序队列为空

(5)算法结束

输出结果:给定半径$\varepsilon$和最少点MinPts时,输出核心点的直接idu可达点的有序列表。

OPTICS算法中计算样本最终类别的过程

对给定的结果队列,执行以下操作:

(1)从结果队列中按顺序去除样本点,如果该点的可达距离不大于给定半径$\varepsilon$,则该点属于当前类别,否则执行步骤(2)

(2)如果该点的核心距离大于给定半径$\varepsilon$,则该点为噪声点,可以忽略;否则,该点属于新的聚类,跳至步骤1

(3)若已经遍历完结果队列,则算法结束。

DBSCAN算法

这个算法属于OPTICS算法中的一种特殊情况,OPTICS算法主要是解决了DBSCAN算法对输入参数敏感的问题。

DBSCAN算法跟OPTICS算法差不多,不同的在于DBSCAN算法中有样本被分为直接密度可达和密度可达这两种情况

1.直接(密度)可达:如果P为核心点,那么其周围半径$\varepsilon$的领域内的点都是从P直接(密度)可达的。

2.(密度)可达:对于点Q,如果存在$p_1$,$p_2$,……,$p_n$且$p_1$=$p_2$,……,$p_{n-1}$=$p_n$,$p_n$=Q,即$p_1$到$p_n$都是直接(密度)可达的,那么Q对于$p_1$(密度)可达。

3.噪声:如果一个点对于其他所有点都不可达,那么这个点就是噪声,也可以称为异常点。

DBSCAN算法

输入:数据样本集D,给定半径$\varepsilon$和最少点书MinPts

初始化:将所有点设置为未访问

步骤

(1)建立neighbor队列

(2)如果D中数据已全部处理完,则算法结束;否则从D中选择一个未处理的点,标记为已访问,获得其所有直接密度可达点。如果这个点为非核心点,则标记为噪声,重复步骤2,直到获得核心点,生成新的类别,进入步骤3

(3)将当前核心点放入该类别,将其直接密度可达点放入neighbor队列,并遍历该队列,如果neighbor队列全部遍历完则回到步骤2

①如果该点已经访问过,则进入步骤2,否则将其标志为已访问,然后计算获得该点的所有密度可达点,如果这个点也为核心点,则将该点的所有直接密度可达点放入neighbor队列

②如果该点不属于任何类别,则放入当前类别

(4)算法结束

输出结果:给定半径$\varepsilon$和最少点数MinPts时,数据样本集D的聚类结果