絮叨两句:
博主是一名数据分析实习生,利用博客记录自己所学的知识,也希望能帮助到正在学习的同学们
人的一生中会遇到各种各样的困难和折磨,逃避是解决不了问题的,唯有以乐观的精神去迎接生活的挑战
少年易老学难成,一寸光阴不可轻。
最喜欢的一句话:今日事,今日毕

之前在如何了解K-Means聚类算法?这是博主为大家讲解的K-Means算法,并在基于不同的模型下使用K-Means进行开发RFM,RFE,PSM三个标签

本篇博客为大家带来基于USG模型下使用决策树开发用户购物性别

USG模型引入

------------------USG(User Shopping Gender)

AI驱动的电商用户模型:性别属性是这样确定的

------------------首先带领大家了解一下,如何通过大数据来确定用户的真实性别

  • 我们经常谈论的用户精细化运营,到底是什么?
    -----简单来讲,就是将网站的每个用户标签化,制作一个属于他自己的网络身份证。然后,运用人员通过身份证来确定活动的投放人群,圈定人群范围,更为精准的用户培养和管理。当然,身份证最基本的信息就是姓名,年龄和性别,与现实不同的是,网络上用户填写的资料不一定完全准确,还需要进行进一步的确认和评估。

确定性别这件事很重要,简单举个栗子,比如店铺想推荐新品的Bra,如果粗糙的全部投放人群或者投放到不准确性别的人群,那后果可想而知了。下面来介绍一下具体的识别思路

用户画像需要的数据

用户平时在电商网站的购物行为,浏览行为,搜索行为以及订单购买情况都会被记录在案,探查其消费能力,兴趣等。数据归类后,一般来讲,可以通过三类数据对用户进行分群和定义。

  • 1.用户信息

    1. 社会特征:马克思的人性观把人分为社会属性和自然属性。社会特征主要指的是人在社会上的阶级属性,当然也包括服从性、依赖性或者自觉性等,这是人类发展的必然的基本要求。
    1. 自然特征:也可以说成是人的生物性,通常来讲可以是食欲,物欲或者购买欲,自我保存能力。但不同人会有不同的自然特征,比如学习能力和逻辑思维等。
    1. 兴趣特征:对于电商来讲,主要是对某件商品,某个品牌或者品类的兴趣程度,如加购、浏览、收藏、搜索和下单行为。
    1. 消费特征:消费能力的评估,消费倾向的评估,能够判断用户的消费层级,是高消费力还是低消费力。

  • 2.商品

    1. 商品属性:基本信息,品类,颜色尺码型号等。
    1. 商品定位:商品层级,是否为高中低端,商品类型倾向于哪类客户,区域或者其他的特征。 最后通过以上的信息来获取用户信息,判断其具体的画像特征,然后得到类似于酱紫的网络身份证。

  1. 通常,拿到数据后,我们会将每个环节进行拆解,落实到具体的行动策略上。大体可以根据以下流程进行模型的预估:

  1. 业务目标: 精准投放:针对已有产品,寻找某性别偏好的精准人群进行广告投放。
  1. 技术目标: 对用户购物性别识别:男性,女性,中性
  1. 解决思路:选择一种分类算法,建立机器学习算法模型,对模型进行应用
  1. 线上投放:对得到的数据进行小范围内的测试投放,初期不宜过大扩大投放范围
  1. 效果分析:对投放的用户进行数据分析,评估数据的准确性。若不够完美,则需要重新建模和测试

如何理解建模过程

重点来了,虽然能够通过用户的行为,购买和兴趣数据,了解用户的基本信息,但是仍然不清楚如何建模?用什么语言建模?
其实,购物性别的区分使用的是spark,但是机器学习算法也有很多分类,包含逻辑回归,线性支持向量机,朴素贝叶斯模型和决策树。那么,又该如何选择呢?其中,决策树的优点较多,主要是其变量处理灵活,不要求相互独立。可处理大维度的数据,不用预先对模型的特征有所了解。对于表达复杂的非线性模式和特征的相互关系,模型相对容易理解和解释。看起来决策树的方法最适合区分性别特征了,所以决定用决策树进行尝试。

