精华内容
下载资源
问答
  • 手机用 户的异网高端 识别模型 摘要 我们 首先利用 软件对用户资 料表中的 数据进行了分析发现 了数据 中的一些 联系但由于 数据量太大 最终我们决定用 随机抽 样分析的方法 来挑选 数 据最后用型聚 类分析和 单 ...
  • Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在...
  • 本篇博客,我们将结合当前阶段正在做的用户画像项目,为大家介绍RFM模型和KMeans聚类算法。         先赞后看,养成习惯! 文章目录一、RFM模型引入1、RFM详解1.1 R值:...

            在上一篇博客《一文带你硬核踏入机器学习的大门》中,已经为大家介绍了很多关于机器学习的基础内容。本篇博客,我们将结合当前阶段正在做的用户画像项目,为大家介绍RFM模型KMeans聚类算法

            先赞后看,养成习惯!
    在这里插入图片描述


    一、RFM模型引入

            比如电商网站要做一次营销活动,需要针对不同价值的客户群体进行分群,对于高价值的用户推荐手表,珠宝等高端商品,对于低价值用户推荐打折促销的廉价商品,当然还有以下这些问题都是需要考虑的:

            1.谁是我的最佳客户?

            2.谁即将要成为流失客户?

            3.谁将有潜力成为有价值的客户

            4.哪些客户能够留存?

            5.哪些客户会对你目前对活动有所反应?

            那么最终的问题是如何对客户进行分群,即如何建立客户的价值模型呢?

            在传统企业和电商众多的客户细分模型中,RFM模型是被广泛提到和使用的。
            RFM模型是衡量当前用户价值和客户潜在价值的重要工具和手段。

            RFM是Rencency(最近一次消费),Frequency(消费频率)、Monetary(消费金额),三个指标首字母组合,如图所示:
    在这里插入图片描述
            一般情况下RFM模型可以说明下列几个事实:

            1.最近购买的时间越近,用户对产品促销互动越大

            2.客户购买的频率越高,客户就品牌的满意度就越大

            3.货币价值将高消费客户和低消费客户区分开来


            如图所示,根据RFM模型,就可以统计在某一段时间内,用户最近的消费间隔,消费次数和消费金额,再根据使用 k-means 算法对用户进行聚类分群

            注意一点,不仅仅可以局限于这三个数据字段,还可以根据业务需求,加入其他字段,进行调整模型。
    在这里插入图片描述
            我们可以根据RFM模型计算出所有用户的RFM值形成一个二维表:

    useridR值F值M值
    12019-11-01510000
    22019-10-014800

            对于以上数据的量纲不一致(单位不统一),所以要对数据进行归一化

            如何归一化? 我们可以自定义归一化的规则!即建立一个评分标准。

            那如何建立评分标准?我们可以根据运营/产品的经验,做一个标准,就像这样:

    R: 1-3天=5分,4-6天=4分,7-9天=3分,10-15天=2分,大于16天=1分
    F: ≥200=5分,150-199=4分,100-149=3分,50-99=2分,1-49=1分
    M: ≥20w=5分,10-19w=4分,5-9w=3分,1-4w=2分,<1w=1分

            根据上面的打分规则就可以对数据进行自定义的归一化,得到如下类似结果:

    useridR值F值M值
    1512
    2111

            那么现在数据已经归一化了,如何对数据进行分类?

            肯定不能简单的将数据直接丢到三维坐标系,因为坐标系的原点不好确定,且三维坐标系只能分为8类。所以应该使用算法进行分类(聚类)。让算法自动学习用户之间的相似度,然后相似度高的用户,自动聚成一类,最后完成聚类的划分

    计算流程

    1、首先对所有用户的最近一次消费时间/总共消费次数/总共消费金额进行统计
    2、再进行归一化(运营/产品提供的打分规则)
    3、再使用算法进行聚类(K-Means)
    4、根据聚类结果给用户打Tag(标签)

    1、RFM详解

    1.1 R值:最近一次消费(Recency)

            消费指的是客户在店铺消费最近一次和上一次的时间间隔,理论上R值越小的客户是价值越高的客户,即对店铺的回购几次最有可能产生回应。目前网购便利,顾客已经有了更多的购买选择和更低的购买成本,去除地域的限制因素,客户非常容易流失,因此CRM操盘手想要提高回购率和留存率,需要时刻警惕R值。

            如下图,某零食网店用户最近一次消费R值分布图:
    在这里插入图片描述
            1、客户R值呈规律性的“波浪形”分布,时间越长,波浪越小;

            2、最近一年内用户占比50%(真的很巧);

            数据分析:这个数据根据向行业内专业人员请教,已经是比较理想了的。说明每引入2个客户,就有一位用户在持续购买。说明店铺复购做的比较好。

    1.2 F值:消费频率(Frequency)

            消费频率是客户在固定时间内的购买次数(一般是1年)。但是如果实操中实际店铺由于受品类宽度的原因,比如卖3C产品,耐用品等即使是忠实粉丝用户也很难在1年内购买多次。所以,有些店铺在运营RFM模型时,会把F值的时间范围去掉,替换成累计购买次数。

            如下图,某零食网店用户购买频次图(如1个客户在1天内购买多笔订单,则自动合并为1笔订单):
    在这里插入图片描述
            1、购买1次(新客户)占比为65.5%,产生重复购买(老客户)的占比为34.4%;

            2、购买3次及以上(成熟客户)的占比为17%,购买5次及以上(忠实客户)的占比为6%;

            数据分析:影响复购的核心因素是商品,因此复购不适合做跨类目比较。比如食品类目和美妆类目:食品是属于“半标品”,产品的标品化程度越高,客户背叛的难度就越小,越难形成忠实用户;但是相对美妆,食品又属于易耗品,消耗周期短,购买频率高,相对容易产生重复购买,因此跨类目复购并不具有可比性。

    1.3 M值:消费金额(Monetary)

            M值是RFM模型中相对于R值和F值最难使用,但最具有价值的指标。大家熟知的“二八定律”(又名“帕雷托法则”)曾作出过这样的解释:公司80%的收入来自于20%的用户。

            这个数据我在自己所从事的公司总都得到过验证!可能有些店铺不会那么精确,一般也会在30%客户贡献70%收入,或者40%贡献60%收入。

            理论上M值和F值是一样的,都带有时间范围,指的是一段时间(通常是1年)内的消费金额,在工作中我认为对于一般店铺的类目而言,产品的价格带都是比较单一的,比如:同一品牌美妆类,价格浮动范围基本在某个特定消费群的可接受范围内,加上单一品类购买频次不高,所以对于一般店铺而言,M值对客户细分的作用相对较弱。

            所以我认为用店铺的累计购买金额和平均客单价替代传统的M值能更好的体现客户消费金额的差异。

            教大家一个特别简单的累积金额划分方法:将1/2的客单价作为累积消费金额的分段,比如客单价是300元,则按照150元进行累计消费金额分段,得出十个分段。

            现以国内某知名化妆品店铺举例,店铺平均客单为160元,因此以80元作为间隔将累积消费金额分段,从表中可以很明显发现,累计消费160元以下用户占比为65.5%(近2/3),贡献的店铺收入比例只占31.6%(近1/3),具体如下:
    在这里插入图片描述

    2、 基于RFM模型的实践应用

            主要有两种方法来分析RFM模型的结果:用基于RFM模型的划分标准来进行客户细分,用基于RFM模型的客户评分来进行客户细分。

    2.1 基于RFM模型进行客户细分

            CRM实操时可以选择RFM模型中的1-3个指标进行客户细分,如下表所示。切记细分指标需要在自己可操控的合理范围内,并非越多越好,一旦用户细分群组过多,一来会给自己的营销方案执行带来较大的难度,而来可能会遗漏用户群或者对同个用户造成多次打扰。

            最终选择多少个指标有两个参考标准:店铺的客户基数,店铺的商品和客户结构。
    在这里插入图片描述
            店铺的客户基数:在店铺客户一定的情况下选择的维度越多,细分出来每一组的用户越少。对于店铺基数不大(5万以下客户数)的店铺而言,选择1-2个维度进行细分即可。对于客户超过50万的大卖家而言可以选择2-3个指标。

            店铺的商品和客户结构:如果在店铺的商品层次比较单一,客单价差异幅度不大的情况下,购买频次(F值)和消费金额(M值)高度相关的情况下,可以只选择比较容易操作的购买频次(F值)代替消费金额(M值)。对于刚刚开店还没形成客户粘性的店铺,则可以放弃购买频次(F值),直接用最后一次消费(R值)或者消费金额(M值)。

    2.2 通过RFM模型评分后输出目标用户

            除了直接用RFM模型对用户进行分组之外,还有一种常见的方法是利用RFM模型的三个属性对客户进行打分,通过打分确定每个用户的质量,最终筛选出自己的目标用户。

            RFM模型评分主要有三个部分:

    1、确定RFM三个指标的分段和每个分段的分值;
    2、计算每个客户RFM三个指标的得分;
    3、计算每个客户的总得分,并且根据总得分筛选出优质的客户
    

            比如,实操的过程中一般每个指标分为3-5段,其中R值可以根据开店以来的时间和产品的回购周期来判定,F值根据现有店铺的平均购买频次,M值可参考上文客单价的分段指标。

            举个例子:
    在这里插入图片描述
            确认RFM的分段和对应分段的分值之后,就可以按照用户情况对应进行打分。

            这个时候可能有人会对此产生质疑,我如何验证这个给予的分值就是合理的呢?一般使用经验值或用算法模型进行验证。

            这里提供一个段子,可谓是很形象了。

    在这里插入图片描述

    二、KMeans聚类算法

    1、算法原理

            在正式开始之前,我们可以先通过几个网址来感受一下KMeans的魅力。

            首先是 http://shabal.in/visuals/kmeans/3.html,我们可以通过刷新页面多次,来观察不同的KMeans聚类过程。下图是我把四次不同的结果合并在一起的一个结果。
    在这里插入图片描述
            通过观察,我们可以得到初步结论:

    • 中心点数量4, 起始位置不相同。
    • 中心点可以移动
    • 中心点最后不移动

            第二个网址是 https://www.naftaliharris.com/blog/visualizing-k-means-clustering/

            这个网站更牛的一点是,可以自定义可视化K均值聚类。也就是,我们可以自定义K的数量,和初始位置,来查看不同的结果。

    在这里插入图片描述
    在这里插入图片描述
            初始情况下,大家应该看到的是下面这种情况
    在这里插入图片描述
            接下来,我分别在图中的四个位置设置质心的位置
    在这里插入图片描述
            然后不断的点击Go

    在这里插入图片描述
            最后可能会看到类似如下的结果:
    在这里插入图片描述        再让我们来看下其他的解释
    在这里插入图片描述
            最后将不同种类的数据分到了不同的区域。有点类似班级位置的一个分布😂
    在这里插入图片描述
            为了节约码字的时间,下面借助一些PPT来为大家说明
    在这里插入图片描述
    在这里插入图片描述
            我们可以得出,KMeans的计算步骤

    1、选择 K 个点作为初始聚类中心
    2、计算其他的点到中心点的距离, 进行聚类, 使用欧式距离
    3、重新计算每个聚类的中心点, 再次聚类
    4、直到中心点不再变化, 或者达到迭代次数

    在这里插入图片描述
    在这里插入图片描述

    2、快速体验

            接下来让我们来感受一下KMeans的魅力。

    2.1 数据集

            IRIS数据集由Fisher在1936年整理的一个经典数据集,在统计学习和机器学习领域都经常被用作示例。

            数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条数据包含4个特征,都是浮点数,单位为厘米。

    Sepal.Length(花萼长度)
    Sepal.Width(花萼宽度)
    Petal.Length(花瓣长度)
    Petal.Width(花瓣宽度))
    

            目标值为鸢尾花的分类:

    Iris Setosa(山鸢尾)
    Iris Versicolour(杂色鸢尾)
    Iris Virginica(维吉尼亚鸢尾)
    

            其中的数据分布如下:
    在这里插入图片描述
            
    在这里插入图片描述

    2.2 代码演示

    import org.apache.spark.ml.clustering.{KMeans, KMeansModel}
    import org.apache.spark.ml.feature.{MinMaxScaler, MinMaxScalerModel}
    import org.apache.spark.sql.{DataFrame, SparkSession}
    
    /*
    用于实现  使用 kmeans 为鸢尾花数据分类
     */
    object Iris {
    
      def main(args: Array[String]): Unit = {
    
        //1、创建sparlsession对象
        val spark: SparkSession = SparkSession.builder().appName("Iris").master("local[*]").getOrCreate()
    
        spark.sparkContext.setLogLevel("WARN")
         
        //2、读取libsvm 数据
        val irisLibSvmDF: DataFrame = spark.read.format("libsvm")
          .load("file:///E:\\数据集\\iris_kmeans.txt")
        irisLibSvmDF.show(false)
      
        /*
     +-----+-------------------------------+
    |label|features                       |
    +-----+-------------------------------+
    |1.0  |(4,[0,1,2,3],[5.1,3.5,1.4,0.2])|
    |1.0  |(4,[0,1,2,3],[4.9,3.0,1.4,0.2])|
    |1.0  |(4,[0,1,2,3],[4.7,3.2,1.3,0.2])|
    |1.0  |(4,[0,1,2,3],[4.6,3.1,1.5,0.2])|
    |1.0  |(4,[0,1,2,3],[5.0,3.6,1.4,0.2])|
         */
    
        //3、数据归一化(将数据归一到0-1之间,计算速度快)
        //数据归一化
        //把数据映射到0~1范围之内处理,更加便捷快速
        //MinMaxScaler  把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。
        //x' = (x - X_min) / (X_max - X_min)
    
        val scalerDatas: MinMaxScalerModel = new MinMaxScaler()
          .setInputCol("features") //设置需要归一化的列
          .setOutputCol("featuresOut") //归一化后的数据的列名字
          .fit(irisLibSvmDF) //设置数据
    
    
        val scalerDF: DataFrame = scalerDatas.transform(irisLibSvmDF)
        scalerDF.show(false)
    /*
    +-----+-------------------------------+---------------------------------------------------------------------------------+
    |label|features                       |featuresOut                                                                      |
    +-----+-------------------------------+---------------------------------------------------------------------------------+
    |1.0  |(4,[0,1,2,3],[5.1,3.5,1.4,0.2])|[0.22222222222222213,0.6249999999999999,0.06779661016949151,0.04166666666666667] |
    |1.0  |(4,[0,1,2,3],[4.9,3.0,1.4,0.2])|[0.1666666666666668,0.41666666666666663,0.06779661016949151,0.04166666666666667] |
    |1.0  |(4,[0,1,2,3],[4.7,3.2,1.3,0.2])|[0.11111111111111119,0.5,0.05084745762711865,0.04166666666666667]                |
    |1.0  |(4,[0,1,2,3],[4.6,3.1,1.5,0.2])|[0.08333333333333327,0.4583333333333333,0.0847457627118644,0.04166666666666667]  |
    |1.0  |(4,[0,1,2,3],[5.0,3.6,1.4,0.2])|[0.19444444444444448,0.6666666666666666,0.06779661016949151,0.04166666666666667] |
    
     */
    
        //4、使用kmeans进行计算
        val prediction: KMeansModel = new KMeans()
          .setK(3) //设置需要划分类别的数量/个数
          .setMaxIter(10) //设置最大计算次数
          .setFeaturesCol("featuresOut") //设置特征的列    归一化后的列
          .setPredictionCol("predictionValue") //设置最终预测后的结果列名
          .setSeed(10) //设置随机种子
          .fit(scalerDF)
        
    
        val predictionDF: DataFrame = prediction.transform(scalerDF)
        predictionDF.show(false)
        
        /*
    +-----+-------------------------------+---------------------------------------------------------------------------------+---------------+
    |label|features                       |featuresOut                                                                      |predictionValue|
    +-----+-------------------------------+---------------------------------------------------------------------------------+---------------+
    |1.0  |(4,[0,1,2,3],[5.1,3.5,1.4,0.2])|[0.22222222222222213,0.6249999999999999,0.06779661016949151,0.04166666666666667] |0              |
    |1.0  |(4,[0,1,2,3],[4.9,3.0,1.4,0.2])|[0.1666666666666668,0.41666666666666663,0.06779661016949151,0.04166666666666667] |0              |
    |1.0  |(4,[0,1,2,3],[4.7,3.2,1.3,0.2])|[0.11111111111111119,0.5,0.05084745762711865,0.04166666666666667]                |0              |
    |1.0  |(4,[0,1,2,3],[4.6,3.1,1.5,0.2])|[0.08333333333333327,0.4583333333333333,0.0847457627118644,0.04166666666666667]  |0              |
    |1.0  |(4,[0,1,2,3],[5.0,3.6,1.4,0.2])|[0.19444444444444448,0.6666666666666666,0.06779661016949151,0.04166666666666667] |0              |
    |1.0  |(4,[0,1,2,3],[5.4,3.9,1.7,0.4])|[0.30555555555555564,0.7916666666666665,0.11864406779661016,0.12500000000000003] |0              |
         */
    
    
        //简单验证
        predictionDF.groupBy("label","predictionValue").count().show()
      /*
    +-----+---------------+-----+
    |label|predictionValue|count|
    +-----+---------------+-----+
    |  2.0|              1|   47|
    |  1.0|              0|   50|
    |  2.0|              2|    3|
    |  3.0|              1|   14|
    |  3.0|              2|   36|
    +-----+---------------+-----+
    
    */
    
      }
    }
    
    

    结语

            本篇博客,主要为大家简单介绍了RFM模型和KMeans聚类算法,后续会将其与用户画像的项目结合起来,为大家讲解挖掘型标签开发的过程,敬请期待😎

            如果以上过程中出现了任何的纰漏错误,烦请大佬们指正😅

            受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波🙏

            希望我们都能在学习的道路上越走越远😉

    展开全文
  • 如果我们根据用户的活跃度及消费情况,判断用户的流失意向,及时对有流失趋向的用户做营销召回,这对公司来讲是非常有必要的。 二、需求分析 模型标签: 分析模型标签我们知道,这是一个概率型的结论,如果通过一个...

    一、流失预测意义

    每个企业都渴望建立和保持一个忠实的客户群,而事实是由于各方面原因不可避免的会流失一些用户。
    如果我们根据用户的活跃度及消费情况,判断用户的流失意向,及时对有流失趋向的用户做营销召回,这对公司来讲是非常有必要的。

    二、需求分析

    模型标签:

    在这里插入图片描述
    分析模型标签我们知道,这是一个概率型的结论,如果通过一个普通的算术运算来得出的话,不会太靠谱!

    那该怎么办呢?

    要通过历史既定事实的经验(满足某些特征的人群中,哪些流失了,哪些没流失)来得出,才会更靠谱!


    三、特征工程

    (1)特征数据源
    1. 从公司大量的流失用户(标签:已流失)中,随机挑选1万人
    2. 从公司大量的未流失用户中,随机挑选1万人
    3. 将这2万人的数据(特征)组成先验样本集!
    标签特征1特征2特征3特征4特征5特征6
    标签特征1特征2特征3特征4特征5特征6
    (2)选择特征

    原则:所选取的特征,应该跟流失与否有关联!

    • 活跃属性
    • 消费属性
    • 最后距今登录天数
    • 最后距今购买天数
    • 事件属性(好评、中评、差评)

    从数仓中抽取相关的数仓表、画像报表。


    四、算法选择·逻辑回归算法

    (1)逻辑回归算法简介
    1. 是一种分类算法,分类预测的结果还有一定的概率含义。在生产中使用非常频繁;

    2. 线性回归实际解决的是预测实数连续值的问题;逻辑回归解决的是分类问题;

    3. 用于二分类领域,可以得出概率值,适用于根据分类概率排名的领域,如搜索排名等;

    4. Logistic回归的扩展softmax可以应用于多分类领域,如手写字识别等;

    5. 信用评估;

    6. 测量市场营销的成功度;

    7. 预测某个产品的收益等。
      在这里插入图片描述

    (2)实现步骤
    1. 加载经验样本数据
    2. 将样本数据向量化
    3. 构建逻辑回归算法工具
    4. 用算法对样本数据训练模型
    5. 用模型对未知数据做预测

    五、代码开干

    (1)样本数据
    label,gid,3_cs,15_cs,3_xf,15_xf,3_th,15_th,3_hp,15_hp,3_cp,15_cp,last_dl,last_xf
    0,1,6,30,3,10,0,1,10,15,1,2,1,1
    0,2,7,31,4,10,1,2,11,16,2,3,1,1
    0,3,8,29,6,11,2,2,12,17,1,1,1,2
    0,4,7,27,6,13,1,2,13,18,2,3,2,3
    0,5,8,26,7,10,2,3,14,19,3,4,3,4
    0,6,6,30,3,9,0,1,10,15,1,2,1,1
    0,7,7,32,2,10,1,2,11,16,2,3,1,1
    0,8,7,26,1,8,2,2,12,17,1,1,1,2
    0,9,9,24,8,12,1,2,13,18,2,3,2,3
    0,10,9,25,9,10,2,3,14,19,3,4,3,4
    1,11,0,1,0,1,0,1,0,0,0,1,14,14
    1,12,0,2,0,2,0,2,0,0,0,2,13,14
    1,13,0,1,0,0,0,0,0,0,0,0,14,14
    1,14,0,3,0,2,0,0,0,0,0,2,14,14
    1,15,0,1,0,2,0,0,0,0,0,0,14,14
    1,16,0,1,0,1,0,1,0,0,0,1,14,14
    1,17,0,2,0,2,0,2,0,0,0,2,13,14
    1,18,0,1,0,1,0,0,0,0,0,0,13,14
    1,19,0,3,0,2,0,0,0,0,0,2,12,13
    1.0,20.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10.0,11.0
    
    (2)待预测分类数据
    gid,3_cs,15_cs,3_xf,15_xf,3_th,15_th,3_hp,15_hp,3_cp,15_cp,last_dl,last_xf
    21,0,1,0,0,0,0,0,0,0,0,14,14
    22,8,29,3,10,2,2,12,17,1,1,1,2
    23,0,2,0,1,1,2,3,1,2,0,8,6
    24,4.0,10.0,15.0,2.0,2.0,2.0,1.0,2.0,1.0,1.0,1.0,2.0
    
    (3)代码实现
    package cn.ianlou.LogisticRegression
    
    import org.apache.log4j.{Level, Logger}
    import org.apache.spark.ml.classification.{LogisticRegression, LogisticRegressionModel}
    import org.apache.spark.ml.linalg.Vectors
    import org.apache.spark.sql.{DataFrame, SparkSession}
    
    import scala.collection.mutable
    
    /**
     * @date: 2020/2/24 22:40
     * @site: www.ianlou.cn
     * @author: lekko 六水
     * @qq: 496208110
     * @description:
     *
     */
    object LossPredict {
      def main(args: Array[String]): Unit = {
    
        Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
    
        val spark: SparkSession = SparkSession
          .builder()
          .appName(this.getClass.getSimpleName)
          .master("local[*]")
          .getOrCreate()
    
    
        // 1、加载样本数据
        val sampleDF: DataFrame = spark.read
          .options(Map("header" -> "true", "inferSchema" -> "true"))
          .csv("userProfile/data/loss_predict/sample/liushi_sample.csv")
    
    
        // 2、将样本数据的特征向量化
        // 自定义UDF:将特征值数组 转换成 特征值向量
        val arrToVec = (arr: mutable.WrappedArray[Double]) => {
          Vectors.dense(arr.toArray)
        }
        spark.udf.register("arrToVec", arrToVec)
    
        val sampleXL: DataFrame = sampleDF.selectExpr(
          "label",
          "gid",
          "arrToVec(array(3_cs,15_cs,3_xf,15_xf,3_th,15_th,3_hp,15_hp,3_cp,15_cp,last_dl,last_xf)) as features"
        )
    
    
        // 3、构建逻辑回归算法
        val regression: LogisticRegression = new LogisticRegression()
          .setFeaturesCol("features")
          .setLabelCol("label")
    
    
        // 4、训练模型
        val model: LogisticRegressionModel = regression.fit(sampleXL)
    
    
        // 5、加载待预测数据
        val testDF: DataFrame = spark.read
          .options(Map("header" -> "true", "inferSchema" -> "true"))
          .csv("userProfile/data/loss_predict/test/liushi_to_predict.csv")
    
        val testXL: DataFrame = testDF.selectExpr("gid",
          "arrToVec(array(3_cs,15_cs,3_xf,15_xf,3_th,15_th,3_hp,15_hp,3_cp,15_cp,last_dl,last_xf)) as features"
        )
    
    
        // 6、对测试数据进行预测,评估效果
        val predict: DataFrame = model.transform(testXL)
        predict.drop("features").show(50, false)
    
        /** 预测数据如下: 1.0->已流失   0.0->未流失
         * +---+------------------------------------+--------------------------------------+----------+
         * |gid|rawPrediction                       |probability                           |prediction|
         * +---+------------------------------------+--------------------------------------+----------+
         * |21 |[-23.2600244363058,23.2600246453058]|[7.9122452131513E-11,0.99999999208775]|1.0       |
         * |22 |[20.7841010137116,-20.7841013732116]|[0.99999999905916,9.409783211263E-10] |0.0       |
         * |23 |[-8.1915360669684,8.1915360662684]  |[2.7691138389587E-4,0.99972306161043] |1.0       |
         * |24 |[6.0314913814174,-6.0314913813174]  |[0.99760384620077,0.00239615397323214]|0.0       |
         * +---+------------------------------------+--------------------------------------+----------+
         */
    
        spark.close()
      }
    }
    
    
    展开全文
  • ArcGIS教程 - 2 ArcGIS基础知识

    千次阅读 多人点赞 2020-02-08 11:47:37
    ArcGIS10.x是ESRI公司开发的GIS产品家族,它集合了数据库、软件工程、网络技术、移动技术、云计算等主流的IT技术,目的是提供给用户一套完整的、开放的企业级GIS解决方案。本章主要介绍ArcGIS产品的发展史、构架等...

    第2章 ArcGIS基础知识

    2.1 ArcGIS10.x概述

    ArcGIS10.x是ESRI公司开发的GIS产品家族,它集合了数据库、软件工程、网络技术、移动技术、云计算等主流的IT技术,目的是提供给用户一套完整的、开放的企业级GIS解决方案。本章主要介绍ArcGIS产品的发展史、构架等方面的内容。

    ESRI(Environmental System Research Institute,环境系统研究所)创建于1969年,总部位于加州的雷德兰兹。1982年ESRI发布第一套商业化GIS软件ARC/INFO 1.0,可以在计算机上显示点、线、面,并通过数据库管理工具将属性信息与之结合。ARC/INFO 1.0被公认为第一个商业化GIS系统。

    1986年PC ARC/INFO的出现是ESRI软件发展史上的又一个里程碑,它是为PC的GIS工作站而设计的。

    1992年ESRI推出了ArcView软件,人们可以用更少的投入就可以获得一套简单易用的桌面制图工具。

    在20世纪90年代,ESRI推出了基于Windows NT构架的Arcinfo产品,满足用户GIS和制图多样的选择,同时奠定了ESRI在GIS市场的领头羊地位。

    2004年推出了新一代的ArcGIS 9,为构建完善的GIS系统提供了一套完整的软件产品。

    2010年ESRI推出ArcGIS 10,全球首款支持云构架的GIS平台,使ArcGIS 10真正具备了3D建模、编辑和分析能力,并实现了三维空间向四维时空的飞跃,真正的GIS与RS一体化。

    2.2 ArcGIS10.x家族

    ArcGIS家族包含众多的组成部分,最主要的几部分如下,如图所示:

    • ArcGIS for Desktop - 一套集成的、桌面端的专业 GIS 应用程序。

    • ArcGIS for Server - 将 GIS 信息和地图以 Web 服务形式发布,并且支持企业级数据管理。

    • ArcGIS for Mobile - 为野外计算提供移动 GIS 工具和应用程序。

    • ArcGIS Online - 提供可通过 Web 进行访问的在线云 GIS 功能。

    2.2.1 ArcGIS桌面产品级别

    ArcGIS桌面是GIS专业人士的主要工作平台,用来管理复杂的GIS流程和应用工程,来创建数据、地图、模型和应用。是在机构内部署GIS应用的起点和基础。

    ArcGIS桌面是一系列整合的应用程序的总称,包括ArcMap、ArcCatalog、ArcGlobe、ArcScene、ArcToolbox 和Model Builder。通过通用的应用界面,用户可以实现任何从简单到复杂的GIS任务。根据用户的伸缩性需求,ArcGIS桌面分为三个级别产品,如图所示:

    • ArcGIS for Desktop Basic:主要用于综合性数据使用、制图和分析;

    • ArcGIS for Desktop Standard:在ArcGIS for Desktop Basic基础上增加了高级的地理数据库编辑和数据创建功能;

    • ArcGIS for Desktop Advanced:是ArcGIS for Desktop的旗舰产品,作为完整的GIS桌面应用包含复杂GIS的功能和丰富的空间处理工具;

    2.2.2 ArcGIS for Desktop应用程序概述

    ArcGIS for Desktop是一个系列软件套件,它包含了一套带有用户界面的Windows桌面应用:ArcMap,ArcCatalog,ArcGlobe,ArcScene,ArcToolbox和Model Builder,每一个应用都具有丰富的GIS工具。

    2.2.2.1 ArcMap

    ArcMap是ArcGIS for Desktop中一个主要的应用程序,承担所有制图和编辑任务,也包括基于地图的查询和分析功能。ArcMap通过一个或几个图层集合表达地理信息,而在地图窗口中又包含了许多地图元素,通常拥有多个图层的地图包括的元素有比例尺,指北针,地图标题,描述信息和图例,如图所示。

    2.2.2.2 ArcCatalog

    ArcCatalog应用程序帮助用户组织和管理所有的GIS信息,比如地图、球体、数据文件、Geodatabase、空间处理工具箱、元数据、服务等。用户可以使用ArcCatalog来组织、查找和使用GIS数据,同时也可以利用基于标准的元数据来描述数据。GIS数据库管理员使用ArcCatalog来定义和建立Geodatabase。GIS服务器管理员则使用ArcCatalog来管理GIS服务器框架,如图所示。自ArcGIS 10开始,已经将ArcCatalog嵌入到各个桌面应用程序中,包括:ArcMap、ArcGlobe、ArcScene。

    2.2.2.3  ArcScense

    ArcScene是ArcGIS桌面系统中实现3D可视化和3D空间分析的应用,需要配备3D分析扩展模块。它是一个适合于展示三维透视场景的平台,可以在三维场景中漫游并与三维矢量与栅格数据进行交互,适用于数据量比较小的场景进行3D分析显示。ArcScene是基于OpenGL的,支持TIN数据显示。显示场景时,ArcScene会将所有数据加载到场景中,矢量数据以矢量形式显示,如图所示。

    2.2.2.4 ArcGlobe

    ArcGlobe是ArcGIS桌面系统中实现3D可视化和3D空间分析的应用,需要配备3D分析扩展模块。ArcGlobe提供了全球地理信息连续、多分辨率的交互式浏览功能,支持海量数据的快速浏览。像ArcMap一样,ArcGlobe也是使用GIS数据层来组织数据,显示Geodatabase和所有支持的GIS数据格式中的信息。ArcGlobe具有地理信息的动态3D视图。ArcGlobe图层放在一个单独的内容表中,将所有的GIS数据源整合到一个通用的球体框架中。它能处理数据的多分辨率显示,使数据集能够在适当的比例尺和详细程度上可见。

    ArcGlobe交互式地理信息视图使GIS用户整合并使用不同GIS数据的能力大大提高,而且在三维场景下可以直接进行三维数据的创建、编辑、管理和分析,如图所示。

    2.2.3 ArcGIS for Desktop常用扩展模块

    ArcGIS提供了一系列的常用扩展模块,用来扩展产品的功能。通常情况下,根据这些扩展的用途,可分为两大类:

    2.2.3.1 空间分析模块(ArcGIS Spatial Analyst)

    ArcGIS Spatial Analyst模块提供了众多强大的栅格建模和分析的功能,利用这些功能可以创建,查询,制图和分析基于格网的栅格数据。使用ArcGIS Spatial Analyst,用户可从现存数据中得到新的数据及衍生信息,分析空间关系和空间特征,寻址,计算点到点旅行的综合代价等功能。同时,还可以进行栅格和矢量结合的分析,如图所示。

    利用空间分析模块能够进行以下分析:

    • 距离分析、密度分析

    • 寻找适宜位置、位置间的最佳路径

    • 距离和路径成本分析

    • 基于本地环境、邻域或待定区域的统计分析

    • 应用简单的影像处理工具生成新数据

    • 对研究区进行基于采样点的插值

    • 进行数据整理以方便进一步的数据分析和显示

    • 栅格矢量数据的转换

    • 栅格计算、统计、重分类等功能

    2.2.3.2 三维可视化与分析模块(ArcGIS 3D Analyst)

    ArcGIS 3D Analyst模块提供了强大的、先进的三维可视化、三维分析和表面建模工具。通过ArcGIS 3D分析模块,你可以从不同的视点观察表面、查询表面、确定从表面上某一点观察时其它地物的可见性,还可以将栅格和矢量数据贴在表面以创建一副真实的透视图,还可以对三维矢量数据进行高端分析。使用ArcGIS 3D分析模块,你可以有效的编辑和管理三维数据。

    ArcGIS 3D分析扩展模块的核心是ArcGlobe应用程序,ArcGlobe提供浏览多层GIS数据、创建和分析表面的界面,高效的处理栅格、矢量、地形和影像数据集。

    利用ArcGIS 3D Analyst模块能够进行以下分析:

    • 进行表面创建和分析,支持Terrain Datasets

    • 建立ArcGIS所支持的数据格式的表面模型,其中包括CAD、shapefiles、coverages和 images数据格式

    • 进行交互式透视图的显示和分析,包括拖动和缩放、旋转、倾斜以及飞行模拟

    • 模拟诸如建筑物的现实世界表面特征

    • 模拟水井、矿、地下水以及地下储藏设施等地下特征

    • 从属性值来生成飞行的三维表面

    • 把二维数据遮盖在表面上且在三维空间中显示

    • 计算表面积、体积、坡度、坡角以及山阴影

    • 进行视域和视线分析、点的高度插值、画剖面图以及最陡路径判断

    • 进行日照分析、三维缓冲区分析、最大建筑高度分析、三维网络分析等高端三维应用分析,如图2.12、2.13所示

    • 使用许多数据图层效果诸如透明度、亮度、阴影以及深度优先

    • 生成二维或三维要素的等高线

    • 基于属性或位置的三维数据查询

    • 在网络上利用VRML输出显示数据

    •创建可视化的动画(AVI,MPEG, QuickTime)

    • 在三维可视化场景中进行编辑和管理3D数据

    • 在三维可视化场景中叠加视频

    • 天际线分析、最大建筑高度分析、三维网络分析等高端三维应用分析

    2.2.3.3 地理统计分析模块(ArcGIS Geostatistical Analyst)

    ArcGIS Geostatistical Analyst模块为空间数据探测、确定数据异常、优化预测、评价预测的不确定性和生成数据面等工作提供各种各样的工具,其主要能够完成探究数据可变性、查找不合理数据、检查数据的整体变化趋势、分析空间自相关和多数据集之间的相互关系以及利用各种地统计模型和工具来做预报、 预报标准误差、计算大于某一值的概率和分位图绘制等工作。如图所示。

    2.2.3.4 网络分析模块(ArcGIS Network Analyst)

    ArcGIS Network Analyst扩展可以帮助用户创建和管理复杂的网络数据集合,并且生成路径解决方案。ArcGIS Network Analyst是进行路径分析的扩展模块,为基于网络的空间分析(比如位置分析,行车时间分析和空间交互式建模等)提供了一个完全崭新的解决框架。该扩展模块将帮助ArcGIS for Desktop用户模拟现实世界中的网络条件与情景。ArcGIS Network Analyst模块能够进行行车时间分析、点到点的路径分析、路径方向、服务区域定义、最短路径、最佳路径、邻近设施、起始目标点矩阵等分析。

    ArcGIS Network Analyst使得ArcGIS用户可以利用地理网络来解决各种问题。许多基于网络的任务都可以被执行,如寻找最高效的旅游线路或者最近的设施,生成旅游向导,以及确定基于旅游时间的服务区域。如图所示。

    2.2.3.5 追踪分析模块(ArcGIS Tracking Analyst)

    ArcGIS Tracking Analyst模块提供时间序列的回放和分析功能,可以帮助显示复杂的时间序列和空间模型,并且有助于在ArcGIS系统中与其他类型的GIS数据集成的时候相互作用。该模块扩展了ArcGIS桌面功能,它提供了多种分析工具和功能,能够和其它的扩展模块结合起来为交通、应急反应、军事以及其它领域的用户实现功能强大的应用。

    用户可以使用ArcGIS Tracking Analyst模块显示分析时间数据,包括随着时间变化追踪要素的移动轨迹,以及某个时间段特定位置的追踪系统值的变化。

    2.2.3.6 数据互操作模块(ArcGIS Data Interoperability)

    使用ArcGIS Data Interoperability扩展可以直接读访问110多种空间数据格式,包括GML、DWG/DXF文件、MicroStation Design文件、MapInfo MID/MIF文件和TAB文件类型等。用户可以通过拖放方式让这些数据和其它数据源在ArcGIS中直接用于制图、空间处理、元数据管理和3D Globe制作。例如,所有制图功能都可使用这些数据源,包括查看要素和属性、识别要素和进行选择。

    ArcGIS Data Interoperability技术来自Safe软件公司(世界领先的GIS互操作提供商)的FME(Feature Manipulation Engine)产品。其中,包含了FME Workbench应用程序,它提供一系列数据转换工具用来构建复杂矢量数据格式的转换器。

    2.2.3.7 描矢量化模块(ArcScan for ArcGIS)

    ArcScan for ArcGIS是为ArcGIS for Desktop扩展的栅格编辑和扫描数字化等能力。它通常用于从扫描地图和手画地图中获得数据。

    使用ArcScan for ArcGIS模块,能够实现从栅格到矢量的转换任务,包括栅格编辑,栅格捕捉,手动的栅格跟踪和批量矢量化。ArcScan for ArcGIS使用交互式矢量化和自动矢量化的要素模板,要素模板是在ArcGIS 10 的时候开始提供的增强编辑体验之一。

    展开全文
  • 本文已在公众号 " 数据分析与商业实践 " 首发,源数据和包含详细步骤和注释的源代码可空降文末。 因为源代码中有一些自定义的长函数,直接放在文章中会非常占篇幅,而且阅读体验也不怎么好,而且分享有限,所以更多...

    👆 关注一下~,更多商业数据分析案例等你来撩
    在这里插入图片描述

    利用逻辑回归进行客户流失预警建模中涵盖了许多比较细的知识点,思维导图只展示了极小的一部分,相关知识点链接将穿插在文中。

    本文已在公众号 " 数据分析与商业实践 " 首发,源数据和包含详细步骤和注释的源代码可空降文末。

    因为源代码中有一些自定义的长函数,直接放在文章中会非常占篇幅,而且阅读体验也不怎么好,而且分享有限,所以更多案例,操作,源数据可移步公众号,资源在精不在多,赶快开始吧!


    数据读入

    churn = pd.read_csv('telecom_churn.csv', skipinitialspace=True)
    churn.head() 
    # 列比较多,显示不完
    

    churn.info() # 发现数据都比较整洁
    

    数据属性说明

    数据探索

    简洁版本,只是为了一元逻辑回归做的探索,毕竟实际情况中数据分析师们80%的时间可能都是用来清洗数据和结合具体业务来探索数据,所以探索数据方面并不是我们的侧重点。

    churn 流失与否 是否与 posTrend 流量使用上升趋势有关
    猜想:posTrend 为 1,即流量使用有上升趋势时,更不容易流失(用得越多越不容易流失)

    交叉表分析

    cross_table = pd.crosstab(index=churn.posTrend, columns=churn.churn, 
                              margins=True)
          # margins 就是为了在最后一行和最后一类后面添加个汇总的 all
    cross_table
    

    # 转化成百分比的形式
    def perConvert(ser):
        return ser/float(ser[-1])
    
    cross_table.apply(perConvert, axis='columns') 
        # axis=1 也可以写成 axis='columns', 表示对列使用这个函数
        
    # 发现的确如我们所想,流量使用有上升趋势的时候,流失的概率会下降
    

    卡方检验
    print("""chisq = %6.4f
    p-value = %6.4f
    dof = %i
    expected_freq = %s""" % stats.chi2_contingency(observed=cross_table.iloc[:2, :2]))
    # iloc 是因为 cross_table 添加了 margin 参数,也就是在最后一行和最后一列都显示 all,
     ## 卡方检验的时候我们只需要传入类别列即可,无需总列
    # 发现检验结果还是比较显著的,说明 posTrend 这个变量有价值
    

    统计学库建模

    一元逻辑回归

    拆分测试集与训练集

    train = churn.sample(frac=0.7, random_state=1234).copy()
    test = churn[~ churn.index.isin(train.index)].copy() 
    # ~ 表示取反,isin 表示在不在,这个知识点 pandas 非常常用
    print(f'训练集样本量:{len(train)}, 测试集样本量:{len(test)}')
    # 训练集样本量:2424, 测试集样本量:1039
    

    statsmodels 库进行逻辑回归

    # glm: general linear model - 也就是逻辑回归的别称:广义线性回归
    lg = smf.glm(formula='churn ~ duration', data=churn,
                family=sm.families.Binomial(sm.families.links.logit)).fit()
                ## family=sm .... logit 这一大行看似难,其实只要是统计学库进行逻辑回归建模,
                 ## 都是这样建,families 族群为 Binomial,即伯努利分布(0-1 分布)
    lg.summary()
    #  下面的一大个表中,只有这些还稍微有点价值,发现两个变量都挺显著,
    #     呈现一定的负相关关系,可以先简单理解为,每增加一个单位,流失的概率就下降一点
    # 	         coef	stderr	  z	    P>|z|	[0.025	0.975]
    # Intercept	3.0207	0.116	26.078	0.000	2.794	3.248
    # duration	-0.2488	0.010	-25.955	0.000	-0.268	-0.230
    

    使用建模结果进行预测

    预测流失的可能性

    # 预测流失的可能性
    train['proba'] = lg.predict(train)
    test['proba'] = lg.predict(test)
    
    test[['churn', 'proba']].head() # 我们可以假设 proba > 0.5 就算流失,
    # 即如果 churn=1,proba > 0.5,则表示预测正确,当然,这个 proba 需要根据业务实际情况来定
    

    # 以 proba > 0.5 就设为流失作为预测结果
    test['prediction'] = (test['proba'] > 0.5)*1 
            # 最后 *1 是为了把 True 和 False 转化成 10
    test[['churn', 'prediction']].sample(3)
    

    检验预测结果

    # 计算一下模型预测的准度如何
    acc = sum(test['prediction'] == test['churn']) / np.float(len(test))
    print(f'The accuracy is: {acc}') 
    ## 精度不错:The accuracy is: 0.7651588065447545
    
    # sklearn 包绘制 Python 专门用来评估逻辑回归模型精度的 ROC 曲线
    import sklearn.metrics as metrics
    ## 测试集的 roc 曲线
    fpr_test, tpr_test, th_test = metrics.roc_curve(test.churn, test.proba)
    ## 训练集的 roc 曲线
    fpr_train, tpr_train, th_train = metrics.roc_curve(train.churn, train.proba)
    
    plt.figure(figsize=[3, 3])
    plt.plot(fpr_test, tpr_test, 'b--')
    plt.plot(fpr_train, tpr_train, 'r--')
    plt.title('ROC curve'); plt.show()
    print(f'AUC = {metrics.auc(fpr_test, tpr_test)}')
    

    建模结果越靠近左上角越好,模型精度比较高。

    多元逻辑回归

    逐步向前法筛选变量

    当然,这里的变量还不算特别特别多,还可以使用分层抽样,假设检验,方差分析等方法筛选,这里不用多解释了。逻辑回归的逐步向前法已有优秀前人的轮子,直接拿来用即可。篇幅原因就不完全展示了。文末获取源数据与含有详细注释的源代码

    def forward_select(data, response):
      """略,文末获取源数据与含有详细注释的源代码"""
    
    # 待放入的变量,除了 subsriberID 没用外,其他都可以放进去看下
    candidates = churn.columns.tolist()[1:] 
    data_for_select = train[candidates]
    
    # 多元逻辑回归与多元线性回归的向前选择还是有些许不同的
    lg_m1 = forward_select(data=data_for_select, response='churn')
    lg_m1.summary()
    

    print(f'原来有 {len(candidates)} 个变量')
    print(f'筛选剩下 {len(lg_m1.params.index.tolist())} 个(包含 intercept 截距项)。')
    
    # 原来有 19 个变量,筛选剩下 14(包含 intercept 截距项)

    方差膨胀因子检测

    多元逻辑回归中也会存在多元共线性的干扰,其具体含义可查看如下文章:
    多元共线性检测 – 方差膨胀因子

    def vif(df, col_i):
        from statsmodels.formula.api import ols
        cols = list(df.columns)
        cols.remove(col_i)
        cols_noti = cols
        formula = col_i + '~' + '+'.join(cols_noti)
        r2 = ols(formula, df).fit().rsquared
        return 1. / (1. - r2)
    
    after_select = lg_m1.params.index.tolist()[1:] # Intercept 不算
    exog = train[after_select]
    
    for i in exog.columns:
        print(i, '\t', vif(df=exog, col_i=i))
        
    # 按照一般规则,大于10的就算全部超标,通常成对出现,只需要删除成对出现的一个即可。
     ## 这里我们挑成对出现中较大的删除
    

    # 删除 prom,posTrend
    drop = ['prom', 'posTrend']
    final_left = [x for x in after_select if x not in drop]
    
    # 再来一次方差膨胀因子检测
    exog = train[final_left]
    for i in exog.columns:
        print(i, '\t', vif(df=exog, col_i=i))
    

    再次进行建模与模型精度的检验

    重复一元逻辑回归的步骤即可。

    公众号会后续更新数据科学与商业实践常用的场景案例,丰富源数据源代码等你来撩 ~~
    在这里插入图片描述


    在这里插入图片描述

    展开全文
  • 因此,在云端提供深度学习模型的压缩和加速服务具有重要意义,对最终用户具有吸引力。 然而,现有的网络压缩和加速方法通常通过请求完整的原始训练数据(例如 ImageNet)来微调 svelte 模型,这可能比网络本身更...
  • Linux运维工程师学习成长路线

    万次阅读 多人点赞 2019-12-14 20:52:46
    -Linux安全架构、安全威胁模型、以及加密、解密等原理,常见攻击和防范⼿段 5、 Shell 编程⼊门及进阶 -Shell脚本基本用法以及进阶,从基础到精通,需要学习一些企业级常见脚本用法 6、 MySQL 应用原理及管理...
  • 3、单独建模型 1.2 缺失值的处理 1.2.1 种类: 1、完全随机缺失 2、随机缺失,依赖其他变量,如‘配偶姓名’的缺失取决于‘婚姻状况’ 3、完全非随机缺失:缺失值是由于本身缺陷导致,如年龄较低的信用卡办卡...
  • 初探AR技术

    千次阅读 多人点赞 2019-10-06 15:36:58
      其基本原理是通过GPS获取用户的地理位置,然后从某些数据源(比如wiki,google)等处获取该位置附近物体(如周围的餐馆,银行,学校等)的POI信息,再通过移动设备的电子指南针和加速度传感器获取用户手持设备的...
  • 正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。 这一家族中的模型形式基本上都差不多,不同的就是因变量不同。 如果是连续的,就是多重线性回归;如果是二项分布,...
  • FPGA现状

    万次阅读 多人点赞 2019-07-16 19:51:42
    mable 器件,以及全可编程的开发模型,包括软件定义的开发环境等。产品支持  5G  无线、嵌入式视觉、工业物联网和云计算所驱动的各种智能、互连和差异化应用。2014年12月,Xilinx的20nm芯片实现量产,2015年Xilinx...
  • 虽然很多企业都有自己的标签库,或者说是DMP吧,但毕竟不是每个产品经理都有机会让平台承载的标签数量超过一百万,原因很简单,要么没需求,要么没数据,要么没必要。 我记得当初打造1000+标签库的时候,也是觉得太...
  • 数据运营思维导图

    2018-04-26 14:24:22
    如果该值异常波动,请进一步看鲸鱼用户数据 4、用户留存 新用户留存 次日、3日、7日、14日、30日留存 次日留存是对玩家“第一游戏体验”的最佳印证 与游戏的类型、题材、玩法、美术风格、游戏前期内容吸引度、...
  • 分布式文件系统元数据服务模型

    万次阅读 多人点赞 2011-09-05 12:05:38
    随着非结构化数据的爆炸,分布式文件系统进入了发展的黄金时期,从高性能计算到数据中心,从数据共享到互联网应用,已经渗透到数据应用的各方各面。对于大多数分布式文件系统(或集群文件系统,或并行文件系统)而言,...
  • 背景昨天有个小伙伴问,如何在面试中深入讲解RFM模型?他的过往回答是:“在一定的窗口期内,R代表用户黏性,用最近消费时间表示,F代表用户忠诚度,用消费频次表示,M代表用户对企业的贡献,用...
  • 电商数据分析之用户画像的构成

    千次阅读 2020-11-26 10:00:00
    1、用户画像之基本属性谈到用户画像,首当其冲的就是需要了解我们的用户基础属性。用来定位我们的商品受众群体,以便于我们去拉新、广告投放等方式更好的获取精准客户,也可以分析我们上新品时的受众...
  • Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在...
  • 数据产品经理是伴随着大数据、人工智能的火热,新兴起的热门岗位,也是集数据、产品、运营、技术等各方向知识能力的综合岗位。今天通过能力模型为大家分享数据产品经理的成长指南,与同行专家一起交流...
  • 【摘 要】  为减少用户流失,提高用户保有率,文章介绍一种基于智慧运营平台,将大数据技术和数据挖掘技术相结合,对电信客户流失进行预测的模型。该模型利用大数据技术处理用户离网前的海量数据信息,分析流失...
  • 客户智能分为数据层、挖掘层和营销层,数据挖掘属于中间这一层,是服务支撑层,为营销提供支持。数据挖掘传统的一些领域,包括客户细分、营销预测、产品关联、实时分析、客户提升、价值分析,以及现在随着大数据技术...
  • 但是当数据量巨大的时候,计算N个相似用户的时间将会非常长,而数据库中的大部分用户和目标客户A在产品偏好方面不存在交集,故无需计算所有用户,只需计算和A有交集的用户。这里将用到用户的反查表,即偏好股票的有A...
  • CCNA(总结笔记)

    万次阅读 多人点赞 2018-10-02 12:04:41
    一、 OSI参考模型 七层 应用层 抽象语言----&amp;amp;amp;amp;amp;amp;gt;编码 表示层 编码----&amp;amp;amp;amp;amp;amp;gt;二进制 会话层 应用程序提供会话地址 类似:QQ号码 *上三层就是应用程序...
  • 2019数据运营思维导图

    2019-03-29 21:34:09
    可以用来监控大R用户异常变化情况 如果该值异常波动,请进一步看鲸鱼用户数据 4、用户留存 新用户留存 次日、3日、7日、14日、30日留存 次日留存是对玩家“第一游戏体验”的最佳印证 与游戏的类型、题材、玩法、美术...
  • 阿里3大营销模型:AIPL、FAST、GROW

    千次阅读 2020-08-08 15:43:24
    这篇文章,将用比较白话的语言和案例,把这3大模型讲清楚,让电商人、传统市场部的营销人等了解这3个人群精细化运营的“仪表盘”。
  • 分布式服务框架

    千次阅读 2016-01-29 10:42:11
    为了在内存中提供数据的高速查找能力,memcache 使用 key-value 形式存储和访问数据,在内存中维护一张巨大的HashTable,使得对数据查询的时间复杂度降低到O(1),保证了对数据的高性能访问。内存的空间总是有限的...
  • 中台概念着实火了一把,继去年购买了“数据中台”的百度搜索指数后,昨天我又购买了“业务中台”的百度指数,可能是由于刚刚购买,全量数据还没有统计汇总出来,所以当我们在百度指数中,搜索业务中台的时候,目前...
  • 数据治理怎么做?这篇万字长文终于讲清楚了!

    万次阅读 多人点赞 2018-10-27 13:53:01
    风险管理要求提供精准的数据模型、创造价值要求充分银行数据资产,这是数据治理的外部推动因素。此外,随着第三次工业革命的到来,银行业也需要进入定制化时代,以更低的成本,生产多样化的金融产品,从而满足不同...
  • 严蔚敏数据结构课后参考答案

    万次阅读 多人点赞 2019-11-09 22:46:44
    1.简述下列概念:数据数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用...
  • 机械学习 --客户价值模型 RFM

    千次阅读 2020-06-19 20:07:57
    比如电商网站要做一次营销活动,需要针对不同价值的客户群体进行分群,对于高价值的用户推荐手表,珠宝等高端商品,对于低价值用户推荐打折促销的廉价商品,当然还有以下这些问题都是需要考虑的: 1.谁是我的最佳...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,519
精华内容 9,807
关键字:

高端用户数据模型