精华内容
下载资源
问答
  • 基于改进K-Means算法的电商用户聚类分析和应用研究.pdf
  • 基于改进K-Means算法的电商用户聚类分析和应用研究
  • Kmeans聚类实例④——电商用户质量聚类分析(RFM)

    万次阅读 多人点赞 2019-06-15 18:59:38
    聚类通常分为以下步骤: ① 业务提出需求 ② 根据业务需求,找到核心的指标。有现成的模型的话(如RFM),可以直接按模型的指标,如果没有,先罗列出比较重要的指标 ③ 从数据库用SQL取出数据 ④ 对数据进行清洗,...
    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    Kmeans系列目录:
    Kmeans聚类①——数据标准化&归一化&正则化
    Kmeans聚类②——Sklearn数据生成器(make_blob/classification/circles/make_moons)
    Kmeans聚类③——Kmeans聚类原理&轮廓系数&Sklearn实现
    Kmeans聚类实例⑤——直播行业用户质量分析

    聚类通常分为以下步骤(文末有大礼赠送):

    ① 业务提出需求,或者分析师自已探索

    ② 根据需求,找到核心的指标。有现成的模型的话(如RFM),可以直接按模型的指标,如果没有,先罗列出比较重要的指标

    ③ 从数据库用SQL取出数据

    ④ 对数据进行清洗,标准化/归一化/正则化

    ⑤ 聚类,如果是现成的模型,则直接聚类即可,如果是拟定的指标,则对各指标进行相关性验证,剔除掉相关性较高的指标,再聚类

    ⑥ 根据聚类结果,结合业务场景提供建议

    本篇文章介绍一下电商RFM模型聚类

    一、什么叫RFM?

    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    RFM是一种对用户质量进行聚类的模型,对应于三个指标

    R(Recency):用户最近一次消费的时间间隔,衡量用户是否存在流失可能性
    F(Frequency)
    :用户最近一段时间内累计消费频次,衡量用户的粘性
    M(Money): 用户最近一段时间内累计消费金额,衡量用户的消费能力和忠诚度
    此模型一般通过三个指标的均值将用户进行聚类

    二、聚类

    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    本次数据是选自某知名电商公司的2019年上半年的某品类的RFM用户数据(数据集文末有下载方式,免费

    # 项目一:电商用户质量RFM聚类分析
    
    from sklearn.cluster import KMeans
    from sklearn import metrics
    import matplotlib.pyplot as plt
    from sklearn import preprocessing
    
    # 导入并清洗数据
    data = pd.read_csv('RFM.csv')
    data.user_id = data.user_id.astype('str')
    print(data.info())
    print(data.describe())
    X = data.values[:,1:]
    
    # 数据标准化(z_score)
    Model = preprocessing.StandardScaler()
    X = Model.fit_transform(X)
    
    # 迭代,选择合适的K
    ch_score = []
    ss_score = []
    inertia = []
    for k in range(2,10):
        clf = KMeans(n_clusters=k,max_iter=1000)
        pred = clf.fit_predict(X)
        ch = metrics.calinski_harabaz_score(X,pred)
        ss = metrics.silhouette_score(X,pred)
        ch_score.append(ch)
        ss_score.append(ss)
        inertia.append(clf.inertia_)
    
    # 做图对比
    fig = plt.figure()
    ax1 = fig.add_subplot(131)
    plt.plot(list(range(2,10)),ch_score,label='ch',c='y')
    plt.title('CH(calinski_harabaz_score)')
    plt.legend()
    
    ax2 = fig.add_subplot(132)
    plt.plot(list(range(2,10)),ss_score,label='ss',c='b')
    plt.title('轮廓系数')
    plt.legend()
    
    ax3 = fig.add_subplot(133)
    plt.plot(list(range(2,10)),inertia,label='inertia',c='g')
    plt.title('inertia')
    plt.legend()
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['font.serif'] = ['SimHei']  # 设置正常显示中文
    plt.show()
    

    在这里插入图片描述
    本次采用3个指标综合判定聚类质量,CH,轮廓系数和inertia分数,第1和第3均是越大越好,轮廓系数是越接近于1越好,综合来看,聚为3类效果比较好

    # 根据最佳的K值,聚类得到结果
    model = KMeans(n_clusters=3,max_iter=1000)
    model.fit_predict(X)
    labels = pd.Series(model.labels_)
    centers = pd.DataFrame(model.cluster_centers_)
    result1 = pd.concat([centers,labels.value_counts().sort_index(ascending=True)],axis=1) # 将聚类中心和聚类个数拼接在一起
    result1.columns = list(data.columns[1:]) + ['counts']
    print(result1)
    result = pd.concat([data,labels],axis=1)   # 将原始数据和聚类结果拼接在一起
    result.columns = list(data.columns)+['label']  # 修改列名
    pd.options.display.max_columns = None  # 设定展示所有的列
    print(result.groupby(['label']).agg('mean')) # 分组计算各指标的均值
    

    在这里插入图片描述

    # 对聚类结果做图
    
    fig = plt.figure()
    ax1= fig.add_subplot(131)
    ax1.plot(list(range(1,4)),s.R_days,c='y',label='R')
    plt.title('R指标')
    plt.legend()
    ax2= fig.add_subplot(132)
    ax2.plot(list(range(1,4)),s.F_times,c='b',label='F')
    plt.title('F指标')
    plt.legend()
    ax3= fig.add_subplot(133)
    ax3.plot(list(range(1,4)),s.M_money,c='g',label='M')
    plt.title('M指标')
    plt.legend()
    plt.show()
    

    三、结果分析

    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    最终聚类结果如下表:
    在这里插入图片描述
    通过可视化,得到下图:
    在这里插入图片描述
    果然还是要比表更直观,聚类结果分为三类:

    第一类:R最大,F和M均最低,说明离上次消费已经很久了,且19年上半年消费频次和消费金额基本为0,属于已流失或已沉默用户,建议通过短信或Email或其它方式召回或唤醒

    第二类:R最小,F和M最大,说明最近刚消费过,且近半年消费频次和消费金额都非常高,属于高忠诚度,高活跃和高付费能力的用户,是最需要重点呵护的用户,建议安排专员一对一服务

    第三类:R,F,M均一般,活跃度一般,消费能力一般,属于仍在活跃,但不够忠诚极易被竞品抢走的用户,建议对这批用户多进行一些品牌上的宣传,同时通过活动刺激他们多活跃,多消费,提升忠诚度


    本人互联网数据分析师,目前已出ExcelSQLPandasMatplotlibSeaborn机器学习统计学个性推荐关联算法工作总结系列。


    微信搜索并关注 " 数据小斑马" 公众号
    1、回复“RFM”就可以领取文中数据集
    2、回复“数据分析”可以免费获取下方15本数据分析师必备学习书籍一套

    在这里插入图片描述

    展开全文
  • 核心内容:使用python的sklearn的KMeans算法对电商用户进行分类。 包含内容:数据概览、特征构建、k值选择、模型训练、可视化等。

    背景

    聚类分析在机器学习领域属于无监督学习的一种,能够根据一些特征对样本数据进行分类。使用聚类分析分完的类具有“类中相似,类间区别”的特点。RFM模型是非常常见的分析用户价值的方法,其核心思想是根据用户的最近购买时间、购买频次、花费金额3个特征来对用户进行分群,针对每个群体采取不同的营销手段。k-means是常用的聚类分析算法之一,基于欧氏距离对样本进行分类。k-means算法运行速度快,能够处理的数据量大,且易于理解。但缺点也很明显,就是算法性能有限,在高维上可能不是最佳选项。在当前动辄上亿的数据量来看,k-means算法是比较好的选择了。还有需要提醒的一点是,一定要结合业务使用算法,任何特征都可能拿来聚类,但是聚类的结果呢,能不能很好的解释和指导业务?如果不能,那么这个算法就没有什么意义。本次使用的数据来源于数据不吹牛公众号,这里也是小打一波广告。
    本案例将从一个简单的k-means机器学习模型入手,在介绍聚类算法的同时也简单介绍机器学习的常规步骤。

    1、数据概览

    首先,我们导入数据,并查看前5行。

    import pandas as pd
    import numpy as np
    df = pd.read_excel(r'F:\数据分析项目\电商数据的RFM模型\RFM\PYTHON-RFM实战数据.xlsx')
    df.head(5)
    

    在这里插入图片描述
    总览数据:

    df.info()
    

    在这里插入图片描述
    数据共有28833行,9列,而且数据非常干净,没有空值,省去了我们处理空值的过程。
    根据RFM模型的要求,我们需要的是买家昵称、购买日期、实付金额三个变量。其中购买日期和实付金额用于帮助我们训练模型,买家昵称则让我们确定每个用户所属的类别。

    选取交易成功的用户:

    df['订单状态'].value_counts()
    df = df[df['订单状态'] == '交易成功']
    

    在这里插入图片描述
    选择我们需要的字段:

    data = df[['买家昵称', '付款日期',  '实付金额']]
    data.head(5)
    

    在这里插入图片描述

    有个细节需要注意,订单每一行代表着单个用户的单次购买行为,什么意思呢?如果一个用户在一天内购买了4次,订单表对应记录着4行,而在实际的业务场景中,一个用户在一天内的多次消费行为,应该从整体上看作一次。 ----- 数据不吹牛 小Z

    2、特征构建

    根据我们的RFM模型,我们需要构建3列数据,这个原始表中是没有直接提供的,需要我们根据原始表的数据来提取。
    所以这里需要先提取付款日期数据:

    data['paytime'] = pd.to_datetime(data['付款日期'].apply(lambda x:x.date()))
    data.head()
    

    在这里插入图片描述
    根据paytime计算最后一次付款时间距当前的天数(数据引用的背景当前时间是2019-07-01):

    # 提取每个用户最近(最大)的购买日期
    data_r = data.groupby('买家昵称')['paytime'].max().reset_index()
    # 与当前日期相减,取得最近一次购买距当前的天数。
    data_r['recency'] = data_r['paytime'].apply(lambda x:(pd.to_datetime('2019-07-01')-x).days)
    # 两个日期相减,得到的数据类型是timedelta类型,要进行数值计算,需要提取出天数数字。
    data_r.drop('paytime',axis = 1,inplace = True)
    data_r.head()
    

    data_r表
    提取购买次数数据:

    # 分组聚合,得到每个用户发生于不同日期的购买次数
    data_f = data.groupby(['买家昵称','paytime'])['付款日期'].count().reset_index()
    data_f = data_f.groupby('买家昵称')['paytime'].count().reset_index()
    # 修改列名
    data_f.rename({'paytime':'frequence'},axis = 1,inplace = True)
    data_f.head()
    

    在这里插入图片描述
    提取购买金额数据,这里的金额我们使用每个用户的金额/次:

    data_m = data.groupby('买家昵称')['实付金额'].sum().reset_index()
    data_m['money'] = data_m['实付金额']/data_f['frequence']
    data_m.drop('实付金额',axis = 1,inplace = True)
    data_m.head()
    

    在这里插入图片描述
    所以现在我们已经有了包含recency、frequence、money的3个DataFrame表了,下面合并三个表:

    data_rf = pd.merge(data_r,data_f,on = '买家昵称',how = 'inner')
    data_rfm = pd.merge(data_rf,data_m, on = '买家昵称',how = 'inner')
    data_rfm.head()
    

    在这里插入图片描述

    3、查看数据分布特征

    数据的分布特征会影响算法结果,所以有必要先了解数据的大致分布。

    import matplotlib.pyplot as plt
    import seaborn as sns
    plt.figure(figsize = (6,4))
    sns.set(style = 'darkgrid')
    sns.countplot(data_rfm['frequence'])
    

    购买次数的分布

    sns.distplot(data_rfm['recency'])
    plt.title('recency的分布直方图',fontsize = 15)
    

    recency的分布直方图

    sns.distplot(data_rfm['money'],color = 'g')
    plt.title('money的分布直方图',fontsize = 15)
    

    在这里插入图片描述

    4、数据处理及模型构造

    首先,对数据进行标准化处理,这是为了消除量纲的影响。

    from sklearn import preprocessing
    from sklearn.cluster import KMeans
    from sklearn import metrics
    data_rfm_s = data_rfm.copy()
    min_max_scaler = preprocessing.MinMaxScaler()
    data_rfm_s = min_max_scaler.fit_transform(data_rfm[['recency','frequence','money']])
    

    K-Means方法有个经常被人诟病的地方,如何选择K值?也就是要把样本分成多少类呢?如果贸然定一个,会太主观,所以还是要用数据说话。一般采用三个指标:

    • Calinski-Harabaz Index。通过计算类中各点与类中心的距离平方和来度量类内的紧密度,通过计算各类中心点与数据集中心点距离平方和来度量数据集的分离度,CH指标由分离度与紧密度的比值得到。从而,CH越大代表着类自身越紧密,类与类之间越分散,即更优的聚类结果。
    • 轮廓系数。轮廓系数(Silhouette Coefficient),值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优。也就是尽量选择更大的轮廓系数。
    • inertia值。kmeans自带的评价方法,越小说明聚类效果越好。
    inertia = []
    ch_score = []
    ss_score = []
    for k in range(2,9):
        model = KMeans(n_clusters = k, init = 'k-means++',max_iter = 500)
        model.fit(data_rfm_s)
        pre = model.predict(data_rfm_s)
        ch = metrics.calinski_harabaz_score(data_rfm_s,pre) 
        ss = metrics.silhouette_score(data_rfm_s,pre)
        inertia.append(model.inertia_)
        ch_score.append(ch)
        ss_score.append(ss)
    print(ch_score,ss_score,inertia)
    

    画图可以更加直观看出三个指标的变化:

    score = pd.Series([ch_score,ss_score,inertia],index = ['ch_score','ss_score','inertia'])
    aa = score.index.tolist()
    plt.figure(figsize = (15,6))
    j = 1
    for i in aa:
        plt.subplot(1,3,j)
        plt.plot(list(range(2,9)),score[i])
        plt.xlabel('k的数目',fontsize = 13)
        plt.ylabel(f'{i}值',fontsize = 13)
        plt.title(f'{i}值变化趋势',fontsize = 15)
        j+=1
    plt.subplots_adjust(wspace = 0.3)
    

    score变化
    根据上图中3个指标综合判断,选择k=4时,各指标变化出现明显的拐点,聚类效果相对较优,所以分成四类比较好。

    model = KMeans(n_clusters = 4, init = 'k-means++',max_iter = 500)
    model.fit(data_rfm_s)
    ppre = model.predict(data_rfm_s)
    ppre = pd.DataFrame(ppre)
    data = pd.concat([data_rfm,ppre],axis = 1)
    data.rename({0:u'cluster'},axis = 1,inplace = True)
    data.head()
    

    在这里插入图片描述
    可以看出,每个用户都有了对应的类别,并且可以查看每个类别的中心:

    labels = model.labels_   # 取得各样本的类别数据
    labels = pd.DataFrame(labels,columns = ['类别'])
    result = pd.concat([pd.DataFrame(model.cluster_centers_),labels['类别'].value_counts().sort_index()],axis = 1)
    result.columns = ['recency','frequence','money','cluster']
    result
    

    在这里插入图片描述
    cluster=0时的分布状态:
    在这里插入图片描述
    cluster=1时的分布状态:
    在这里插入图片描述
    cluster=2时的分布状态:
    在这里插入图片描述
    cluster=3时的分布状态:
    在这里插入图片描述

    展开全文
  • 基于情景感知的移动电商用户-项目聚类协同过滤推荐算法.pdf
  • 用户搜索某一商品时,电商平台能据此为用户展示类似的商品,从而提高用户的购物体验。思路首先明确这是一个聚类问题,而不是分类。因为商品类目本身是没有标签的,用机器学习的话来说,这是一个无监督学习的问题。...

    目标

    针对667条宠物商品的搜索关键字进行聚类,将相似度高的条目聚为一类。在用户搜索某一商品时,电商平台能据此为用户展示类似的商品,从而提高用户的购物体验。

    思路

    首先明确这是一个聚类问题,而不是分类。因为商品类目本身是没有标签的,用机器学习的话来说,这是一个无监督学习的问题。接着,分析大致做法:
    1. 数据导入
    2. 处理数据(转化为语料库,再进行清洗过程)
    3. 创建文档词条矩阵dtm,是一个稀疏矩阵
    4. 对稀疏的矩阵进行降维,并转为标准矩阵格式
    5. 聚类分析
    - kmeans聚类
    - 层次聚类
    6. 检验聚类结果

    过程

    1.数据导入

    setwd("F:/研究生/课程/R")
    Raw <- read.csv("Raw.csv", header = TRUE)
    Raw <- Raw[,1]
    Raw <- as.matrix(Raw)
    head(Raw)
    

    查看前6行的商品词条

    [1] "CAT TREE POST SCRATCHER FURNITURE PLAY HOUSE PET BED KITTEN TOY BEIGE"    
    [2] "DELUXE CAT TREE 36INCH CONDO FURNITURE SCRATCHING POST PET HOUSE PLAY TOY"
    [3] "SMALL WARMING CAT DOG COVERED BED HOOD MICROFLEECE LINING FOAM FILLED"    
    [4] "PET HEATING PAD RADIENT BED WARMER CAT DOG USA SELLER FREE SHIPPING"      
    [5] "OUTDOOR HEATED PAD KITTY PAD"                                             
    [6] "SUNNY SEAT WINDOW CAT BED"  
    

    2. 处理数据

    调用tm包——文本挖掘常用的R包

    library(tm)
    corp <- Corpus(DataframeSource(Raw))
    writeLines(as.character(corp[[2]]))
    lapply(corp, as.character)
    

    可以查看某个文档以及每个文档的内容:
    第2个文档包含的词条内容是:

    DELUXE CAT TREE 36INCH CONDO FURNITURE SCRATCHING POST PET HOUSE PLAY TOY
    

    以及查看全部文档的词条内容:

    $`666`
    [1] "HURTTA FLEECE OVERALL"
    
    $`667`
    [1] "DOG GROOMING BANDANAS S M L PET SCARF TIE"
    

    下面进行格式转化,去噪:

    corp1 <- tm_map(corp, content_transformer(tolower))#全部转小写
    corp2 <- tm_map(corp1, removeWords, stopwords("english"))#删去介词冠词之类的停止词
    corp3 <- tm_map(corp2, stripWhitespace)#删去空格
    stemDocumentfix <- function(x){
     PlainTextDocument(paste(stemDocument(unlist(strsplit(as.character(x), " "))),collapse=' '))
    }
    corp4 <- tm_map(corp3, stemDocumentfix)#提取词干
    dataframe<-data.frame(text=unlist(sapply(corp4, `[`, "content")),stringsAsFactors=F)
    head(dataframe)
    corp5 <- Corpus(DataframeSource(dataframe))
    

    可以看到此时的文本数据经过转化,与之前的数据有明显区别。

    1 cat tree post scratcher furnitur play hous pet bed kitten toy beig
    2 delux cat tree 36inch condo furnitur scratch post pet hous play toy
    3 small warm cat dog cover bed hood microfleec line foam fill
    4 pet heat pad radient bed warmer cat dog usa seller free ship
    5 outdoor heat pad kitti pad
    6 sunni seat window cat bed
    

    3. 创建文档-词条矩阵dtm

    将语料库的信息转化为矩阵,dtm表示行是文档,列是词条(也有tdm,意思相反)。某个文档出现某个词汇就记为1,否则为0,得到一个由0和1构成的矩阵。

    dtm <- DocumentTermMatrix(corp5)
    dtm
    inspect(dtm)
    

    查看dtm的信息:

    <<DocumentTermMatrix (documents: 667, terms: 1020)>>
    Non-/sparse entries: 4648/675692
    Sparsity           : 99%
    Maximal term length: 14
    Weighting          : term frequency (tf)
    

    这里写图片描述
    可以得到有667个文档,包含了1020个单词。另外得到矩阵的稀疏度为99%,非常稀疏,由此需要进行降维。

    4. 对dtm进行降维,并转为可处理的矩阵格式

    dtm <- removeSparseTerms(dtm, 0.99)
    dtm
    data <- as.matrix(dtm)
    

    除此之外,还可以进行一些其他操作。比如:
    查找出现过10次以上的单词有哪些?

    findFreqTerms(dtm, 10)
    

    这里写图片描述
    与单词”tree”相关度在0.8以上的单词有哪些?

    $tree
    furnitur    condo 
    0.97     0.87 
    

    5.层次聚类

    利用R自带的dist函数求距离,这里采用的是欧式距离。再利用hcluster进行层次聚类,选用的是离差平方和”ward.D”.

    data.scale <- scale(data)#先标准化
    d <-dist(data.scale,method = "euclidean")
    fit <- hclust(d,method = "ward.D")
    plot(fit)
    

    全部聚类的结果
    可以看到由于样本量较多,聚类都聚集在一起,看不清楚。为了进一步解释聚类的结果,故只选取50个文档进行聚类。

    d2 <- dist(data[1:50,],method = "euclidean")
    fit2 <- hclust(d2,method = "ward.D")
    plot(fit2,hang=-1)
    rect.hclust(fit2,8)
    

    这里写图片描述
    从图中可以看出,层次聚类将1,50,48,49这四个文档归为一类。查看原始的数据,
    这里写图片描述
    可以看出的确这四个词条的相似度很高,且48,49,50是完全相同的。用这几个词条在eBay上进行搜索,得到的结果也很相似。

    6. kmeans聚类

    首选要考虑的是k的取值为多少比较合适。将结果分成几类对聚类的好坏有很大的影响。分类过少可能会将两个完全不同的东西聚类为同一类,而分类过多会将相近的两样东西分离开来,从而失去了聚类的意义。
    虽然聚类是无监督学习的过程,但是仍然有些指标可以在选择k值的时候作为参考。下面计算组间方差,组间方差越大,一般效果会更好。

    numofk <- c()
    bssp <- c()
    for (i in (2:20)){
      kmeans <- kmeans(data, i)
      numofk[i-1] <- i
      bssp[i-1] <- kmeans$betweenss/kmeans$totss
    }
    result <- data.frame(numofc[],bssp[])
    library(ggplot2)
    qplot(numofk, bssp, data = result, geom = c("point","smooth"))
    

    一般k的取值不会太大,可以通过枚举,令k从2到一个固定值如20,在每个k值上重复计算其组间方差,得到结果用图表示。
    这里写图片描述
    从图中可以看出,k取14类就比较合适了,14之后图形比较平稳,组间方差变化不大。
    因此取k=14,用stats包中的kmeans函数进行聚类,得到的结果保存在excel表格中。

    kmeansRes <- kmeans(data,15)
    plot(kmeansRes$cluster)
    title1 <- list(title = Raw,type = kmeansRes$cluster)
    write.csv(title1,file = "Res.csv")
    

    查看结果。
    这里写图片描述
    筛选查看聚类结果为type6的情况,并挑选前三条在eBay上进行搜索,搜出来的东西差不多都是狗的项圈之类的商品,说明聚类结果还算可以。同时进一步查看商品的单价,可以看出大多数单价都在2、30美金左右,但也有几条数据在50到70不等,在eBay上搜索这个价位对应的关键字,搜出来的结果也基本是训练狗的项圈,但这类商品功能更加多,也更高端,所以价格相对高,这也是合理的。

    展开全文
  • 基于聚类的社区新零售电商用户精准营销研究.pdf
  • 摘 要 在电子商务蓬勃发展与广泛应用的同时, 所有...特点,将用户分成外部登录用户和内部系统用户来分析,为聚类分析和电子商务 应用研究提供可靠、有效的数据。 (3)在理解和掌握快速聚类算法的基础上,针对 ……
  • 基于聚类的社区新零售电商用户精准营销研究
  • 基于K-MEANS聚类电商网站用户行为分析.pdf
  • 如何构建电商用户画像

    千次阅读 2018-09-17 13:51:27
    5.1 构建电商用户画像技术和流程 构建一个用户画像,包括数据源端数据收集、数据预处理、行为建模、构建用户画像 有些标签是可以直接获取到的,有些标签需要通过数据挖掘分析到! 5.2 源数据分析 用户数据...

    5.1 构建电商用户画像技术和流程

    构建一个用户画像,包括数据源端数据收集、数据预处理、行为建模、构建用户画像

    有些标签是可以直接获取到的,有些标签需要通过数据挖掘分析到!

    5.2 源数据分析

    用户数据分为2类:动态信息数据、静态信息数据

    静态信息数据来源:

    Ø 用户填写的个人资料,或者由此通过一定的算法,计算出来的数据

    Ø 如果有不确定的,可以建立模型来判断,比如用户的性别注册没有填写,可以建立模型,根据用户的行为来判断用户性别是什么,或者它的概率

    动态信息数据来源:

    Ø 用户行为产生的数据:注册、游览、点击、购买、签收、评价、收藏等等。

    Ø 用户比较重要的行为数据:游览商品,收藏商品、加入购物车、关注商品

    根据这些行为特性可以计算出:用户注册时间、首单时间、潮妈族、纠结商品、最大消费、订单数量、退货数量、败家指数、品牌偏好等等。

    5.3 目标分析

    用户画像的目标是通过分析用户行为,最终为每个用户打上标签,以及该标签的权重。

    如,红酒 0.8、李宁 0.6。

    标签:表现了内容,用户对该内容有兴趣、偏好、需求等等。

    权重:表现了指数,用户的兴趣、偏好指数,也可能表现用户的需求度,可以简单的理解为可信度,概率。

    5.4 用户画像建模5.4.1 用户基本属性表

    根据用户所填写的属性标签和推算出来的标签。用于了解用户的人口属性的基本情况和按不同属性维度统计。

    作用:按人口属性营销、比如营销80后,对金牛座的优惠,生日营销。

    主要数据来源:用户表、用户调查表、孕妇模型表、马甲模型表。

    用户表:记录用户最基本的属性特性。

    用户调查表:补充用户的其他基本信息。

    用户所填写的基本信息:用户ID、用户名、密码、性别、手机号、邮箱、年龄、户籍省份、身份证编号、注册时间、收货地址等

    用户所填信息计算得到的指标:

    生日、星座、城市等级、手机前几位、手机运营商、邮件运营商

    用户调查表得到:学历、收入、职业、婚姻、是否有小孩、是否有车有房、使用手机品牌。

    根据算法得到:

    身高、体重、性别模型、孩子性别概率、潜在汽车用户概率、是否孕妇、孩子年龄概率、手机品牌、更换手机频率、是否有小孩,是否有车,使用手机档次,疑似马甲标准、疑似马甲账号数、用户忠诚度、用户购物类型。

    模型算法---性别模型

    Ø 用户自己也填写了性别,但仍然要用算法算一次性别

    用户性别

    1男 0女 -1未识别

    1、商品性别得分

    2、用户购买上述商品计算用户性别等得分

    3、最优化算法训练阀值,根据阀值判断

    孩子性别

    0 仅有男孩

    1仅有女孩

    2男女都有

    3无法识别

    1、选择男孩女孩商品

    2、确定用户购买商品的男女性别比例

    3、训练阀值,判断孩子性别,同用户性别类似

    Ø 性别验证方法

    随机抽样几千条数据让客户打电话确认。

    与用户自己填的性别做对比,确认百分比。

    模型算法---用户汽车模型

    用户是否有车

    1有 0 没有

    -1 未识别

    根据用户购买车相关产品

    判断用户是否有车

    潜在汽车用户

    1有

    -1 未识别

    用户游览或者搜索汽车

    用户数据判断

    模型算法---用户忠诚度模型

    Ø 忠诚度越高的用户越多,对网站的发展越有利

    用户忠诚度

    1忠诚型用户

    2偶尔型用户

    3投资型用户

    4游览型用户

    -1未识别

    总体规则是判断+聚类算法

    1、游览用户型:只游览不购买的

    2、购买天数大于一定天数的为忠诚用户

    3、购买天数小于一定天数,大部分是有优惠才购买的

    4、其他类型根据购买天数,购买最后一次距今时间,购买金额进行聚类

    模型算法---用户身高尺码模型

    男性用户身高尺码

    xxx-xxx身高段,-1未识别

    用户购买服装鞋帽等用户判断

    男性身材

    1偏瘦、2标准、3偏胖4肥胖、-1未识别

    用户购买服装鞋帽等用户判断

    女性用户身高尺码

    xxx-xxx身高段,-1未识别

    用户购买服装鞋帽等用户判断

    女性身材

    1偏瘦、2标准、3偏胖4肥胖、-1未识别

    用户购买服装鞋帽等用户判断

    模型算法---用户马甲标志模型

    Ø 马甲是指一个用户注册多个账号

    Ø 多次访问地址相同的用户账号是同一个人所有

    Ø 同一台手机登陆多次的用户是同一个人所有

    Ø 收货手机号相同的账号同一个人所有

    模型算法---手机相关标签模型

    Ø 对于手机营销参考意义比较大

    Ø 使用手机品牌: 最常用手机直接得到

    Ø 使用手机品牌档次:根据档次维表

    Ø 使用多少种不同的手机:手机登陆情况

    Ø 更换手机频率(月份):按时间段看手机登陆情况

    5.4.2 客户消费订单表

    根据客户消费的情况提取的客户标签,用于了解用户的消费总体情况,

    最终的目的根据用户消费习惯与消费能力做营销。

    主要数据来源:订单表、退货表、用户表、购物车表

    订单表可以得到相关标签:

    第一次消费时间、

    最近一次消费时间、

    首单距今时间、

    尾单距今时间------分析用户什么时候来购买商品以及多久没有购买了。

    最小消费金额、

    最大消费金额、

    累计消费次数(不含退拒)、

    累计消费金额(不含退拒)、

    累计使用代金券金额、

    累计使用代金券次数。-----分析用户总体消费情况。

         客单价(含退拒)、

         近60天客单价(含退拒)-----分析用户消费水平。

         常用收货地址、

         常用支付方式----分析用户常用的消费属性,方便做定向营销。

    退货表可以得到相关标签:

    近30天购买次数(不含退拒)、

    近30天购买金额(不含退拒)

    近30天购买次数(含退拒)、

    近30天购买金额(含退拒)----分析用户最近的消费能力。

    退货商品数量、

    退货商品金额、

    拒收商品数量、

    拒收商品金额、

    最近一次退货时间-----分析用户拒收和退货习惯。

    购物车表可以得到相关标签:

    最近30天购物车次数、

    最近30天购物车商品件数、

    最近30天购物车提交商品件数、

    最近30天购物车放弃件数、

    最近30天购物车成功率------分析用户购物车使用习惯

    订单表和用户表可以得到相关标签:

    学校下单总数、

    单位下单总数、

    家里下单总数、

    上午下单总数、

    下午下单总数、

    晚上下单总数----分析用户购物时间与地点习惯。

    5.4.3 客户购买类目表

    根据客户购买类目的情况提取客户标签,用于了解类目的购买人群情况和针对某一类目的营销等。

    主要数据来源:订单表、购物车表、类目维表

    类目维表可以得到相关标签:

    一级分类ID、

    一级分类名称、

    二级分类ID、

    二级分类名称、

    三级分类ID、

    三级分类名称-----分析用户都购买了哪些类目。

    电商的三级类目:

    京东商城:

    淘宝:

    订单表和类目维表可以得到相关标签:

    近30天购买类目次数、

    近30天购买类目金额、

    近90天购买类目次数、

    近90天购买类目金额、

    近180天购买类目次数、

    近180天购买类目金额、

    累计购买类目次数、

    累计购买类目金额----分析用户最近都购买了哪些类目。

    最近一次购买类目时间、

    最后一次购买类目距今天数----分析用户多久没有购买这个类目。

    购物车表和类目维表可以得到相关标签:

    近30天购物车类目次数、

    近30天购物车类目金额、

    近90天购物车类目次数、

    近90天购物车类目金额----分析用户最近都挑中哪些类目。

    5.4.4 用户访问信息表

    根据客户访问的情况提取相关客户标签。

    用于了解用户的访问总体情况,方便根据客户游览习惯做营销

    主要数据来源:点击流日志行为表(PC/APP端)

    点击流日志行为表可以得到相关标签:

    最近一次APP/PC端访问日期、

    最近一次APP/PC端访问使用操作系统、

    最近一次APP/PC端访问使用游览器、

    最近一次访问IP地址、

    最近一次访问城市、

    最近一次访问的省份-----分析用户最近一次访问情况。

    第一次APP/PC端访问日期、

    第一次APP/PC端访问使用操作系统、

    第一次APP/PC端访问使用游览器、

    第一次访问IP地址、

    第一次访问城市、

    第一次访问的省份-----分析用户第一次访问情况。

    近7天APP/PC端访问次数、

    近30天APP/PC访问次数、

    近60天APP/PC端访问次数、

    近90天APP/PC端访问次数、

    近180天APP/PC端访问次数、

    近365天APP/PC端访问次数----分析用户APP/PC端访问次数。

    近30天PC/APP端访问天数、

    近30天PC/APP端访问并购买次数、

    近30天PC/APP端访问PV、

    近30天PC/APP端访问平均PV、

    近30天PC/APP端最常用的游览器、

    近30天PC/APP端不同IP数、

    近30天PC/APP端最常用IP-----分析用户访问详情。

    近30天0-5点访问的次数、

    近30天6-7点访问的次数、

    近30天8-9点访问的次数、

    近30天10-12点访问的次数、

    近30天13-14点访问的次数、

    近30天15-17点访问的次数、

    近30天18-19点访问的次数、

    近30天20-21点访问的次数、

    近30天22-23点访问的次数----分析用户喜欢在哪个时间上网访问。

    展开全文
  • 前言 本文通过使用真实电商订单数据,采用RFM模型与K-means聚类算法对电商用户按照其价值进行分层。
  • 电商评论数据聚类实验报告——冯煜博 目录 实验目的 整体思路 数据介绍 代码与实验步骤 4.1 爬虫代码 4.2 数据清洗 4.3 分词 4.4 去停用词 4.5 计算TF-IDF词频与聚类算法应用 4.6 生成词云图 实验结果 5.1 词云图 ...
  • 电商用户画像分析

    千次阅读 2021-01-13 15:27:02
    京东电商平台最近小家电类目的订单数量、产品浏览量、搜索数量等都有所下降, 现在部门计划对小家电类目进行一次季末促销活动,希望你能针对小家电的用户特征给出一些建议 2 分析目的 通过京东用户信息数据、用户...
  • 电商用户画像

    万次阅读 2018-04-27 03:28:56
    本课程是基于大型电商公司的真实用户画像中提练出的精华内容,旨在培养学员了解用户画像的内容,掌握构建用户画像的方法。二、 初识用户画像 右边是一个人的基本属性,通过一个人的基本属性我们可以了解...
  • 电商用户购买行为数据分析

    千次阅读 多人点赞 2019-10-09 11:35:24
    本文使用SQL和SPSS工具,对超过100万条数据通过分组聚合、联结查询等方式进行清洗,针对用户购买数据从产品销售指标、用户价值指标进行分析,对数据进行可视化,利用RFM模型进行用户细分并提出具有针对性的业务策略...
  • 数据分析 -- 电商用户生命周期分析

    千次阅读 2020-05-25 12:12:57
    本文来源于叶同学投稿,是最近他关于用户生命周期这一块的学习整理,也欢迎大家给我投稿分享~CRMCustomer RelationShip Management 客户关系管理:要求企业站...
  • 本课程是基于大型电商公司的真实用户画像中提练出的精华内容,旨在培养学员了解用户画像的内容,掌握构建用户画像的方法。 用户画像的概念 用户画像:也叫用户信息标签化、客户标签;根据用户社会属性...
  • 电商用户行为分析

    2020-10-17 21:13:13
    随着互联网的发展,网上购物成为了一种趋势,但同时各大电商平台的竞争也愈发激烈。利用进行发现问题及规律,进行精细化营。结合各个维度的数据以及用户行为进行数据分析,对用户展开有针对性的运营活动,提供个性化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,011
精华内容 2,004
关键字:

电商用户聚类