什么是决策树?简单来讲,是通过训练数据来构建一棵用于分类的树,从而对未知数据进行高效分类。可以从下面的图了解决策树的工作原理。

构造决策树的步骤为:

  • 通过训练数据来构建一棵用于分类的树,从而对未知数据进行高效分类。

以上步骤中,能够得出一个结论,在构建决策树的过程中,最重要的是如何找到最好的分割点。决策树值得注意的问题是过拟合问题,整个算法必须解决「如何停止分割」「如何选择分割」两个关键问题。

最简单的做法就是设定树的深度或枝叶的最少样本量。但是,过少的样本量又不具有代表性,所以一般情况,可以使用交叉验证的方法。交叉验证就是可以使用一部分数据用于模型的训练,另一部分数据可以用来评估模型的性能。业内常用的划分方法是讲样本进行50/50分,60/40分或者80/20分。

模型确立过程

在建模前期,首要考虑的事情就是先确定指标,以及对样本的定义。购物性别指的是什么?通过哪些数据来确定购物性别,样本的准确性,如何验证数据的可信度等。

购物性别的定义

先看下图,具体的逻辑可从图中查看。一般来讲,用户填写的资料不一定真实,我们对他/她的性别数据持怀疑态度,所以,就需要其他数据进行辅助证明其性别。

订单数据能够真实反映用户的购买心态,预测购买行为,并且能够通过购买商品的所属类别,判断用户的购买倾向,最后得到性别特征类目。不过本文就不展开探讨甄别特征类目的区分方法了。

根据数据结果,最终,确认了购物性别的定义。分为:

  • 购物性别男:N月购买的男性特征类目子下单数> N月购买的女性特征类目子下单数
  • 购物性别女:N月购买的男性特征类目子下单数> N月购买的女性特征类目子下单数
  • 购物性别中性:未下单男女特征类目
  • N需要具体根据业务场景来定。

建模数据准备过程

本节是具体的操作过程,模型的实操阶段。一般来讲,不同模型的训练其实大体雷同。从技术上来讲,各家算法大多使用sparkmllib,不同点是所运算的模型都是针对于场景来定的。


在全部样本中,取80%的数据用于训练模型
在全部样本中,取20%的数据用户数据测试

这种方式可以更好的根据数据的规模,提高模型的准确性

模型效果分析

行业内当前采用数据挖掘、机器学习和推荐系统中的评测指标—准确率(Precision)、召回率(Recall),准确率是应用最广的数据指标,也很清晰易懂,以男性为例

准确率=命中的男性用户数量/所有预测男性数量,一般来讲,准确率可以评估模型的质量,他是很直观的数据评价,但并不是说准确度越高,算法越好。

召回率=命中的男性用户数量/所有男性数量,反映了被正确判定的正例占总的正例的比重。

模型建立完后,需根据模型的结果与预期的对比,进行调优

最后要说的

购物性别定义对于用户精准营销十分重要,疑难杂症,对症下药,才能出现更好的疗效。
对于新手来说,初期一定是对模型性能及效果分析不是很熟练,可先用小数据量进行测试, 走通全流程 建表要规范,方便后期批量删除,因为建模是个反复的过程。
根据各类参数的评估结果,以及人工经验选定的模型参数,建立模型。值得注意的是,决策树的深度不要过深,以防止过拟合的问题

决策树分类算法详解



决策树是最经典的机器学习模型之一。它的预测结果容易理解, 易于向业务部门解释,
预测速度快,可以处理类别型数据和连续型数据。在机器学习的数据挖掘类求职面试中,决策树是面试官最喜欢的面试题之一。

算法原理















快速体验

