精华内容
下载资源
问答
  • CCF大赛:电商用户购买行为预测 解决方案
    千次阅读
    2021-05-18 23:33:34

    电商用户购买行为预测

    比赛介绍

    互联网的出现和普及给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但是网上信息量的大幅增长也带来了“信息过载”的问题。这使得用户在面对大量信息时无法从中获得对自己真正有用的信息,导致用户对信息的使用效率大大降低了。为了帮助用户更快速地过滤出有用的信息,需要依据真实的用户购买行为记录,利用机器学习相关技术建立稳健的电商用户购买行为预测模型。

    意义

    1. 用于预测用户的下一个行为,以此为用户进行商品的推荐,
    2. 准确捕获用户的购买兴趣,提高电商平台商品的购买率
    3. 提升购物体验,促进电子商务发展

    数据集

    先查看大赛提供的train.csv训练数据集:
    数据集的字段的含义:

    image-20210518233010385

    模型选择

    回归预测问题
    可供选择:

    1. 机器学习模型:逻辑回归,支持向量机SVM,决策树,融合逻辑回归和支持向量机

    2. 深度学习模型:CNN-LSTM

    使用CNN从用户行为中提取高影响力的特征,然后利用LSTM建立时间序列预测模型,最后通过全连接层输出模型预测结果

    数据预处理

    首先进行数据清洗:数据处理和特征构建完成用户历史行为数据清洗,剔除刷单用户、重大促销等不具有一般规律的数据,并采用分段下采样方法进行样本均衡处理。

    代码实现:

    import time
    import numpy as np
    import pandas as pd
    from tqdm import tqdm
    
    from sklearn.preprocessing import LabelEncoder
    
    import lightgbm as lgb
    
    raw_train = pd.read_csv('./data/train.csv')
    raw_test = pd.read_csv('./data/test.csv')
    submit_df = pd.read_csv('./data/submit_example.csv')
    
    display(raw_train, raw_test, submit_df)
    
    #预处理
    for df in [raw_train, raw_test]:
        # 处理空值
        for f in ['category_code', 'brand']:
            df[f].fillna('<unkown>', inplace=True)
    
        # 处理时间
        df['event_time'] = pd.to_datetime(df['event_time'], format='%Y-%m-%d %H:%M:%S UTC')
        df['timestamp'] = df['event_time'].apply(lambda x: time.mktime(x.timetuple()))
        df['timestamp'] = df['timestamp'].astype(int)
        
    # 排序
    raw_train = raw_train.sort_values(['user_id', 'timestamp'])
    raw_test = raw_test.sort_values(['user_id', 'timestamp'])
    
    # 处理非数值特征
    df = pd.concat([raw_train, raw_test], ignore_index=True)
    
    for f in ['event_type', 'category_code', 'brand']:
        # 构建编码器
        le = LabelEncoder()
        le.fit(df[f])
    
        # 设置新值
        raw_train[f] = le.transform(raw_train[f])
        raw_test[f] = le.transform(raw_test[f])
        
    # 删除无用列
    useless = ['event_time', 'user_session', 'timestamp']
    for df in [raw_train, raw_test]:
        df.drop(columns=useless, inplace=True)
    #滑动窗口构造数据集
    #为了让机器学习模型能够处理时序数据,必须通过滑动窗口构造数据,后一个时间点的作为前一个时间点的预测值
    
    # 训练集数据生成:滑动窗口
    # 用前一个时间节点的数据预测后一个时间节点是商品
    train_df = pd.DataFrame()
    user_ids = raw_train['user_id'].unique()
    for uid in tqdm(user_ids):
        user_data = raw_train[raw_train['user_id'] == uid].copy(deep=True)
        if user_data.shape[0] < 2:
            # 小于两条的,直接忽略
            continue
    
        user_data['y'] = user_data['product_id'].shift(-1)
        user_data = user_data.head(user_data.shape[0]-1)
        train_df = train_df.append(user_data)
    
    train_df['y'] = train_df['y'].astype(int)
    train_df = train_df.reset_index(drop=True)
    
    # 测试集数据生成,只取每个用户最后一次操作用来做预测
    test_df = raw_test.groupby(['user_id'], as_index=False).last()
    
    train_df.drop(columns=['user_id'], inplace=True)
    
    display(train_df, test_df)
    
    user_ids = test_df['user_id'].unique()
    
    preds = []
    for uid in tqdm(user_ids):
        pids = raw_test[raw_test['user_id'] == uid]['product_id'].unique()
    
        # 找到训练集中有这些product_id的数据作为当前用户的训练集
        p_train = train_df[train_df['product_id'].isin(pids)]
        
        # 只取最后一条进行预测
        user_test = test_df[test_df['user_id'] == uid].drop(columns=['user_id'])
    
        X_train = p_train.iloc[:, :-1]
        y_train = p_train['y']
    
        if len(X_train) > 0:
            # 训练
            clf = lgb.LGBMClassifier(**{'seed': int(time.time())})
            clf.fit(X_train, y_train)
        
            # 预测
            pred = clf.predict(user_test)[0]
        else:
            # 训练集中无对应数据
            # 直接取最后一条数据作为预测值
            pred = user_test['product_id'].iloc[0]
    
        preds.append(pred)
    
    submit_df['product_id'] = preds
    
    # 分数 0.206
    submit_df.to_csv('baseline.csv', index=False)
    
    
    

    如果本文对你有帮助,欢迎点赞、订阅以及star我的项目。
    你的支持是我创作的最大动力!

    更多相关内容
  • 基于机器学习技术的网站用户行为预测.pdf
  • 基于机器学习及电商数据预测用户行为.pdf
  • 基于机器学习用户行为预测性研究,徐帅,崔鸿雁,针对人类行为的可预测性问题,基于分布式爬虫抓取的二十万Github网站用户贡献行为轨迹数据,在利用XGBoost和随机森林两个机器学习方��
  • 机器学习增强的电子商务平台用户行为预测.pdf
  • 基于机器学习用户窃电行为预测.pdf
  • 型智能电表普及后,为了准确检测出电网中的窃电用户,可以结合机器学习的方法.为此,选择了支 持向量机、随机森林和迭代决策树3种机器学习中较常用的大数据算法进行分析,通过不断调整试验数据集 的大小,对3种算法...
  • 实现对采集工况信号时频特征的分解,基于交互式学习技术,完成采集运行数据的聚类分析,设置系统安全风险预测指标,并利用机器学习算法计算对应指标的权值,从系统网络攻击预测用户行为预测和系统硬件设备故障预测...
  • 通过实证分析各个特征对转发行为的具体影响,并利用机器学习中的不同预测算法对用户是否会对给定主题的微博产生转发行为进行预测。实验表明,用我们选取的因素,结合逻辑回归模型对于用户转发行为预测更加准确。
  • Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐

    说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取。

    1.项目背景

          电子商务网站数量迅速上升,将电子商务网站浏览者变为实际消费者,满足消费者需求,通过不同形式提升消费者忠诚度是各电子商务网站面临的首要问题。在此背景下研究具有个性化特征的电子商务推荐服务具有重要意义。

          智能推荐服务是提高电子商务网站销售转化率的重要技术手段之一。它与传统的搜索技术有着重要的区别,智能推荐服务能够更加精准地提供信息,节省用户找寻信息的时间,提高找寻信息的准确度。通过建立智能推荐系统提高服务效率,帮助消费者节约时间成本,帮助企业制定有针对性的营销战略方案,促进企业长期、稳定、高速发展。

          本项目通过对用户访问的网页日志数据进行分析与处理,采用基于物品的协同过滤算法对处理后的数据进行建模分析,并应用模型实现智能推荐,进行个性化推荐,帮助用户更加便捷地获取信息。

    2.项目目标

           某法律网站是某地一家电子商务类的大型法律资讯网站,致力于为用户提供丰富的法律信息与专业咨询服务,本项目主要是为律师与律师事务所提供互联网整合营销解决方案。

            随着企业经营水平的提高,其网站访问量逐步增加,随之而来的数据信息量也在大幅增长。带来的问题是用户在面对大量信息时无法快速获取需要的信息,使得信息使用效率降低。用户在浏览、搜寻想要的信息的过程中需要花费大量的时间,这种情况的出现造成了用户的不断流失,对企业造成巨大的损失。

           为了节省用户时间并帮助用户快速找到感兴趣的信息,利用网站海量的用户访问数据研究用户的兴趣偏好,分析用户的需求和行为,引导用户发现需求信息,将长尾网页准确地推荐给所需用户,帮助用户发现他们感兴趣但很难发现的网页信息。总而言之,智能推荐服务可以为用户提供个性化的服务、改善用户浏览体验、增加用户黏性、从而使用户与企业之间建立稳定的交互关系,实现客户链式反应增值。

    3.项目流程说明

           随着互联网领域的电子商务、上线服务、线上交易等网络业务的普及,大量的信息聚集起来形成海量信息。用户想要从海量信息中快速准确地找到感兴趣的信息变得越来越困难,尤其在电子商务领域问题更加突出。信息过载的问题已经成为互联网技术中的一个重要难题,同时也催生出许多新技术。搜索引擎的诞生就是为了解决这个问题,用户输入关键词,搜索引擎就会返回给用户与输入的关键词相关的信息。但是在用户无法准确描述需求时,搜索引擎就无能为力了。

           与搜索引擎不同,推荐系统并不需要用户提供明确的需求,它是通过分析用户的历史行为,从而主动推荐给用户能够满足他们兴趣和需求的信息。因此,对于用户而言,推荐系统和搜索引擎是两个互补的工具。搜索引擎满足有明确需求的用户,而推荐系统能够帮助用户发现感兴趣的内容。在电子商务领域中,推荐技术可以起到以下作用:

    1. 帮助用户发现其感兴趣的物品,节省用户时间、提升用户体验。
    2. 提高用户对电子商务网站的忠诚度。推荐系统能够准确地发现用户的兴趣点,并将合适的资源推荐给用户,用户容易对该电子商务网站产生依赖,从而提升用户与网站之间的黏性。

    为了解决上述问题,结合本项目提供的原始数据情况,可以分析如下内容:

    1. 按地域分析用户访问网站的时间、访问内容、访问次数等主题,了解用户的浏览行为和感兴趣的网页内容。
    2. 根据用户的访问记录对用户进行个性化推荐服务。

    4.项目步骤与流程

           为了帮助用户从海量的信息中快速发现感兴趣的网页,本项目主要采用协同过滤算法进行推荐,其推荐原理如图所示。

           由于用户访问网站的数据记录较多,若不进行分类处理直接采用协同过滤算法进行推荐,会存在以下问题:

    1. 数据量大说明物品数与用户数较多,在模型构建用户与物品的稀疏矩阵时,模型计算需要消耗大量的时间,并且会造成设备内存空间不足的问题。
    2. 不同的用户关注的信息不同,其推荐结果不能满足用户的个性化需求。

           为了避免上述问题,需要对用户访问记录进行分类处理与分析,如下图所示。在用户访问记录日志中,没有用户访问网页时间长短的记录,不能根据用户在网页的停留时间判断用户是否对浏览网页感兴趣。本项目采用基于用户浏览网页的类型的方法进行分类,然后对每个类型中的内容进行智能推荐。

            采用上述分析方法与思路,结合原始数据及分析目标,整体的网站智能推荐流程如图所示,主要步骤如下:

    1. 从系统中获取用户访问网站的原始记录。
    2. 分析用户访问内容、用户流失等。
    3. 对数据进行预处理,包含数据去重、数据变换等过程。
    4. 以用户访问html后缀的网页为关键条件,对数据进行处理。
    5. 对比多种推荐算法的效果,选择效果较好的模型。通过模型预测,获得推荐结果。

    5.数据获取

           以用户的访问时间为条件,选择3个月内(2015年2月1日至2015年4月29日)用户的访问数据作为原始数据集。由于每个地区的用户访问习惯以及兴趣爱好存在差异性,因此抽取某地区的用户访问数据进行分析,其数据量总共有837450条,其中包括用户号、访问时间、来源网站、访问页面、页面标题、来源网页、标签、网页类别、关键词等。

          在数据抽取过程中,由于数据量较大且存储在数据库中,为了提高数据处理的效率,采取用Python读取数据库的操作方式。本项目用到的数据库为开源数据库(Mysql)。安装数据库后导入本项目的数据原始文件data.sql,然后可以利用Python对Mysql数据库进行连接以及其它相关操作。

           首先在Mysql中创建test数据库,然后把数据导入数据库,最后连接数据库并选取3个月内用户的访问数据,关键代码如下:

    6.探索性数据分析

           原始数据集中包括用户号、访问时间、来源网站、访问页面、页面标题、来源网页、标签、网页类别和关键词等信息,需要对原始数据进行网页类型、点击次数、网页排名等各个维度的分布分析,了解用户浏览网页的行为及关注内容,获得数据内在的规律。

    6.1分析网页类型

    对原始数据中用户点击的网页类型进行统计分析,关键代码如下:

     网页类型统计:

            通过上表可以发现,点击与咨询相关(网页类型为101,http://www.****.cn/ask/)的记录占了49.16%,其他类型(网页类型为199占比24%左右,知识相关(网页类型为107,http://www.****.cn/info/)占比22%左右。

           根据统计结果对用户点击的网页类型进行排名,依次为咨询相关、知识相关、其他方面的网页、法规(类型为301)、律师相关(类型为102)等。然后进一步对咨询类别内部进行统计分析,关键代码如下:

    知识类型内部统计如下表:

            通过上表可以发现,浏览咨询内容页(101003)记录最多,其次是咨询列表页(101002)和咨询页(101001)。初步分析可以得知用户都喜欢通过浏览问题的方式找到自己需要的信息,而不是以提问的方式或者查看长篇内容的方式寻找信息

           首先是网址中带有lawfirm关键字的对应律师事务所,其次是带有ask/exp、ask/online关键字的对应咨询经验和在线咨询页。大多数用户浏览网页的情况为咨询内容页、知识内容页、法规专题页、在线咨询页,其中咨询内容页和知识内容页占比最高。

    对原始数据的网址中带有”?”的数据进行统计,关键代码如下:

    带”?”字符网址类型统计表:

            通过上表可以看出,网址中带有”?”的记录一共有65492条,且不仅仅出现在其他类别中,同时也会出现在咨询内容页和知识内容页中,但在其他类型(1999001)中占比最高,可达到98.82%。因此需要进一步分析其他类型内部的规律,关键代码如下: 

          通过上表可以看出,在1999001类型中,标题为”快车-律师助手”这类信息占比为77.09%,这类页面是律师的登录页面。标题为”咨询发布成功”类信息占比为8.07%,这类网页是自动跳转页面。其他类型的页面大部分为http://www.***.cn/ask/question_3814988.html?&from=androidqq类型的网页。根据业务了解该网页为被分享过的网页,这类网页需要对其进行处理,处理方式为截取网址中”?”前面的网址并还原网址类型。

           在采取截取网址”?”前面网址的处理过程中发现,快搜网址中的类型混杂,不能直接处理。考虑其数据集占比较小,所以在数据处理环节对这部分数据进行删除。同时分析其他类型的网址得出,不包含主网址和关键字的网址有359条记录,http://www.baidu.com/link?。

           访问记录中有一部分用户并没有点击具体的网页,这类网页以”.html”后缀结尾,且大部分是目录网页,这样的用户可以称为”瞎逛”,漫无目的,总共有165654条记录,关键代码如下:

    无目的浏览用户点击分析:

           通过上表可以看出,小部分网页类型是与知识、咨询相关的,大部分网页类型是与地区、律师和事务所相关的,这类用户可能是找律师服务的,也可能是”瞎逛”的。

       综合以上分析,得到一些与分析目标无关数据的规则,记录这些规则有利于在数据清洗阶段对数据进行清洗操作。

    1. 咨询发布成功页面。
    2. 中间类型网页(带有midques_关键字)。
    3. 网址中带有”?”类型,无法还原其本身类型的快搜网页。
    4. 重复数据(同一时间同一用户,访问相同网页)。
    5. 其他类别的数据(主网址不包含关键字)。
    6. 无点击”.html”行为的用户记录。
    7. 律师的行为记录(通过快手-律师助手判断)。

    6.2分析网页点击次数

    统计原始数据中用户浏览网页次数的情况,关键代码如下: 

    统计结果如下表所示,浏览一次的用户最多,占所有用户的58%左右。

    分析浏览次数为一次的用户,关键代码如下:

     浏览一次的用户的分析行为:

            从上表可以看出,问题咨询页占比为77.76%,知识页占比为14.74%,这些记录均是通过搜索引擎进入的。由此分析得出两种可能:

    1. 用户为流失用户,在问题咨询与知识页面上没有找到相关的需要。
    2. 用户找到其需要的信息,因此直接退出。

          综合这些情况,将点击一次的用户行为定义为网页的跳出率。为了降低网页的跳出率,就需要对这些网页进行针对用户的个性化推荐,以帮助用户发现其感兴趣的网页或者需要的网页。

    统计浏览次数为一次的用户浏览的网页的总浏览次数,关键代码如下:

    点击一次用户浏览网页统计:

           从上表可以看出,排名靠前的都是知识与咨询页面,由此猜测大量用户的关注点在知识或咨询方面上。

    7.数据预处理

           本项目通过数据探索发现知识类王爷的额浏览次数在全部类型的网页中占比较高,仅次于资讯类和其他类。而知识类网页中的婚姻类网页是较为热门的网页,故本项目选取婚姻类网页进入模型进行推荐。

           当对原始数据进行探索分析时,发现存在与分析目标无关的数据和不符合建模输入要求的数据,即构建模型需要预处理的数据,需要对此类数据进行数据清洗、数据去重、数据变换以及特征选取等操作,以使数据满足构建推荐系统模型的输入要求。

    通过以下4个步骤对数据进行预处理,其流程如下图所示。

    1. 清除通过数据清洗将数据探索分析过程中发现的与目标无关的数据。
    2. 识别翻页的网址,并对其进行还原,然后对用户访问的网页进行去重操作。
    3. 筛选掉浏览网页次数不满两次的用户。

    将数据集划分为训练集与测试集。

    7.1删除不符合规则的网页

           通过分析原始数发现,不符合规则的网页包括中间页面的网址、咨询发布成功页面、律师登录助手页面等,需要对其进行处理删除,关键代码如下:

    结果如下:

           清洗后数据仍然存在大量的目录网页(可理解为用户浏览信息的路径),这类网页不但对构建推荐系统没有作用,反而会影响推荐结果的准确性,同样需要处理。

    7.2还原翻页网址

           本项目主要对知识相关的网页类型数据进行分析。处理翻页情况最直接的办法使将翻页的网址删掉,但是用户通过搜索引擎进入网站的,访问入口不一定是原始网页,采取删除方法会损失大量有效数据,影响推荐结果。因此对该类网页的处理方式是:首先识别翻页的网址,然后对翻页的网址进行还原,最后针对每个用户访问的网页进行去重操作,关键代码如下:

    结果如下:

    7.3筛选浏览次数不满两次的用户

            根据数据探索的结果可知,数据中存在大量仅浏览一次就跳出的用户,浏览次数在两次及以上的用户的浏览记录更适于推荐,而浏览次数仅一次的用户的浏览记录进入推荐模型会影响推荐模型的效果,因此需要筛选去除浏览次数不满两次的用户,关键代码如下:

     结果如下:

    7.4划分数据集

      将数据集按8:2的比例划分为训练集和测试集,关键代码如下:

     结果如下:

    8.构建智能推荐模型

           推荐系统是解决信息过载的有效手段,也是电子商务服务提供商提供个性化服务的重要信息工具。在实际构造推荐系统时,并不是采用单一的某种推荐方法进行推荐。在大部分推荐系统都会结合多种推荐方法将推荐结果进行组合,最后得出最优的推荐结果。在组合推荐结果时,可以采用串行或者并行的方法。

    8.1基于物品的协同过滤算法的基本概念

           本项目基于物品的协同过滤系统的一般处理过程,分析用户与物品的数据集,通过用户对物品的浏览与否(喜好)找到相似的物品,然后根据用户的历史喜好,推荐相似的物品给目标用户。下图是基于物品的协同过滤推荐系统图:

    从图中可知

    用户1喜欢物品A和物品C;

    用户2喜欢物品A、物品B和物品C;

    用户3喜欢物品A。

          从这些用户的历史喜好可以得出物品A和物品C时比较类似的,喜欢物品A的人都喜欢物品C,基于这个数据可以推断用户3很有可能也喜欢物品C,所以系统会将物品C体检给用户3。

        根据协同过滤的处理过程可知,基于物品的协同过滤算法(简称ItemCF算法)主要分为2个步骤:

    1. 计算物品之间的相似度。
    2. 根据物品的相似度和用户的历史行为给用户生成推荐列表。

           其中,关于物品相似度计算的方法有夹角余弦、杰卡德(Jaccard)相似系数和相关系数等。

           将用户对某一个物品的喜好或者评分作为一个向量,例如,所有用户对物品1的评分或者喜好程度表示为A1=(x11,x21,x31,…xn1),所有用户对物品M的评分或者喜好程度表示为Am=(x1m,x2m,x3m,…xnm),其中m为物品,n为用户数。采用下述几种方法计算两个物品之间的相似度,其计算公式如下表所示。由于用户的行为是二元选择(0-1型),因此本项目在计算物品相似度的过程中采用杰卡德相似系数法。 

    在协同过滤系统中发现用户存在多种行为方式,如是否浏览网页,是否有购买、评论、评分、点赞等行为,若采用统一的方式表示所有行为是困难的,因此只对具体的分析目标进行具体表示。本项目原始数据只记录了用户访问网站的浏览行为,所以用户的行为是浏览网页与否,不存在购买、评分和评论等用户行为。

    计算各个物品之间的相似度之后,即可构成一个物品之间的相似度矩阵,如下表所示。通过相似度矩阵,推荐算法会给用户推荐与其物品最相似的K个的物品。

    相似度矩阵

           如下公式度量了推荐算法中用户对所有物品的感兴趣程度。其中R代表了用户对物品的兴趣,sim代表了所有物品之间的相似度,P为用户对物品感兴趣的程度。由于本项目中用户的浏览行为是二元选择(是与否),所以用户对物品的兴趣R矩阵只存在0和1.

           推荐系统是根据物品的相似度以及用户的历史行为对用户的兴趣度进行预测并推荐的,在评价模型的时候一般是将数据集划分成训练集和测试集两部分。模型通过在训练集的数据上进行训练学习得到推荐模型,然后在测试集上数据进行模型预测,最终统计出相应的评测指标来评价模型预测效果的好与坏。

           模型的评测采用的方法是交叉验证法。交叉验证法即将用户行为数据按照均匀分布随机分成M份(本项目M取10),挑选一份作为测试集,将剩下的M-1份作为训练集。然后在训练集上建立模型,并在测试集上对用户行为进行预测,统计出相应的评测指标。为了保证评测指标不是过拟合的结果,需要进行M次实验,并且每次都使用不同的测试集。最后将M次实验测出的评测指标的平均值作为最终的评测指标。

           基于协同过滤推荐算法主要包括两个部分:基于用户的协同过滤推荐和基于物品的协同过滤推荐。结合实际的情况分析判断,选择基于用户的协同过滤推荐算法进行推荐,构建模型的流程如下图所示: 

             其中训练集与测试集是通过交叉验证的方法划分后的数据集。通过协同过滤算法的原理可知,在建立推荐系统时,建模的数据量越大越能消除数据中的随机性,得到的推荐结果越好。其弊端在于数据量越大模型建立以及模型计算耗时越久。

    8.2基于物品的协同过滤算法的优缺点

    基于物品的协同过滤算法的优缺点如下所示;

    (1)优点

          可以离线完成相似度步骤,降低了在线计算量,提高了推荐效率;并利用用户的历史行为给用户做推荐解释,结果容易让客户信服。

    (2)缺点  

           现有的协同过滤算法没有充分利用到用户间的差别,使计算得到的相似度不够准确,导致影响了推荐精度;此外,用户的兴趣是随着时间不断变化的,算法可能对用户新点击兴趣的敏感性较低,缺少一定的实时推荐,从而影响了推荐质量。

    基于物品的协同过滤适用于物品数明显小于用户数的情形,如果物品数很多,会导致计算物品相似度矩阵代价巨大。

    8.3模型构建

           将训练集中的数据转换成0-1二元型数据,使用ItemCF算法对数据进行建模,并给出预测推荐结果,关键代码如下:

           通过基于协同过滤算法构建的推荐系统,婚姻知识类网址得到了针对每个用户的推荐,部分结果如下表所示:

            从上表可知,根据用户访问的相关网址对用户进行推荐。但是其推荐结果存在”NaN”的情况。这种情况是由于当前的数据集中,访问该网址的只有单独一个用户,因此在协同过滤算法中计算它与其他物品的相似度为0,所以就出现了无法推荐的情况。一般出现这样的情况,在实际中可以考虑使用其他非个性化的推荐方法进行推荐,例如,基于关键字、相似行为的用户进行推荐等。

    9.模型评价  

           推荐系统的评价一般可以从以下几个方面整体进行考虑。

    1)用户、物品提供者、提供推荐系统网站。

    2)好的推荐系统能够满足用户的需求,推荐其感兴趣的物品。并且在推荐的物品中,不能全部都是热门物品,同时也需要用户反馈意见以帮助完善其推荐系统。

           因此,好的推荐系统不仅能预测用户的行为,而且能帮助用户发现可能会感兴趣但却不易被发现的物品;同时,推荐系统还应该帮助商家将长尾中的好商品发掘出来,推荐给可能会对它们感兴趣的用户。

           在实际应用中,评测推荐系统对三方的影响是比不可少的。其评测指标主要来源于如下3种评测推荐效果的实验方法,即离线测试、用户调查和在线实验。

    (1)离线测试

           离线测试是通过从实际系统中提取数据集,然后采用各种推荐算法对其进行测试,以获取各个算法的评测指标。这种实验方法的好处是不需要真实用户参与。

          注意:离线测试的指标和实际商业指标存在差距,比如预测准确率和用户满意度之间就存在很大差别,高预测准确率不等于高用户满意度。所以当推荐系统投入实际应用之前,需要利用测试的推荐系统进行用户调查。

    (2)用户调查  

           用户调查是利用测试的推荐系统调查真实用户,观察并记录他们的行为,并让他们回答一些相关的问题。通过分析用户的行为和他们反馈的结果,判断测试推荐系统的好坏。

    (3)在线测试  

           在线测试,顾名思义就是直接将系统投入到实际应用中,通过不同的评测指标比较不同的推荐算法的结果,比如点击率、跳出率等。

           由于本案中的模型是采用离线的数据集构建的,因此在模型评价阶段采用离线测试的方法获取评价指标。在电子商务网站中,用户只有二元选择,如喜欢与不喜欢、浏览与否等。针对这种类中的数据预测,就要使用分类准确度,其中,评测指标有准确率(P,precesion),它表示用户对一个被推荐产品感兴趣的可能性;召回率(R,recall)表示一个用户喜欢的产品被推荐的概率;F1指标表示综合考虑准确度与召回率因素,以便更好地评价算法的优劣。准确率、召回率和F1指标的计算公式如下表所示:

      其中相关的指标说明如下表所示:

      计算推荐结果的准确率、召回率和F1指标,关键代码如下:

     分类评测指标结果:

     

           由于本项目采用的是最基本的协同过滤算法进行建模,因此得出的模型结果也是一个初步的效果,在实际应用的过程中要结合业务进行分析,对模型进行进一步改造。一般情况下,最热门的物品往往具有较高的”相似性”。比如热门的网址,访问各类网页的大部分人都会进行访问,在计算物品相似度的过程中,就可以知道各类网页都和某些热门的网址有关。因此处理热门网址的方法如下:

    1. 在计算相似度的过程中,可以加强对热门网址的惩罚,降低其权重,比如对相似度平均化或对数化等方法。
    2. 将推荐结果中的热门网址进行过滤,推荐其他网址,将热门网址以热门排行榜的形式进行推荐,如下表所示。

            在协同过滤推荐过程中,两个物品相似是因为它们共同出现在很多用户的兴趣列表中,也可以说是每个用户的兴趣列表都对这两个物品的相似度产生贡献。但并不是每个用户的贡献度都相同。通常不活跃的用户要么是新用户,要么是只来过网站一两次的老用户。而在实际分析中,一般认为新用户倾向于浏览热门物品,因为他们对网站还不熟悉,只能点击首页的热门物品,而老用户则会逐渐开始浏览冷门物品。因此可以说,活跃用户对物品相似度的贡献应该小于不活跃的用户。所以在改进相似度的过程中,取用户活跃度对数的倒数作为分子,即本项目中相似度的公式如下:

           然而在实际应用中,为了尽量提高推荐的准确率,还会将基于物品的相似度矩阵按最大值归一化,不仅可以增加推荐的准确度,还可以提高推荐的覆盖率和多样性。由于本项目的推荐是针对某一类数据进行推荐的,因此不存在类间的多样性。

          当然,除了个性化推荐列表,还有另一个重要的推荐应用,就是相关推荐列表。有过网购经历的用户都知道,当你在电子商务平台上购买一件上商品时,它会在商品信息下面展示相关的商品。一种是包含购买了这个商品的用户也经常购买的其它商品;这两种相关推荐列表的区别是使用了不同用户行为计算物品的相似性。

    本次机器学习项目实战所需的资料,项目资源如下:
    链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ 
    提取码:thgk

    网盘如果失效,可以添加博主微信:zy10178083

    展开全文
  • 图解机器学习 | 机器学习基础知识

    千次阅读 2022-03-09 22:35:51
    本文覆盖机器学习常见知识要点,包括机器学习流程、算法分类(监督学习、无监督学习、强化学习)、依托的问题场景(分类、回归、聚类、降维)、机器学习模型评估与选择等。

    作者:韩信子@ShowMeAI
    教程地址http://www.showmeai.tech/tutorials/34
    本文地址http://www.showmeai.tech/article-detail/185
    声明:版权所有,转载请联系平台与作者并注明出处


    1. 机器学习概述

    1)什么是机器学习

    人工智能(Artificial intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它是一个笼统而宽泛的概念,人工智能的最终目标是使计算机能够模拟人的思维方式和行为。大概在上世纪50年代开始兴起,但是受限于数据和硬件设备等限制,当时发展缓慢。

    机器学习(Machine learning)是人工智能的子集,是实现人工智能的一种途径,但并不是唯一的途径。它是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。大概在上世纪80年代开始蓬勃发展,诞生了一大批数学统计相关的机器学习模型。

    深度学习(Deep learning)是机器学习的子集,灵感来自人脑,由人工神经网络(ANN)组成,它模仿人脑中存在的相似结构。在深度学习中,学习是通过相互关联的「神经元」的一个深层的、多层的「网络」来进行的。「深度」一词通常指的是神经网络中隐藏层的数量。大概在2012年以后爆炸式增长,广泛应用在很多的场景中。

    让我们看看国外知名学者对机器学习的定义:

    机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构,使之不断改善自身。从实践的意义上来说,机器学习是在大数据的支撑下,通过各种算法让机器对数据进行深层次的统计分析以进行「自学」,使得人工智能系统获得了归纳推理和决策能力

    通过经典的「垃圾邮件过滤」应用,我们再来理解下机器学习的原理,以及定义中的T、E、P分别指代什么。

    2)机器学习三要素

    机器学习三要素包括数据模型算法。这三要素之间的关系,可以用下面这幅图来表示:

    (1)数据

    数据驱动:数据驱动指的是我们基于客观的量化数据,通过主动数据的采集分析以支持决策。与之相对的是经验驱动,比如我们常说的「拍脑袋」。

    (2)模型&算法

    模型:在AI数据驱动的范畴内,模型指的是基于数据X做决策Y的假设函数,可以有不同的形态,计算型和规则型等。

    算法:指学习模型的具体计算方法。统计学习基于训练数据集,根据学习策略,从假设空间中选择最优模型,最后需要考虑用什么样的计算方法求解最优模型。通常是一个最优化的问题。

    3)机器学习发展历程

    人工智能一词最早出现于1956年,用于探索一些问题的有效解决方案。1960年,美国国防部借助「神经网络」这一概念,训练计算机模仿人类的推理过程。

    2010年之前,谷歌、微软等科技巨头改进了机器学习算法,将查询的准确度提升到了新的高度。而后,随着数据量的增加、先进的算法、计算和存储容量的提高,机器学习得到了更进一步的发展。

    4)机器学习核心技术

    • 分类:应用以分类数据进行模型训练,根据模型对新样本进行精准分类与预测。

    • 聚类:从海量数据中识别数据的相似性与差异性,并按照最大共同点聚合为多个类别。

    • 异常检测:对数据点的分布规律进行分析,识别与正常数据及差异较大的离群点。

    • 回归:根据对已知属性值数据的训练,为模型寻找最佳拟合参数,基于模型预测新样本的输出值。

    5)机器学习基本流程

    机器学习工作流(WorkFlow)包含数据预处理(Processing)、模型学习(Learning)、模型评估(Evaluation)、新样本预测(Prediction)几个步骤。

    • 数据预处理:输入(未处理的数据 + 标签)→处理过程(特征处理+幅度缩放、特征选择、维度约减、采样)→输出(测试集 + 训练集)。

    • 模型学习:模型选择、交叉验证、结果评估、超参选择。

    • 模型评估:了解模型对于数据集测试的得分。

    • 新样本预测:预测测试集。

    6)机器学习应用场景

    作为一套数据驱动的方法,机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别和机器人等领域。

    • 智能医疗:智能假肢、外骨骼、医疗保健机器人、手术机器人、智能健康管理等。

    • 人脸识别:门禁系统、考勤系统、人脸识别防盗门、电子护照及身份证,还可以利用人脸识别系统和网络,在全国范围内搜捕逃犯。

    • 机器人的控制领域:工业机器人、机械臂、多足机器人、扫地机器人、无人机等。

    2.机器学习基本名词

    • 监督学习Supervised Learning):训练集有标记信息,学习方式有分类和回归。

    • 无监督学习Unsupervised Learning):训练集没有标记信息,学习方式有聚类和降维。

    • 强化学习Reinforcement Learning):有延迟和稀疏的反馈标签的学习方式。

    • 示例/样本:上面一条数据集中的一条数据。

    • 属性/特征:「色泽」「根蒂」等。

    • 属性空间/样本空间/输入空间X:由全部属性张成的空间。

    • 特征向量:空间中每个点对应的一个坐标向量。

    • 标记:关于示例结果的信息,如((色泽=青绿,根蒂=蜷缩,敲声=浊响),好瓜),其中「好瓜」称为标记。

    • 分类:若要预测的是离散值,如「好瓜」,「坏瓜」,此类学习任务称为分类。

    • 假设:学得模型对应了关于数据的某种潜在规律。

    • 真相:潜在规律自身。

    • 学习过程:是为了找出或逼近真相。

    • 泛化能力:学得模型适用于新样本的能力。一般来说,训练样本越大,越有可能通过学习来获得具有强泛化能力的模型。

    3.机器学习算法分类

    1)机器学习算法依托的问题场景

    机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动「学习」的算法。

    机器学习算法从数据中自动分析获得规律,并利用规律对未知数据进行预测。机器学习理论关注可以实现的、行之有效的学习算法。很多推论问题属于无程序可循难度,所以部分的机器学习研究是开发容易处理的近似算法。

    机器学习最主要的类别有:监督学习、无监督学习和强化学习。

    监督学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归分析和统计分类。

    无监督学习:与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有生成对抗网络(GAN)、聚类。

    强化学习:通过观察来学习做成如何的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。

    2)分类问题

    分类问题是机器学习非常重要的一个组成部分。它的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。分类问题可以细分如下:

    • 二分类问题:表示分类任务中有两个类别新的样本属于哪种已知的样本类。

    • 多类分类(Multiclass classification)问题:表示分类任务中有多类别。

    • 多标签分类(Multilabel classification)问题:给每个样本一系列的目标标签。

    了解更多机器学习分类算法:KNN算法逻辑回归算法朴素贝叶斯算法决策树模型随机森林分类模型GBDT模型XGBoost模型支持向量机模型等。

    3)回归问题

    了解更多机器学习回归算法:决策树模型随机森林分类模型GBDT模型回归树模型支持向量机模型等。

    4)聚类问题

    了解更多机器学习聚类算法:聚类算法

    5)降维问题

    了解更多机器学习降维算法:PCA降维算法

    4.机器学习模型评估与选择

    1)机器学习与数据拟合

    机器学习最典型的监督学习为分类与回归问题。分类问题中,我们学习出来一条「决策边界」完成数据区分;在回归问题中,我们学习出拟合样本分布的曲线。

    2)训练集与数据集

    我们以房价预估为例,讲述一下涉及的概念。

    • 训练集(Training Set):帮助训练模型,简单的说就是通过训练集的数据让确定拟合曲线的参数。

    • 测试集(Test Set):为了测试已经训练好的模型的精确度。

    当然,test set这并不能保证模型的正确性,只是说相似的数据用此模型会得出相似的结果。因为在训练模型的时候,参数全是根据现有训练集里的数据进行修正、拟合,有可能会出现过拟合的情况,即这个参数仅对训练集里的数据拟合比较准确,这个时候再有一个数据需要利用模型预测结果,准确率可能就会很差。

    3)经验误差

    在训练集的数据上进行学习。模型在训练集上的误差称为「经验误差」(Empirical Error)。但是经验误差并不是越小越好,因为我们希望在新的没有见过的数据上,也能有好的预估结果。

    4)过拟合

    过拟合,指的是模型在训练集上表现的很好,但是在交叉验证集合测试集上表现一般,也就是说模型对未知样本的预测表现一般,泛化(Generalization)能力较差。

    如何防止过拟合呢?一般的方法有Early Stopping、数据集扩增(Data Augmentation)、正则化、Dropout等。

    • 正则化:指的是在目标函数后面添加一个正则化项,一般有L1正则化与L2正则化。L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项。

    • 数据集扩增:即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般方法有:从数据源头采集更多数据、复制原有数据并加上随机噪声、重采样、根据当前数据集估计数据分布参数,使用该分布产生更多数据等。

    • DropOut:通过修改神经网络本身结构来实现的。

    5)偏差

    偏差Bias),它通常指的是模型拟合的偏差程度。给定无数套训练集而期望拟合出来的模型就是平均模型。偏差就是真实模型和平均模型的差异。

    简单模型是一组直线,平均之后得到的平均模型是一条直的虚线,与真实模型曲线的差别较大(灰色阴影部分较大)。因此,简单模型通常高偏差

    复杂模型是一组起伏很大波浪线,平均之后最大值和最小组都会相互抵消,和真实模型的曲线差别较小,因此复杂模型通常低偏差(见黄色曲线和绿色虚线几乎重合)。

    6)方差

    方差(Variance),它通常指的是模型的平稳程度(简单程度)。简单模型的对应的函数如出一辙,都是水平直线,而且平均模型的函数也是一条水平直线,因此简单模型的方差很小,并且对数据的变动不敏感。

    复杂模型的对应的函数千奇百怪,毫无任何规则,但平均模型的函数也是一条平滑的曲线,因此复杂模型的方差很大,并且对数据的变动很敏感。

    7)偏差与方差的平衡

    8)性能度量指标

    性能度量是衡量模型泛化能力的数值评价标准,反映了当前问题(任务需求)。使用不同的性能度量可能会导致不同的评判结果。更详细的内容可见 模型评估方法与准则

    (1)回归问题

    关于模型「好坏」的判断,不仅取决于算法和数据,还取决于当前任务需求。回归问题常用的性能度量指标有:平均绝对误差、均方误差、均方根误差、R平方等

    • 平均绝对误差Mean Absolute Error,MAE),又叫平均绝对离差,是所有标签值与回归模型预测值的偏差的绝对值的平均。

    • 平均绝对百分误差Mean Absolute Percentage Error,MAPE)是对MAE的一种改进,考虑了绝对误差相对真实值的比例。

    • 均方误差Mean Square Error,MSE)相对于平均绝对误差而言,均方误差求的是所有标签值与回归模型预测值的偏差的平方的平均。

    • 均方根误差Root-Mean-Square Error,RMSE),也称标准误差,是在均方误差的基础上进行开方运算。RMSE会被用来衡量观测值同真值之间的偏差。

    • R平方,决定系数,反映因变量的全部变异能通过目前的回归模型被模型中的自变量解释的比例。比例越接近于1,表示当前的回归模型对数据的解释越好,越能精确描述数据的真实分布。

    (2)分类问题

    分类问题常用的性能度量指标包括错误率(Error Rate)、精确率(Accuracy)、查准率(Precision)、查全率(Recall)、F1、ROC曲线、AUC曲线和R平方等。更详细的内容可见 模型评估方法与准则

    • 错误率:分类错误的样本数占样本总数的比例。

    • 精确率:分类正确的样本数占样本总数的比例。

    • 查准率(也称准确率),即在检索后返回的结果中,真正正确的个数占你认为是正确的结果的比例。

    • 查全率(也称召回率),即在检索结果中真正正确的个数,占整个数据集(检索到的和未检索到的)中真正正确个数的比例。

    • F1是一个综合考虑查准率与查全率的度量,其基于查准率与查全率的调和平均定义:即:F1度量的一般形式-Fβ,能让我们表达出对查准率、查全率的不同偏好。

    ROC曲线(Receiver Operating Characteristic Curve)全称是「受试者工作特性曲线」。综合考虑了概率预测排序的质量,体现了学习器在不同任务下的「期望泛化性能」的好坏。ROC曲线的纵轴是「真正例率」(TPR),横轴是「假正例率」(FPR)。

    AUC(Area Under ROC Curve)是ROC曲线下面积,代表了样本预测的排序质量

    从一个比较高的角度来认识AUC:仍然以异常用户的识别为例,高的AUC值意味着,模型在能够尽可能多地识别异常用户的情况下,仍然对正常用户有着一个较低的误判率(不会因为为了识别异常用户,而将大量的正常用户给误判为异常。

    9)评估方法

    我们手上没有未知的样本,如何可靠地评估?关键是要获得可靠的「测试集数据」(Test Set),即测试集(用于评估)应该与训练集(用于模型学习)「互斥」。

    常见的评估方法有:留出法(Hold-out)、交叉验证法( Cross Validation)、自助法(Bootstrap)。更详细的内容可见 模型评估方法与准则

    留出法(Hold-out)是机器学习中最常见的评估方法之一,它会从训练数据中保留出验证样本集,这部分数据不用于训练,而用于模型评估。

    机器学习中,另外一种比较常见的评估方法是交叉验证法Cross Validation)。k 折交叉验证对 k 个不同分组训练的结果进行平均来减少方差,因此模型的性能对数据的划分就不那么敏感,对数据的使用也会更充分,模型评估结果更加稳定。

    自助法(Bootstrap)是一种用小样本估计总体值的一种非参数方法,在进化和生态学研究中应用十分广泛

    Bootstrap通过有放回抽样生成大量的伪样本,通过对伪样本进行计算,获得统计量的分布,从而估计数据的整体分布。

    10)模型调优与选择准则

    我们希望找到对当前问题表达能力好,且模型复杂度较低的模型:

    • 表达力好的模型,可以较好地对训练数据中的规律和模式进行学习;

    • 复杂度低的模型,方差较小,不容易过拟合,有较好的泛化表达。

    11)如何选择最优的模型

    (1)验证集评估选择

    • 切分数据为训练集和验证集。

    • 对于准备好的候选超参数,在训练集上进行模型,在验证集上评估。

    (2)网格搜索/随机搜索交叉验证

    • 通过网格搜索/随机搜索产出候选的超参数组。

    • 对参数组的每一组超参数,使用交叉验证评估效果。

    • 选出效果最好的超参数。

    (3)贝叶斯优化

    • 基于贝叶斯优化的超参数调优。

    视频教程

    可以点击 B站 查看视频的【双语字幕】版本

    【双语字幕+资料下载】斯坦福CS229 | 机器学习-吴恩达主讲(2018·完整版)

    【双语字幕+资料下载】斯坦福CS229 | 机器学习-吴恩达主讲(2018·完整版)

    https://www.bilibili.com/video/BV1TT4y127Nf

    ShowMeAI相关文章推荐

    ShowMeAI系列教程推荐

    展开全文
  • 除了用户登录的机器,登录时间也是行为特征中非常重要的一个环节,基于时间序列的分析方法有很多,这里我们使用KDE(核心概率密度估计)算法来统计和预测用户在某个时间段登录的概率,这种方法可以有效的克服离散数据...

    【摘要】最近看到越来越多的安全圈的同学开始关注UBA或者UEBA的相关产品和技术,恰好这一段时也一直在跟进UBA产品的状况,正如Gartner报告所述,最具创新能力的UBA供应商往往都是一些初创公司,我们比较了IBM、HPE、Splunk这类大公司的UBA产品,但是感觉无非就是SIEM产品的更新升级罢了,相反一些名不见经传的初创公司如Balabit、Sqrrl等的UBA产品到让人眼前一亮。在参考业界的同时,我们也在UBA的核心算法上做了一番研究,要知道UBA之所以号称下一代SIEM,其核心就是将机器学习引入行为数据检测,本文简要总结一下近期研究的适用于UBA的机器学习算法和效果。

    UBA产品并不依赖某个“银弹”算法,其必定是一系列机器学习算法的有机融合,稍微了解机器学习的同学都清楚,像贝叶斯家族、线性回归这类有监督学习算法往往都需要大量的训练样本,但是网络安全领域APT攻击的样本一年抓不住两个,要说大量训练几乎没可能,因此UBA产品大量采用非监督学习算法,通过聚合行为数据巧妙的达到异常检测的目的。下面简要介绍一下在行为检测过程中常用的机器学习算法。

    首先我们假设一个用户场景,张三,是一个SO的系统管理员,他的账号有很多出入IT系统的权限,某天他的账号被黑客盗用了,黑客通过VPN等通道接入内网,并且将数据偷盗到公司外出售给竞争对手。

    一个低风险用户的正常业务活动通常没什么可关注的,但是一些高风险人群的正常活动或者低风险账号进行的高危操作则足以值得调查人员关注,更近一步,如果一个高风险用户做了一些高危并且不长出现的动作,那就绝对需要安全人员介入调查了。这里有一个问题,我们如何知道一个用户风险等级是高还是低?这便是UBA及其算法要解决的核心问题,通过建立动态行为基线发现用户偏离正常模式的行为,并根据风险累计的数值判断用户风险级别。综上,构建用户的特征行为矩阵是第一步,也即User-Profile,特征行为矩阵的构建方法五花八门,考虑到HBase支持数据量大,列式存储等特点,我们选择将特征矩阵保存在HBase里。

    张三,像其他特权用户一样,利用其账号的权限登录到某一台主机或者服务器,主机登录算法用以检测每个用户经常使用的主机或者服务,DBA通常倾向于登录固定的几台机器,并且都是使用相似的命令,同时销售人员都是使用天兔或者某个XX系统的服务,两者使用方式完全不同。这里张三登录的是一台保存销售数据的服务器,而显然,这与他之前的模式或者与他所在的Peer-Group都是格格不入的。这里我们使用KMeans算法根据用户行为数据的特征矩阵对用户划分Peer-Group,行为模式类似的人群会划分到一个动态群组。

    除了动态群组,根据现有的系统权限组进行风险评估同样是一种有效方式,我们从LDAP或者AD获取用户组以及组的成员数,通常规模较小的组比成千上万用户的组风险系数更高。当张三的账号被黑客从普通管理员组提升到超级管理员组的时候,他的账号瞬间进入了一个人烟罕至的群组,这时候他的风险值会瞬间提升。

    除了用户登录的机器,登录时间也是行为特征中非常重要的一个环节,基于时间序列的分析方法有很多,这里我们使用KDE(核心概率密度估计)算法来统计和预测用户在某个时间段登录的概率,这种方法可以有效的克服离散数据在模式匹配过程中容易过耦合的问题。比如张三作为一个系统管理员,通常的登录时间是上班时间以及晚饭以后的时间,早上7:30属于正常登录时间,而凌晨0点登录就会被标记为高度反常和可疑。KDE曲线如下图:

    张三登录系统以后进行了一系列的操作,通常一个用户在一段时间内能够产生的操作个数也是一个人的典型特征,User-Profile聚合一个用户在一段时间内产生的所有行为数据的数量,使用KDE重新组织统计数据,并检测这个模式是否发生明显改变。如果这里张三在一小时内接连登录了30+台服务器,而他通常也就登录2、3台,那么这里就与正常的行为有明显的偏移。

    基于频繁项集的聚类算法(如Aprior/FP-Growth)在零售行业很早以前就有广泛应用,比如沃尔玛对顾客购买商品的模式发掘发现啤酒和尿布经常一起出售。基于频繁项集的机器学习算法在UBA领域也有广泛应用,比如,张三通常在周末的时候通过SSH协议登录,而在工作日通过RDP协议登录,那么有一天他在周末通过RDP登录就是一个行为模式的偏移。

    主成分分析(PCA)是一种应用广泛的降维算法,其在行为数据异常检测的过程中有很好的效果,首先用户行为的特征矩阵往往都有成千上万个维度,如果我们想从海量数据的特征矩阵中找出异常也即离群的点,计算难度会比较大,我们采用PCA对特征进行降维并结合KMeans等聚类算法找出离群点。比如,张三通常会长时间使用前台的服务器,而运维后台服务器的时候比较短,如果他长时间停留在后台服务器上我们的算法会将其潜在的风险值提高。

    上面介绍的几个算法Spark的MLlib提供的全部的实现,不得不感叹一下Spark确实是解放程序猿双手的良心之作。再往后,基于图数据的分析挖掘是我们后续的研究方向,安全调查人员时常需要看到用户和实体之间的数据关联,或者所谓的Kill-Chain,图数据库和基于Graph的算法天然支持这一点,好在Spark GraphX又替我们做到了这一步。图数据的挖掘我想业界应该没有比Palantir做的更好的了,就是那个号称帮助美军找到*** 的那家传奇数据公司

    作者:菊花茶

    展开全文
  • 比较有名的机器学习案例包括Netflix根据用户历史浏览行为用户推荐电影,亚马逊基于用户的历史购买行为来推荐图书。 那么,如果你想要学习机器学习的算法,该如何入门呢?就我而言,我的入门课程是在哥本哈根留学时...
  • pos / len(all_user_set) print ('所有用户预测购买用户的准确率为 ' + str(all_user_acc)) print ('所有用户预测购买用户的召回率' + str(all_user_recall)) 所有用户预测购买用户的准确率为 0....
  • 前文回顾: 用机器学习来提升你的用户增长:第一步,了解你的目标 用机器学习来提升你的用户增长:第二步,客户分群 用机器学习来提升你的用户增长:第三步,预测客户的终生价值 用机器学习来提升你的用户增长:第...
  • 电商用户购买行为预测-排名48-0.23

    千次阅读 多人点赞 2020-12-08 20:01:52
    任务:依据电子商务平平台上真实的用户行为记录,利用机器学习相关技术,建立稳健的电商用户购买行为预测模型,预测用户下一个可能会购买的商品。 数据简介 数据整理自一家中等化妆品在线商店公布的网上公开数据集,...
  • 主题:京东用户购买意向预测 数据集: 这里涉及到的数据集是京东最新的数据集: JData_User.csv 用户数据集 105,321个用户 JData_Comment.csv 商品评论 558,552条记录 JData_Product.csv 预测商品集合 24,187条记录...
  • 前文回顾: 用机器学习来提升你的用户增长:第一步,了解你的目标 用机器学习来提升你的用户增长:第二步,客户分群 用机器学习来提升你的用户增长:第三步,预测客户的终生价值 用机器学习来提升你的用户增长:第...
  • 机器学习之CPU利用率预测

    千次阅读 2019-12-26 14:58:35
    利用上篇运维指令不用记,会用SQL就可以,可对CPU信息进行采集并结合机器学习算法对CPU的利用率进行预测,从而让运维人员及时了解CPU未来运转情况,从容应对突发问题。 一、预测方法简述 预测算法属于监督式机器...
  • 七、基于机器学习方法对销售预测的研究

    万次阅读 多人点赞 2018-06-19 16:59:39
    基于机器学习方法对销售预测的研究 在开始今天的分享之前,我首先跟大家简单的聊一下,刚刚过去的双十一,大家可能更关心的是双十一的折扣,什么商品打了什么折扣。但是对于天猫而言,他们可能更关心的是双十一当天...
  • 什么是机器学习机器学习与AI的关系?

    千次阅读 热门讨论 2021-02-26 11:56:15
    而这类问题正是机器学习所能够解决的。 传统上来讲,计算机编程指在结构化的数据上执行明确的程序规则。软件开发人员动手编写程序,告诉计算机如何对数据执行一组指令,并输出预期的结果,如图1-1所示。这个过程与...
  • 机器学习的应用场景

    2017-03-29 15:29:25
    分类:分类可以找出这些不同种类客户之间的特征,让用户了解不同行为类别客户的分布特征,从而进行商业决策和业务活动,如:在银行行业,可以通过阿里云机器学习对客户进行分类,以便进行风险评估和防控;...
  • 天池大赛: IJCAI-17 口碑商家客流量预测 https://tianchi.aliyun.com/competition/entrance/231591/introduction 大赛第一名: https://gitlab.tianchi.aliyun.com/race231591/gitlab-u2323 ...htt...
  • 我对机器学习的理解
  • 很高兴“InfoQ”团队和“百分点大数据学院”牵头举办此次活动。“百分点大数据学院”是由百分点发起的大数据领域专业、开放的分享交流平台,通过定期举办线上线下活动,邀请...我分享的主题是《基于机器学习方法对...
  • ​ UEBA用户实体行为分析,更多UEBA相关概念参考《UEBA白皮书》 UEBA的核心点 1.跨越SIEM/ROC产品,UEBA产品考虑更多的数据源。 ​ 从网络设备、系统、应用、数据库和用户处收集数据,有更多的数据,是其成功的...
  • 针对 IT,机器学习到底意味着什么? 为什么我们需要机器学习? 在 Elastic Stack 中,机器学习已经完全内置,非常易于使用 能够正确诠释 Elastic 的机器学习的结果对发挥它的重要性至关重要 针对 IT,机器学习...
  • 距离上次介绍机器学习相关的内容,已经过了一年的时间了,而这篇博客目前的阅读量也将近3000k,这样数据看起来似乎也还算不错,可惜因为我当时没有足够的时间和精力去完整把这篇博客写完,只介绍了机器学习的基础...
  • 我们说,机器学习工程有几个基本的环节,大致可以粗略划分为:收集数据、清洗数据、选择模型、训练模型、使用模型预测。 问题在哪呢?在以前,这几个环节都很可能是在同一台电脑上完成的,但现在不行了,尤其是深度...
  • 机器学习7个主要领域

    万次阅读 多人点赞 2019-06-13 08:24:58
    机器学习是识别隐藏在数据中的可能性并将其转化为完全成熟机会的技术。巧合的是,机会是促进业务运营并在竞争对手中脱颖而出的因素。 了解机器学习算法如何应用于各个领域以获得可带来合法业务优势的结果至关重要。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,850
精华内容 16,740
关键字:

机器学习预测用户行为

友情链接: fzmx.rar