精华内容
下载资源
问答
  • 灰色关联分析计算的实例演示 快速学习灰关联计算套路
  • 主要介绍了Laravel5.1 框架关联模型之后操作,结合实例形式分析了laravel5.1框架写入关联模型、更新关联关系等相关操作技巧与注意事项,需要的朋友可以参考下
  • ThinkPHP关联模型操作实例分析,需要的朋友可以参考下
  • 1.Apriori关联分析的介绍 这一部分可以看我的上一篇博文,里面主要介绍了关联分析的原理。 链接: python机器学习之关联分析(Apriori). 2.案例背景与分析过程 现代商品种类繁多,顾客往往会纠结选择买啥,尤其对于...

    1.Apriori关联分析的介绍

    这一部分可以看我的上一篇博文,里面主要介绍了关联分析的原理。
    链接: python机器学习之关联分析(Apriori).

    2.案例背景与分析过程

    现代商品种类繁多,顾客往往会纠结选择买啥,尤其对于选择困难症的顾客来说,选择商品更是难上加难。繁杂的选购往往会给顾客带来疲惫的购物体验。对于部分商品,比如面包和牛奶,薯片和可乐等,是顾客经常同时购买的东西,当这些东西距离十分遥远时,就会减小顾客的购买欲望。因此,为了获取最大销售利润,我们需要了解销售什么样的商品、采用什么样的促销手段、商品在货架上如何摆放以及了解顾客购买习惯和偏好等对销售商尤其重要。
    分析目的:

    • 构建商品的Apriori模型,分析商品之间的关联关系。
    • 根据模型结果给出销售策略。
    优化
    源数据
    某商品的零售企业购物车数据
    数据预处理
    Apriori关联分析
    模型应用
    分析结束

    具体步骤如下:

    1. 查看原始数据的形式。
    2. 对原始数据进行数据的预处理,转换数据形式,使其满足Apriori关联分析的要求。
    3. 建立Apriori模型,调整超参数。
    4. 对模型结果进行分析。提供销售建议。

    3.数据的初步处理

    对本案例的数据先要有个大致的了解,本案例一共有9835个购物篮数据,一共有两个表,它主要包括3个属性:

    表名属性值描述
    Goods Orderid商品所属类别的编号
    Goods具体的商品名称
    Goods TypesGoods具体的商品名称
    Type商品类别
    用python读取数据并查看数据特征。
    #此文件是Apriori模型的主要文件
    import pandas as pd
    file_path=open("....这里自己填文件路径//GoodsOrder.csv")
    data=pd.read_csv(file_path)
    data.info()
    des=pd.DataFrame(data.describe()).T 
    print(des)#查看信息描述
    

    在这里插入图片描述
    一共有43367个观测值,不存在缺失值id最大值为9835,说明一共有9835个购物篮信息。
    在这里插入图片描述
    查看销量占比:

    #销量占比
    data_nums = data.shape[0]
    for idnex, row in sorted[:10].iterrows():#iterrows就是pd的相当于enumerate依次数pd的行索引和数据
        print(row['Goods'],row['id'],row['id']/data_nums)
    

    在这里插入图片描述

    4.对商品进一步分析

    在步骤3中,我们分析了一些具体的商品,这样的分类对后续决策的执行存在一定的困难,我们应该将这些具体的商品和自己所属的大类联系起来。我们通过Good Types表中的数据找出对应商品所属的大类,就相当于数据库中的相关联。

    #各类别商品的销量及其占比
    import pandas as pd
    inputfile1 =open("C://Users//Administrator//Desktop//python-code//《Python数据分析与挖掘实战(第2版)》源数据和代码//《Python数据分析与挖掘实战(第2版)》源数据和代码-各章节//chapter8//demo//data//GoodsOrder.csv")
    inputfile2 =open("C://Users//Administrator//Desktop//python-code//《Python数据分析与挖掘实战(第2版)》源数据和代码//《Python数据分析与挖掘实战(第2版)》源数据和代码-各章节//chapter8//demo//data//GoodsTypes.csv")
    data = pd.read_csv(inputfile1)
    types = pd.read_csv(inputfile2)  # 读入数据
    
    group = data.groupby(['Goods']).count().reset_index()
    sort = group.sort_values('id',ascending = False).reset_index()
    data_nums = data.shape[0]  # 总量
    #print(sort)
    del sort['index']
    
    sort_links = pd.merge(sort,types)  # 合并两个datafreame 根据两表中相同的type
    # 根据类别求和,每个商品类别的总量,并排序
    sort_link = sort_links.groupby(['Types']).sum().reset_index()
    sort_link = sort_link.sort_values('id',ascending = False).reset_index()
    del sort_link['index']  # 删除“index”列
    
    # 求百分比,然后更换列名,最后输出到文件
    sort_link['count'] = sort_link.apply(lambda line: line['id']/data_nums,axis=1)
    sort_link.rename(columns = {'count':'percent'},inplace = True)
    print('各类别商品的销量及其占比:\n',sort_link)
    
    # 画饼图展示每类商品销量占比
    import matplotlib.pyplot as plt
    data = sort_link['percent']
    labels = sort_link['Types']
    plt.figure(figsize=(8, 6))  # 设置画布大小   
    plt.pie(data,labels=labels,autopct='%1.2f%%')
    plt.rcParams['font.sans-serif'] = 'SimHei'
    plt.title('每类商品销量占比')  # 设置标题
    #plt.savefig('../tmp/persent.png')  # 把图片以.png格式保存
    plt.show()
    

    将每个商品具体分类后,得到如下的大分类表。
    在这里插入图片描述
    根据我们的分析,非酒精类饮料占比最高,为17.51%,为销售的大军,所以我们对非酒精类饮料的商品结构进行分析。

    selected = sort_links.loc[sort_links['Types'] == '非酒精饮料']  # 挑选商品类别为“非酒精饮料”并排序
    child_nums = selected['id'].sum()  # 对所有的“非酒精饮料”求和
    selected['child_percent'] = selected.apply(lambda line: line['id']/child_nums,axis = 1)  # 求百分比
    selected.rename(columns = {'id':'count'},inplace = True)
    print('非酒精饮料内部商品的销量及其占比:\n',selected)
    # outfile2 = '../tmp/child_percent.csv'
    # sort_link.to_csv(outfile2,index = False,header = True,encoding='gbk')  # 输出结果
    
    # 画饼图展示非酒精饮品内部各商品的销量占比
    import matplotlib.pyplot as plt
    data = selected['child_percent']
    labels = selected['Goods']
    plt.figure(figsize = (8,6))  # 设置画布大小 
    explode = (0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.08,0.3,0.1,0.3)  # 设置每一块分割出的间隙大小
    plt.pie(data,explode = explode,labels = labels,autopct = '%1.2f%%',
            pctdistance = 1.1,labeldistance = 1.2)
    plt.rcParams['font.sans-serif'] = 'SimHei'
    plt.title("非酒精饮料内部各商品的销量占比")  # 设置标题
    plt.axis('equal')
    # plt.savefig('../tmp/child_persent.png')  # 保存图形
    plt.show()  # 展示图形
    

    在这里插入图片描述
    在这里插入图片描述
    这里我们在做一下数据转化,以前的数据每一行代表每一件商品,以及对应的id。

    import pandas as pd
    inputfile =open("C://Users//Administrator//Desktop//python-code//《Python数据分析与挖掘实战(第2版)》源数据和代码//《Python数据分析与挖掘实战(第2版)》源数据和代码-各章节//chapter8//demo//data//GoodsOrder.csv")
    data = pd.read_csv(inputfile)
    
    # 根据id对“Goods”列合并,并使用“,”将各商品隔开
    data['Goods'] = data['Goods'].apply(lambda x:','+x)
    print(data.head(10))
    
    data = data.groupby('id').sum().reset_index()
    print(data.head(10))
    
    # 对合并的商品列转换数据格式
    data['Goods'] = data['Goods'].apply(lambda x :[x[1:]])#转化为数组
    data_list = list(data['Goods'])
    
    # 分割商品名为每个元素
    data_translation = []
    for i in data_list:
        p = i[0].split(',')
        data_translation.append(p)
    print('数据转换结果的前5个元素:\n', data_translation[0:5])
    

    原数据:
    在这里插入图片描述
    转换后的数据:
    即将id为1的顾客所买的所有商品转换成一个列表。同理,id为2的顾客买的…
    在这里插入图片描述

    5.关联分析

    5.1建模实现的步骤:
    • 首先设置Apriori的最小支持度、最小置信度、输入建模样本数据
    • 采用Apriori关联分析算法对建模样本数据进行分析,以模型设置的参数作为条件和目标
      目前如何设置最小支持度与最小置信度设置并没有统一的大小的标准,大部分都是通过设置初始值,然后通过不断的调整,获取与业务相符的关联结果。本文输入的模型参数为:最小支持度0.02,最小置信度为0.35。
    # -*- coding: utf-8 -*-
    
    # 代码8-6 构建关联规则模型
    
    from numpy import *
     
    def loadDataSet():
        return [['a', 'c', 'e'], ['b', 'd'], ['b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b'], ['b', 'c'], ['a', 'b'],
                ['a', 'b', 'c', 'e'], ['a', 'b', 'c'], ['a', 'c', 'e']]
     
    def createC1(dataSet):
        C1 = []
        for transaction in dataSet:
            for item in transaction:
                if not [item] in C1:
                    C1.append([item])
        C1.sort()
        # 映射为frozenset唯一性的,可使用其构造字典
        return list(map(frozenset, C1))     
        
    # 从候选K项集到频繁K项集(支持度计算)
    def scanD(D, Ck, minSupport):
        ssCnt = {}
        for tid in D:   # 遍历数据集
            for can in Ck:  # 遍历候选项
                if can.issubset(tid):  # 判断候选项中是否含数据集的各项
                    if not can in ssCnt:
                        ssCnt[can] = 1  # 不含设为1
                    else:
                        ssCnt[can] += 1  # 有则计数加1
        numItems = float(len(D))  # 数据集大小
        retList = []  # L1初始化
        supportData = {}  # 记录候选项中各个数据的支持度
        for key in ssCnt:
            support = ssCnt[key] / numItems  # 计算支持度
            if support >= minSupport:
                retList.insert(0, key)  # 满足条件加入L1中
                supportData[key] = support  
        return retList, supportData
     
    def calSupport(D, Ck, min_support):
        dict_sup = {}
        for i in D:
            for j in Ck:
                if j.issubset(i):
                    if not j in dict_sup:
                        dict_sup[j] = 1
                    else:
                        dict_sup[j] += 1
        sumCount = float(len(D))
        supportData = {}
        relist = []
        for i in dict_sup:
            temp_sup = dict_sup[i] / sumCount
            if temp_sup >= min_support:
                relist.append(i)
    # 此处可设置返回全部的支持度数据(或者频繁项集的支持度数据)
                supportData[i] = temp_sup
        return relist, supportData
     
    # 改进剪枝算法
    def aprioriGen(Lk, k):
        retList = []
        lenLk = len(Lk)
        for i in range(lenLk):
            for j in range(i + 1, lenLk):  # 两两组合遍历
                L1 = list(Lk[i])[:k - 2]
                L2 = list(Lk[j])[:k - 2]
                L1.sort()
                L2.sort()
                if L1 == L2:  # 前k-1项相等,则可相乘,这样可防止重复项出现
                    # 进行剪枝(a1为k项集中的一个元素,b为它的所有k-1项子集)
                    a = Lk[i] | Lk[j]  # a为frozenset()集合
                    a1 = list(a)
                    b = []
                    # 遍历取出每一个元素,转换为set,依次从a1中剔除该元素,并加入到b中
                    for q in range(len(a1)):
                        t = [a1[q]]
                        tt = frozenset(set(a1) - set(t))
                        b.append(tt)
                    t = 0
                    for w in b:
                        # 当b(即所有k-1项子集)都是Lk(频繁的)的子集,则保留,否则删除。
                        if w in Lk:
                            t += 1
                    if t == len(b):
                        retList.append(b[0] | b[1])
        return retList
    
    def apriori(dataSet, minSupport=0.2):
    # 前3条语句是对计算查找单个元素中的频繁项集
        C1 = createC1(dataSet)
        D = list(map(set, dataSet))  # 使用list()转换为列表
        L1, supportData = calSupport(D, C1, minSupport)
        L = [L1]  # 加列表框,使得1项集为一个单独元素
        k = 2
        while (len(L[k - 2]) > 0):  # 是否还有候选集
            Ck = aprioriGen(L[k - 2], k)
            Lk, supK = scanD(D, Ck, minSupport)  # scan DB to get Lk
            supportData.update(supK)  # 把supk的键值对添加到supportData里
            L.append(Lk)  # L最后一个值为空集
            k += 1
        del L[-1]  # 删除最后一个空集
        return L, supportData  # L为频繁项集,为一个列表,1,2,3项集分别为一个元素
    
    # 生成集合的所有子集
    def getSubset(fromList, toList):
        for i in range(len(fromList)):
            t = [fromList[i]]
            tt = frozenset(set(fromList) - set(t))
            if not tt in toList:
                toList.append(tt)
                tt = list(tt)
                if len(tt) > 1:
                    getSubset(tt, toList)
     
    def calcConf(freqSet, H, supportData, ruleList, minConf=0.7):
        for conseq in H:  #遍历H中的所有项集并计算它们的可信度值
            conf = supportData[freqSet] / supportData[freqSet - conseq]  # 可信度计算,结合支持度数据
            # 提升度lift计算lift = p(a & b) / p(a)*p(b)
            lift = supportData[freqSet] / (supportData[conseq] * supportData[freqSet - conseq])
     
            if conf >= minConf and lift > 1:
                print(freqSet - conseq, '-->', conseq, '支持度', round(supportData[freqSet], 6), '置信度:', round(conf, 6),
                      'lift值为:', round(lift, 6))
                ruleList.append((freqSet - conseq, conseq, conf))
     
    # 生成规则
    def gen_rule(L, supportData, minConf = 0.7):
        bigRuleList = []
        for i in range(1, len(L)):  # 从二项集开始计算
            for freqSet in L[i]:  # freqSet为所有的k项集
                # 求该三项集的所有非空子集,1项集,2项集,直到k-1项集,用H1表示,为list类型,里面为frozenset类型,
                H1 = list(freqSet)
                all_subset = []
                getSubset(H1, all_subset)  # 生成所有的子集
                calcConf(freqSet, all_subset, supportData, bigRuleList, minConf)
        return bigRuleList
     
    if __name__ == '__main__':
        dataSet = data_translation
        L, supportData = apriori(dataSet, minSupport = 0.02)
        rule = gen_rule(L, supportData, minConf = 0.35)
    
    
    

    结果如下:
    在这里插入图片描述
    我们对输出的结果进行解释:就拿第一条吧:
    在这里插入图片描述
    这说明同时购买(果汁/蔬菜汁)和(全脂牛奶)这两件商品的概率为36.85%,这种情况发生的可能性大小为2.66%
    后续的结果可以进行相同的解释

    根据模型的结果,我们发现大多购物者 买的东西主要为食品,随着生活水平的提高和健康意识的增加,其他蔬菜、根茎类蔬菜和全脂牛奶为现代家庭每日饮食所需品,因此,其他类、根茎类蔬菜和全脂牛奶同时购买的概率较高,符合现在人们的生活健康意识。

    6.模型应用

    以上模型结果表明:顾客购买其他商品的时候会同时购买全脂牛奶,因此商场应该根据实际情况将全脂牛奶放在顾客的必经之路上,或是显眼的地方,以便顾客拿取。同时,顾客购买其他蔬菜、根茎类蔬菜、酸牛奶、猪肉、黄油、本地蛋类和多种水果概率较高,因此商场可以考虑捆绑销售,或者调整商品布局,将这些商品距离尽量拉近,从而提升顾客的购物体验。

    参考资料

    链接: 机器学习—关联规则分析之Apriori算法.
    书籍:《python数据分析与挖掘实战》
    实验菜品数据集: 数据百度网盘下载,提取码7hwd.

    展开全文
  • 引言 在很多安全分析类产品建设的过程中都会涉及到关联...下面就来聊一下我对关联分析模型的一点思考。 一、概述 有很多公司在自己的产品介绍中说自己的产品有多少种内置规则等等,仔细分析就会发现很多是一个模型出

    引言

    在很多安全分析类产品建设的过程中都会涉及到关联分析,比如日志分析,soc,态势感知,风控等产品。关联分析可以认为是这类产品中最核心的能力之一。这个东西从名字上看就知道,千人千面,每个人的想法和理解都不一样。很多甲方都会提关联分析,但你要在细问要做什么样的关联分析,估计大多数甲方都不太能详细说出来,很多乙方对此也是藏着掖着,可能也是核心机密不愿意细说。下面就来聊一下我对关联分析模型的一点思考。

    一、概述

    有很多公司在自己的产品介绍中说自己的产品有多少种内置规则等等,仔细分析就会发现很多是一个模型出来的,比如主机密码猜测,数据库密码猜测,网络设备密码猜测等,这些规则背后可以理解为一个模型。所以评价一个产品分析规则好坏的关键点我认为不全是内置多少种有效的规则,对关联规则模型支持的多少也可以作为一个重要指标,正如道生一,一生二,二生三,三生万物。当然分析规则的分析能力还要依托于日志解析的准确度和广度,日志解析的越准确,广度越广,对分析的支撑能力就越强。

     

    关联分析模型从大的分类看大概有以下 5种:

    1、基于规则的关联分析

    2、基于统计的关联分析

    3、基于威胁情报的关联分析

    4、基于情境的关联分析

    5、基于大数据的关联分析

    这些模型大概是业内提的最多的,但仔细分析,其实里面的内容并不是完全在一个维度上,里面还会有一些些交叉和关联。下面就对这5种常见的关联分析方法进行介绍:

    二、基于规则的关联分析

    基于规则的关联分析是目前是最常用的一种关联分析模型,这种关联分析模型是指按平台预先内置关联规则,或者用户自定义维护的关联规则对安全事件进行分析。平台接收到经过范式化的安全事件以后,通过事件维度与告警规则进行匹配,一旦匹配到符合条件的规则,规则就会被触发。在规则设定的时间窗口内,平台会将多条成功匹配规则的安全事件进行关联,并按规则设定进行告警。

    关联规则主要模拟攻击者攻击的行为,将平台采集的范式化后的日志,通过有效的字段组合,进行规则模型匹配分析,基于规则的关联分析主要针对于已知安全事件的分析,还要基于企业实际网络结构,业务场景进行调整,满足企业实际环境的需求。

    基于规则的关联分析的特点是准确,可理解,只要规则没有问题得出的结论就是没有问题的,但规则如何去做,这就是规则模型的内容。下面就介绍下一些常用的规则模型:

    2.1单条日志关联规则

    单条关联分析模型是基于规则的模型中最简单的一种方式,它的主要思想就是根据一条日志中的内容进行分析,比如linux下一条常用的登录日志:

    May 22 17:13:01 10-9-83-151 sshd[17422]: Accepted password for secisland from 129.74.226.122 port 64485 ssh2

    从这个日志中就有很多的信息,比如直接时间,主机名,进程名,事件类型,用户,源ip,端口;间接信息包括资产信息,账号信息,源ip地理信信息等。当这些丰富的信息解析出来后。我们可以很多的分析模型:

    ·非上班时间登录:

    这个就是说在非上班时间进行了登录行为,主要判断标准就是时间和登录成功事件。

    ·非上班地点登录:

    这个就是说在非上班地点进行了登录行为,主要判断标准就是登录IP和登录成功事件。这个场景在很多风控中也会应用,比如出差登录QQ邮箱,QQ可能会发个异地登录提醒,如果在网上第一次用信用卡进行美金支付,客服会打电话确认这个操作是不是你本人所为等。

    ·绕堡垒机登录:

    这个就是说在不在堡垒机上进行了登录行为,主要判断标准就是登录IP是否是堡垒机IP和登录成功事件。

    ·越权登录:

    这个根据业务逻辑比如某些账号不能登录某些服务器。主要判断标准就是登录账号,登录目标IP和登录成功事件。

    ·国外登录:

    这个就是说在登录的IP地址不是国内的IP进行了登录行为,主要判断标准就是登录IP是否是国内IP和登录成功事件。

    通过上面实例可以发现根据一条日志结合事件类型和业务等可以分析出非常多的告警行为。

    2.2 事件数量告警

    在很多攻击场景中,仅靠一条事件是不能发现攻击行为的,比如密码猜测行为,当有一条密码登录事件发生的时候,我们不能说这个是密码猜测行为,只有在一个短时间内发生了超过阈值数量的登录失败行为时,我们才能初步界定为这次行为是密码猜测行为。这种行为就是事件数量告警。这种模型主要有几个部分:

    ·时间维度,就是一段时间内;

    ·阈值维度,达到阈值的数量;

    ·条件维度,满足某些条件。

    比如刚才说的密码猜测,在三分钟内,登录失败的阈值达到6次以上,我们可以认为是一个密码猜测攻击行为。

    当然还有很多这种模型的类似规则,比如账号猜测,病毒爆发,CC攻击等行为。

    经常有些甲方提出来的跨设备的关联分析其实也可以归于这种模型,比如同一个IP在短时间内有多个产品发生了包含这个IP的日志。

    文章属于赛克蓝德原创,如需转载请完整保留作者公司信息。

    2.3 多值事件数量告警

    在有些情况下,事件数量告警是不能满足某些攻击场景,比如端口扫描,主机扫描等行为,这种行为的特性也是通过多条事件来判断,但仅仅通过数量是没有办法确定是否是攻击。比如端口扫描,你不能说短时间端口访问了100次就算是扫描行为,但是如果短时间不同端口访问了100一次以上,大概率应该是一个端口扫描行为。这种模型主要有几个部分:

    ·时间维度,就是一段时间内;

    ·阈值维度,达到阈值的数量;

    ·不同维度,类型相同但内容是不相同的;

    ·条件维度,满足某些条件。

    通过这些内容进行分析组合,可以分析出更多的场景,比如主机扫描就是1分钟同一个源IP访问不同主机的同一个端口数量超过100个就可以初步判断为主机扫描;比如分布式账号猜测,同一个账号登录失败的源IP地址在一分钟内出现了20个不一样的可以判断为分布式账号猜测等等。

    2.4 时序告警

    这是一种比之前更复杂模型的一种告警模型,这种模型在很多更复杂的场景中用到,比如:非上班时间登录ftp服务器,上传了一个脚本,然后下载了敏感文件行为。这种情况从大概率上看应该是一次违规行为,当然条件和内容可以演变。这种行为具有明显的特征就是时间顺序。比如“杀伤链”模型的六个阶段“发现-定位-跟踪-瞄准-打击-达成目标”也具有时间顺序的特征,只是这种时间序列的来源是告警而不是原始的事件。

     

     

    三、基于统计的关联分析

    基于统计模型的关联规则和之前的模型有些不太一样,有的公司用动态基线、基于行为的分析等的叫法,本质上应该都可以归于这一类模型。这种模型在用户行为异常分析中也大量使用(用户异常行为分析目前也有很多用机器学习算法来实现的)。

    具体来说就是阈值没有办法提前知道,需要通过计算前面的一段时间得到阈值,然后根据阈值进行计算偏离的方法。比如流量异常模型,很多的客户不一定知道平时的流量到底是多少才是正常的,这个时候就需要进行动态计算,比如今天9点到10的流量比前一周9点到10点流量的平均值大80%。这个情况就可以理解为流量异常模型。DDOS就是一种常用的统计异常模型:

     

    在异常行为分析中可以大量使用这种模型,比如访问异常,操作异常,下载异常等。

    还有种比较特殊的统计关联分析是低频行为分析,低频分析本质上也是一种统计行为分析,只是这种统计指标平时比较少,有可能在大量的数据中被淹没。这种情况下选择指标就比较重要。

    四、基于威胁情报的关联分析

    基于威胁情报数据的关联分析,是企业安全管理平台未来的主要发展趋势,它可以大大提升安全事件分析效率和对威胁行为的检测能力和响应速度。

    情报数据包括IP指纹、web指纹、IP信息、域名信息、漏洞库、样本库、IP信誉、域名信誉、URL信誉、文件信誉、C&C信誉等。

    通常情况下,企业安全管理平台与部署在云端的威胁情报平台互联或者把第三方情报数据定期导入到内网。经过安全管理平台的关联分析引擎生成的本地安全告警,与得到的威胁情报数据进行关联,通过对IP信誉、域名信誉、URL信誉、文件信誉、C&C信誉等多个维度的匹配,分析出安全告警的可信程度,过滤掉告警中的噪音事件,从而增加了本地安全告警的精准度,使得企业安全管理人员可以迅速定位威胁来源和相关联的资产和业务,并及时通过工单和处置流程进行快速响应;同时,利用威胁情报可以对攻击者进行深入分析和溯源取证。

    从模型来看,基于情报的关联分析并不是一种新的模型,它可以算是一种新的数据维度,比如以前没有没有情报的时候并不知道一个IP是否是恶意IP,一个URL是否是恶意URL,当有了情报后,可以拿这个数据和情况数据对比来确定是否是恶意行为。这种模型可以理解为单条事件模型的一个扩展,比如源IP使用就是判断源IP维度是否在情报的黑名单内,sourceIP in(情报)。

    五、基于情境的关联分析

    基于情境的关联分析是指将安全事件与当前的实际运行的环境进行关联,根据更多业务信息,环境信息进行相关性分析,识别安全威胁。比如基于资产的关联,根据事件中的IP地址与资产的信息进行关联;比如基于漏洞的关联,将安全事件与该事件所针对的目标资产当前具有的漏洞信息进行关联;基于其他告警的关联,将安全事件与该事件所针对的目标资产当前发生的其他告警信息进行关联;基于拓扑的关联,结合网络拓扑中网络区域内的告警进行关联。

    从模型来看,基于情境的关联分析也不是一种新的模型,它也可以算是一种新的数据维度的分析,比如在日志范式化中增加资产信息,漏洞信息,网络结构信息等。和其他高级关联可以归于事件数量告警的一个升级,只是事件告警的来源是事件,这个告警的来源是已经产生的告警,这个模型依然可以归于事件数量告警。整体上看,情境分析的模型基本上还是之前的模型,但分析的难度还是比较大的,因为这些情景很多都是动态变化的,目前大多数分析模型还是基于已经范式化后的事件,当这些情景发生变化或者事前没有进行范式化补充这些信息的时候。这种情况会大大增加分析的难度。

    六、基于大数据的关联分析

    目前我们已经进入了大数据时代。人类的生产生活每天都在产生大量的数据,并且产生的速度越来越快。而安全事件的数量也是类似的,每天产生的数据越来越多。其实大数据早就存在,只是一直没有足够的基础架构和技术来对这些数据进行有价值的挖据。随着科技的不断进步,对大数据的处理分析能力也越来越强。

    从模型来看,基于大数据的关联分析也不是一种新的模型,它主要的特点是利用了大数据技术去处理分析数据,比如存储,检索,聚合等。利用大数据平台的能力可以分析以前由于数据太大不能分析的场景。但在大数据分析领域也有很多数据关联性分析算法:相关性分析、回归分析、交叉表卡方分析等,但这些模型在安全分析的过程有多大的作用和效果,目前没有太大的研究,目前我这边还是用传统的分析模型利用大数据架构的能力进行安全分析。

    七、小结

    前面介绍的是目前传统的一些分析模型方法,可以作为对安全分析产品中关联分析是否灵活的一个参考。当然安全分析的前提是日志解析的准确,日志解析的准确也是一个非常复杂的内容,这块也分预处理和后处理等内容,后面有时间也会介绍下此部分的内容。安全攻防对抗一直在不停的进行演变,目前也出现了一些新的模型,比如基于预测模型的关联分析,基于机器学习的分析等,这部分目前还没有太多的心得。关联分析模型本身是一个比较复杂的内容,我尽量保证内容观点正确,但本人毕竟才学疏浅,文中若有不足之处欢迎大家批评指正。

    备注:文章属于赛克蓝德原创,赛克蓝德是专注于数据分析、安全分析、分析服务的提供商。如需转载请完整保留作者公司信息。

    展开全文
  • 主要介绍了Laravel5.1 框架模型多态关联用法,结合实例形式分析了laravel5.1框架模型多态关联具体实现、使用方法与操作注意事项,需要的朋友可以参考下
  • 通过对某健将级女子铅球运动员的跟踪调查,获得其 1982 年至 1986 年每年好成绩及16 项专项素质和身体素质的时间序列资料,见表 2,试对此铅球运动员的 专项成绩进行因素分析。 (1)选取参考,比较数列并无量纲...

    一,预备
    (1)无量纲化处理技术
    在这里插入图片描述
    在这里插入图片描述
    二,灰色关联的步骤

    通过对某健将级女子铅球运动员的跟踪调查,获得其 1982 年至 1986 年每年好成绩及16 项专项素质和身体素质的时间序列资料,见表 2,试对此铅球运动员的 专项成绩进行因素分析。
    在这里插入图片描述
    (1)选取参考,比较数列并无量纲化处理

    第一行铅球专项成绩数列为参考列,其余为比较数列
    在这里插入图片描述
    无量纲化处理:
    在这里插入图片描述
    原始数列的初始化数列

    对于前 15 个数列, 随着时间的增加,数值的增加意味着运动水平的进步,而对后 2个数列来讲,随着时间 的增加,数值(秒数)的减少却意味着运动水平的进步。因此,在对数列 x15 及 x16 进行初始化处理时,采取以下公式
    在这里插入图片描述

    (2)计算关联系数
    在这里插入图片描述
    (3)计算关联度
    在这里插入图片描述
    在这里插入图片描述
    (4)结果分析

    由表 3 易看出,影响铅球专项成绩的前八项主要因素依次为全蹲、3kg 滑步、高翻、 4kg 原地、挺举、立定跳远、30 米起跑、100 米成绩。因此,在训练中应着重考虑安排 这八项指标的练习。这样可减少训练的盲目性,提高训练效果。
    在这里插入图片描述

    clc,clear
    load x.txt   %把原始数据存放在纯文本文件 x.txt 中
    for i=1:15     
        x(i,:)=x(i,:)/x(i,1);   %标准化数据 
    end
    for i=16:17     
        x(i,:)=x(i,1)./x(i,:);  %标准化数据 
    end
    data=x; 
    n=size(data,2); %求矩阵的列数,即观测时刻的个数 
    ck=data(1,:);  %提出参考数列 
    bj=data(2:end,:); %提出比较数列 
    m2=size(bj,1); %求比较数列的个数 
    for j=1:m2       
        t(j,:)=bj(j,:)-ck; 
    end
    mn=min(min(abs(t')));  %求小差
    mx=max(max(abs(t')));  %求大差
    rho=0.5;  %分辨系数设置 
    ksi=(mn+rho*mx)./(abs(t)+rho*mx);  %求关联系数 
    r=sum(ksi')/n  %求关联度 
    [rs,rind]=sort(r,'descend')   %对关联度进行排序
    

    x.txt内容如下:
    13.6 14.01 14.54 15.64 15.69
    11.50 13.00 15.15 15.30 15.02
    13.76 16.36 16.90 16.56 17.30
    12.41 12.70 13.96 14.04 13.46
    2.48 2.49 2.56 2.64 2.59
    85 85 90 100 105
    55 65 75 80 80
    65 70 75 85 90
    12.80 15.30 16.24 16.40 17.05
    15.30 18.40 18.75 17.95 19.30
    12.71 14.50 14.66 15.88 15.70
    14.78 15.54 16.03 16.87 17.82
    7.64 7.56 7.76 7.54 7.70
    120 125 130 140 140
    80 85 90 90 95
    4.2 4.25 4.1 4.06 3.99
    13.1 13.42 12.85 12.72 12.56

    展开全文
  • 的系统结构分析模型. 该模型基于定性分析构建判断矩阵, 并利用确知属性权重代替属性影响权重建立影响关系矩 阵, 从而通过区分属性关联与否构造关联要素属性对属性的模糊关系矩阵, 得到正、逆和双关联属性的贡献...
  • 模型是基于移除分辨系数的灰关联分析, 案例是评价台湾地区 路面管理系统的最佳化优选问题. 应用德菲法搜集的案例数据显示了省道和县、乡道主管部门对软件的认知差异和 需求偏好. 采用理想解趋近法(TO ...
  • 在人工智能的浪潮下,现在各类科技领域都要加上一点AI、深度学习、神经网络的概念,以免不落后于...类似于Exabeam之流采用机器学习的UEBA产品,无论实在公开案例还是我所了解的客户反馈均表示,客户专业的安全运维...

      在人工智能的浪潮下,现在各类科技领域都要加上一点AI、深度学习、神经网络的概念,以免不落后于潮流。但是产品归产品,技术归技术。就人工智能当下的成熟度而言,笔者认为至少在信息安全领域,由专业的安全专家团队利用庞大的项目经验、客户运维经验组成的各类安全规则库能力依然是优于AI引擎的。类似于Exabeam之流采用机器学习的UEBA产品,无论实在公开案例还是我所了解的客户反馈均表示,客户专业的安全运维部门还是更依赖于基于规则库的SIEM。

      当然,本篇文章并不是对比机器学习与传统规则库在安全领域的孰是孰非,而主要是介绍基于规则的安全事件关联分析模型。在这个模型之下,整个系统将以网络安全审计系统、终端安全Agent、服务器/业务系统日志、以及其他安全设备告警信息为基础,将与业务和安全息息相关的数据汇总分析,进而利用规则库将真正具有威胁的事件还原出来。具体的清洗流程如下:

      如上图所示,我们的核心目标是从海量审计数据中筛选出真实的、值得关注的告警事件。因此,流程需要执行预处理、日常行为汇总、规则库自动匹配、人工处置等步骤,以确保告警事件等到有效清洗。

      整个业务流程第一步是数据采集,只有采集到分析系统关键数据才能有效提取具有威胁的告警事件,因此很多SIEM系统主打全量日志采集,将整个信息系统所有的网络通信以PCAP包采集、留存,将下到终端电脑开机、上到业务系统CPU利用率等日志全部打包。诚然,这样的采集方式必然能够采集足够多的数据进行更精确的分析,但是分析日志量过大导致的系统运行效率问题也是各种安全运维部门不得不面临的问题。笔者认为,安全事件关联分析模型所需的日志数据,以日常安全运维经验为出发,适当设置,分类采集即可。一个好的关联分析模型应具备自我完善机制,能够在分析过程中判断现有数据源是否满足分析需求。而自我完善机制的实现则可使整个分析系统的日志是一个渐进明细的过程,开始的日志采集量可能设置上确实存在偏差或不足,但经过不断完善和补充,将分析所需的日志逐步增加,则即能够满足关联需求,又能够减少日志采集量提高效率。

      讲了一些关于数据采集的方案描述,我们来看下数据采集的后续流程。数据经由采集器采集到位后,先进行预处理,满足系统格式要求。经过完整性校验、数据去重、原始数据格式化等步骤,将采集器获取的数据转化为能够为后续流程所用的元数据信息。元数据信息需要经过两方面处理,一方面通过统计算法,将网络各节点互相通信的协议、端口、子网、源目的IP、物理位置等信息进行综合分析,得出网络中各节点常见访问的应用、传输的协议、所在子网和位置等日常信息,并整理为日常行为数据库。

      

      另一方面,元数据信息需要进行一系列的匹配流程。首先,元数据信息需要和信任库进行匹配。信任库记录了由网络管理员配置的各类合规数据,包括信任协议、信任源目的IP、信任端口、信任主机、信任域名等信息。信任库能描述日常业务中安全、可靠各类行为,因此一旦元数据信息与信任库匹配,则可判定为非告警事件,流程结束。

          如果元数据信息未能匹配信任库,则需要与漏洞库、攻击库、病毒库等一系列针对恶意行为的规则库进行匹配,一旦匹配相关内容,则产生适配结果,则判断为告警,将事件确定下来。如果元数据未能匹配规则库,则需要利用之前步骤建立的日常行为数据库进行对比,通过特定算法打分、判定,确认元数据行为与日常行为的匹配度,当匹配度超过阈值时,判研为正常流量,不予处理。

          考虑到非日常行为并不能直接断定为网络攻击,因此,不能匹配信任库、规则库和日常行为数据库的元数据需要人工进行判定。人工判定可运用沙箱技术进行辅助,通过将虚拟执行环境中运行的结果展示给管理员,能够更好的辅助人工进行告警判定。如果人工判定结果为告警事件,则元数据成为告警数据之一。如果人工判定为非告警事件,不仅告警判研流程结束,且该元数据通过规则存入日常行为数据库,为后续自动判研做知识储备。

      如果人工告警仍不能判定元数据是否为告警事件,则需要调整采集器收集数据的范围,将数据采集类型扩大,以便下次同类型数据能够准确分析出判研结论。这就是前面所说数据采集的自我完善机制。在人工告警判定过程中,免不了安全专家、业务专家的接入,而这些人力分析过程将会根据分析人员实际的知识储备和经验进行分析,如果采集的数据不满足判定条件,相关分析人员也能够判断需要哪些条件和参数才能够进行准确判断。因此在安全运维部门的介入下,可以人工调整相关采集策略,确保相关采集器能够更精准的采集到所需数据。

          经过预处理、日常行为汇总、规则库自动匹配、人工处置等步骤后,我们最终可得出真实度较高,噪音较少的,真正具备威胁的告警事件。

    转载于:https://www.cnblogs.com/lslsnake-pm/p/8366627.html

    展开全文
  • 结合灰色关联分析理论, 运用向量投影原理, 提出一种新型的灰色投影关联度模型, 对模型的基本原理进行分析, 并讨论模型的规范性、相似性和平行性等性质. 该模型充分利用了序列各时点的信息, 克服了以离散点代替整体...
  • 比较常用的综合评价模型有TOPSIS法,熵值法,灰色关联分析法等,本文主要介绍一些灰色关联分析法的主要内容。 灰色关联分析法 灰色关联分析法最基本的应用其实并不是进行综合评价,而是进行系统分析。例如在一个系统...
  • 要想做好数据分析必定要理解和熟悉掌握各类数据分析模型,但大部分文章只是给你罗列出了有哪几种数据分析模型及对应理论,并未用实例来辅助说明。很多时候这些模型都进了收藏夹吃灰,大家也没有深刻理解...
  • 关系数据库和其他信息存储中的大 量数据的项集之间发现有趣的频繁出现的模式 关联和相关性 应用: 购物篮分析分类设计捆绑销售和亏本销售分析 Web日志(点击流)分析,和DNA序列分析 尿布与啤酒典型关联分析案例 ...
  • [数学建模]灰色关联分析--系统分析

    千次阅读 多人点赞 2021-02-01 11:19:10
    建模算法整理,文章主要介绍了 灰色关联分析 参考学习资料:清风数学建模 其他资源:2016到2020美赛o奖论文=== 姜启源 司守奎电子书===论文模板 ====算法代码 如果需要可私信或者评论
  • 针对传统方案评价方法中大多没有考虑评价信息随机性的情况,运用云模型建立...采用灰色关联分析处理云评价指标,对方案进行排序。利用方案总体云评价绘制云图,定性比较各方案优劣。最后以实例验证了所提方法的有效性。
  • 对MCDM进行建模,利用灰色关联分析计算各属性的点关联度,为了得到各属性的相对最优灰关联度并将其充分排序,利用超效率DEA改进灰色关联分析模型。该混合算法能够更加客观地确定权重向量,并且突破权重和为1的限制,...
  • 关联分析是一个很有用的数据挖掘模型,能够帮助企业做很多很有用的产品组合推荐、优惠促销组合,同时也能指导货架摆放是否合理,还能够找到更多的潜在客户,的确真正的把数据挖掘落到实处。那什么是关联分析呢?对于...
  • spss 关联分析

    2013-09-05 16:42:23
    啤酒尿布案例的数据推导,SPSS中的实际演练
  • 第2章 电子商务案例模型;1.1.1 什么是电子商务模式;商务模式包含如下三个要素;是指在网络环境中基于一定技术基础的商务运作方式和盈利模式 分析一个企业的电子商务模式需要讨论以下内容客户价值商业范围定价收入来源...
  • 说起关联分析, 也许是太过于专业了,但连那些都不知道啥数据挖掘的最土鳖的那些土人都听说过啤酒与尿布的典型案例,啤酒与尿布就是关联分析的典型,让无数的人都对该规则 津津乐道,但这个都已经成为过去了,现在...
  • 本代码主要利用Python工具实现Apriori算法进行关联分析,简单明了,易于理解
  • 主要介绍了ThinkPHP5&5.1框架关联模型分页操作,结合实例形式分析了thinkPHP5、5.1关联模型的建立、控制器、模型的实现及分页操作相关技巧,需要的朋友可以参考下
  • 因此,灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法,其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧密,它反映了曲线间的关联程度。 2、输入输出描述 ...
  • 一个实例带你搞懂Apriori关联分析算法

    千次阅读 多人点赞 2020-05-31 16:13:01
    关联分析算法 关联分析是一种在大规模数据集中寻找有趣关系的任务。这些关系可以有两种形式:频繁项集或者关联规则。 附算法分析以及详细代码示例
  • 论文研究-产业关联分析中的图论模型及应用研究.pdf, 本文探讨了用于产业结构和产业关联分析的图论模型的研制问题,并在投入产出模型的基础上建立了一类图论模型.应用...
  • 数学建模之灰色关联分析

    千次阅读 2020-03-09 17:30:51
    什么是灰色关联分析 对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,142
精华内容 48,856
关键字:

关联分析模型案例