package cn.itcast.userprofile.up24.newexcavateimport org.apache.spark.ml.classification.{DecisionTreeClassificationModel, DecisionTreeClassifier}
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.ml.feature.{IndexToString, StringIndexer, StringIndexerModel, VectorAssembler}
import org.apache.spark.ml.{Pipeline, PipelineModel}
import org.apache.spark.sql.types.DoubleType
import org.apache.spark.sql.{DataFrame, SparkSession}object UsgTest {def main(args: Array[String]): Unit = {//1.创建SParkSessionval spark: SparkSession = SparkSession.builder().appName("Usg").master("local").getOrCreate()val sparkContext = spark.sparkContextsparkContext.setLogLevel("WARN")import spark.implicits._//2.读取数据val iris_tree: DataFrame = spark.read.csv("file:///C:\\BigData\\UserPortraitSourceData\\resources\\用户画像2\\第三阶段\\03挖掘型标签\\数据集\\iris_tree.csv").toDF("Sepal_Length", "Sepal_Width", "Petal_Length", "Petal_Width", "Species").select('Sepal_Length cast DoubleType, 'Sepal_Width cast DoubleType, 'Petal_Length cast DoubleType, 'Petal_Width cast DoubleType, 'Species)
//    iris_tree.show()/*** +------------+-----------+------------+-----------+-----------+* |Sepal_Length|Sepal_Width|Petal_Length|Petal_Width|    Species|* +------------+-----------+------------+-----------+-----------+* |         5.1|        3.5|         1.4|        0.2|Iris-setosa|* |         4.9|        3.0|         1.4|        0.2|Iris-setosa|* |         4.7|        3.2|         1.3|        0.2|Iris-setosa|* |         4.6|        3.1|         1.5|        0.2|Iris-setosa|*///3.对Species 进行处理val indexerModel: StringIndexerModel = new StringIndexer().setInputCol("Species").setOutputCol("label").fit(iris_tree)//4.处理特征val vectorAssembler: VectorAssembler = new VectorAssembler().setInputCols(Array("Sepal_Length", "Sepal_Width", "Petal_Length", "Petal_Width")).setOutputCol("features")//5.创建决策树val decisionTreeClassifier = new DecisionTreeClassifier().setFeaturesCol("features").setPredictionCol("prediction").setSeed(10).setMaxDepth(5)//6.还原标签val indexToString = new IndexToString().setInputCol("label").setOutputCol("Species_label")//7.划分训练集、测试集,var Array(trainData,testData)=iris_tree.randomSplit(Array(0.8,0.2))//8.使用Pipeline 进行计算val pipeline: Pipeline = new Pipeline().setStages(Array(indexerModel, vectorAssembler, decisionTreeClassifier, indexToString))//生成模型val model: PipelineModel = pipeline.fit(trainData)//测试val testDataModel = model.transform(testData)
//        testDataModel.show()/*** +------------+-----------+------------+-----------+---------------+-----+-----------------+--------------+-------------+----------+---------------+* |Sepal_Length|Sepal_Width|Petal_Length|Petal_Width|        Species|label|         features| rawPrediction|  probability|prediction|  Species_label|* +------------+-----------+------------+-----------+---------------+-----+-----------------+--------------+-------------+----------+---------------+* |         4.3|        3.0|         1.1|        0.1|    Iris-setosa|  0.0|[4.3,3.0,1.1,0.1]|[42.0,0.0,0.0]|[1.0,0.0,0.0]|       0.0|    Iris-setosa|* |         4.5|        2.3|         1.3|        0.3|    Iris-setosa|  0.0|[4.5,2.3,1.3,0.3]|[42.0,0.0,0.0]|[1.0,0.0,0.0]|       0.0|    Iris-setosa|* |         4.9|        2.4|         3.3|        1.0|Iris-versicolor|  1.0|[4.9,2.4,3.3,1.0]| [0.0,0.0,1.0]|[0.0,0.0,1.0]|       2.0|Iris-versicolor|* |         5.0|        2.3|         3.3|        1.0|Iris-versicolor|  1.0|[5.0,2.3,3.3,1.0]|[0.0,28.0,0.0]|[0.0,1.0,0.0]|       1.0|Iris-versicolor|* |         5.1|        3.3|         1.7|        0.5|    Iris-setosa|  0.0|[5.1,3.3,1.7,0.5]|[42.0,0.0,0.0]|[1.0,0.0,0.0]|       0.0|    Iris-setosa|* |         5.1|        3.4|         1.5|        0.2|    Iris-setosa|  0.0|[5.1,3.4,1.5,0.2]|[42.0,0.0,0.0]|[1.0,0.0,0.0]|       0.0|    Iris-setosa|* |         5.1|        3.5|         1.4|        0.3|    Iris-setosa|  0.0|[5.1,3.5,1.4,0.3]|[42.0,0.0,0.0]|[1.0,0.0,0.0]|       0.0|    Iris-setosa|* |         5.1|        3.8|         1.5|        0.3|    Iris-setosa|  0.0|[5.1,3.8,1.5,0.3]|[42.0,0.0,0.0]|[1.0,0.0,0.0]|       0.0|    Iris-setosa|* |         5.2|        2.7|         3.9|        1.4|Iris-versicolor|  1.0|[5.2,2.7,3.9,1.4]|[0.0,28.0,0.0]|[0.0,1.0,0.0]|       1.0|Iris-versicolor|* |         5.2|        4.1|         1.5|        0.1|    Iris-setosa|  0.0|[5.2,4.1,1.5,0.1]|[42.0,0.0,0.0]|[1.0,0.0,0.0]|       0.0|    Iris-setosa|* |         5.4|        3.0|         4.5|        1.5|Iris-versicolor|  1.0|[5.4,3.0,4.5,1.5]|[0.0,28.0,0.0]|[0.0,1.0,0.0]|       1.0|Iris-versicolor|* |         5.5|        2.4|         3.7|        1.0|Iris-versicolor|  1.0|[5.5,2.4,3.7,1.0]|[0.0,28.0,0.0]|[0.0,1.0,0.0]|       1.0|Iris-versicolor|* |         5.5|        2.4|         3.8|        1.1|Iris-versicolor|  1.0|[5.5,2.4,3.8,1.1]|[0.0,28.0,0.0]|[0.0,1.0,0.0]|       1.0|Iris-versicolor|* |         5.6|        2.7|         4.2|        1.3|Iris-versicolor|  1.0|[5.6,2.7,4.2,1.3]|[0.0,28.0,0.0]|[0.0,1.0,0.0]|       1.0|Iris-versicolor|*///8. 验证结果val evaluator: MulticlassClassificationEvaluator = new MulticlassClassificationEvaluator().setLabelCol("label").setPredictionCol("prediction").setMetricName("accuracy")val Score = evaluator.evaluate(testDataModel)println("测试数据确认百分比:",Score)//(测试数据确认百分比:,0.9259259259259259)//9.查看决策树val decisionTreeClassificationModel = model.stages(2).asInstanceOf[DecisionTreeClassificationModel]println("Learned DecisionTreeClassificationModel:\n" + decisionTreeClassificationModel.toDebugString)/**Learned DecisionTreeClassificationModel:
DecisionTreeClassificationModel (uid=dtc_0f9b93f0b062) of depth 4 with 13 nodesIf (feature 1 <= 1.9)Predict: 0.0Else (feature 1 > 1.9)If (feature 3 <= 1.6)If (feature 1 <= 4.9)Predict: 1.0Else (feature 1 > 4.9)If (feature 0 <= 2.6)Predict: 2.0Else (feature 0 > 2.6)Predict: 1.0Else (feature 3 > 1.6)If (feature 1 <= 4.8)If (feature 0 <= 3.0)Predict: 2.0Else (feature 0 > 3.0)Predict: 1.0Else (feature 1 > 4.8)Predict: 2.0*/}}


以上就是USG模型介绍以及决策树算法原理
若有错误及时私信我,立马修改
如能帮助到你或对大数据有兴趣的可以关注一下,希望能点个赞支持一下谢谢!

企业级用户画像:用户购物性别模型-USG和决策树算法相关推荐

  1. 用户画像第四章(企业级360°用户画像_标签开发_挖掘标签_用户购物性别模型-USG)

    用户购物性别模型-USG USG模型引入 USG(User Shopping Gender) 2.5.1.AI驱动的电商用户模型:性别属性是这样确定的 首先带领大家了解一下,如何通过大数据来确定用户的 ...

  2. 008产品设计的思考(创造思维+用户体验+用户画像+用户群体)

    文章目录 一.产品优化创造思维如何培养 1.1 产品优化创造思维培养 二.用户体验设计原则 2.1 可见原则 2.2 场景贴切原则 2.3 可控原则 2.4 一致性原则 2.5 防错.防呆原则 2.6 ...

  3. 企业级用户画像: 用户活跃度模型-RFE

    絮叨两句: 博主是一名数据分析实习生,利用博客记录自己所学的知识,也希望能帮助到正在学习的同学们 人的一生中会遇到各种各样的困难和折磨,逃避是解决不了问题的,唯有以乐观的精神去迎接生活的挑战 少年易老 ...

  4. 基于高校图书馆的用户画像、可视化、模型预测、推荐算法项目实现

    需要本项目的可以私信博主获取源码及项目!!! 本研究基于高校图书馆的借阅信息.馆藏图书信息.读者入馆信息.用户信息等多维度的数据表,首先将不同年份的数据拼接在一起,按照时间维度进行整合,并保证数据维度 ...

  5. 用户画像 用户画像表

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 用户画像  总文章 ================ 用户画像 ...

  6. 大数据【企业级360°全方位用户画像】基于RFE模型的挖掘型标签开发

    上一篇博客,已经为大家介绍了基于RFM(用户价值模型)的挖掘型标签开发过程(

  7. 用户画像——用户流失率的计算

    目录 1.流失概率预测需求 2.特征工程-- 选择特征 3.特征工程-- 特征数据源 4.算法选择 4.1逻辑回归分类算法 4.1.1步骤 4.1.2 向量规范化 4.1.3 按照步骤写demo 4. ...

  8. 用户画像--用户标签

    1.长期.短期 2.静态标签.动态标签 3.第一方标签.第三方标签

  9. 基于多模型融合的用户画像分析统计方法研究

    摘  要 随着信息技术的快速发展和大数据技术的广泛应用,企业的营销和产品的设计,对精细化.精准化的要求越来越高.主流的电商平台.搜索引擎以及短视频平台均推出了基于用户画像的个性化推荐服务,这其中相当一 ...

最新文章

  1. 开发日记-20190813 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 22
  2. (巴什博弈 sg函数入门1) Brave Game -- hdu -- 1846
  3. mysql5.5索引,MySQL--5索引选择原则
  4. linux 关闭rsync服务器,linux下配置rsync服务器和实时同步
  5. H.264 NAL层解析
  6. 数据挖掘--非负矩阵分解
  7. uniapp选择图片压缩并上传
  8. 【黑灰产犯罪研究】恶意注册
  9. 树规? bzoj4007 战争调度
  10. Linux系统管理(一)基础管理
  11. 39岁了,我依然要谈梦想
  12. 安卓高德地图 - (附近信息点Poi与标记Marker2)
  13. 青龙-聚看点(稳定的毛)
  14. python中def _init_是什么意思_python3类中的def __init()__如何使用?
  15. 苹果手机备份有必要吗_旧手机里的便签能备份到新手机里吗?
  16. Github十大深度学习项目
  17. python内置库求复数的辐角_根据下列选项,回答 30~34 题: A.杜仲B.黄柏C.厚朴D.肉桂E.牡丹皮 第 30 题 断面较平坦,粉...
  18. 纪 ACM 退役-再回首
  19. android 阿拉伯语下的光标,android – 在EditText中的游标提示不是从右边开始的阿拉伯语...
  20. 关于数独游戏的实现(一)

热门文章

  1. 通过 Flick 看数据库集群
  2. MHCHXM超快恢复二极管SF1604为什么是三个脚
  3. Libvirt CPU Feature
  4. 计算机网络应用层--龙之介计算机网络学习(2)
  5. Erlang中的nif
  6. 【转】冥想的习练与方法(初级篇)
  7. VIVO开发者平台上架APP
  8. 系统结构-延迟禁止表、冲突向量、状态转移图、最小平均延迟周期性、调度方案
  9. 【传道自由职业】 自由职业意味着什么?
  10. windows系统的安装时间怎么查看