Wish电商平台夏季服装 数据分析 - 使用 R语言建模

数据背景 数据集来自Wish电商平台 2020年8月份夏季服装销售数据,该数据集包含产品列表以及产品评级和销售业绩。 以下引自维基百科 Wish是美国的在线电子商务平台,可促进买卖双方之间的交易。 Wish由首席执行官Piotr Szulczewski和前CTO Danny Zhang于2010年创立。 Wish由位于美国旧金山的ContextLogic Inc.经营。 该平台采用浏览技术,可为每个客户直观地个性化购物,而无需依赖搜索栏。 它允许卖方在“愿望”上列出其产品,然后直接出售给消费者。 Wish与支付服务提供商合作处理付款,并且不自行存储产品或管理退货。 数据来源 数据来源: https://www.kaggle.com/jmmvutu/summer-products-and-sales-in-ecommerce-wish 特征说明 数据在标题栏的法语本地化中发生了一些冲突(因此,出现了一些非ASCII拉丁字符,例如«é和«à»)。 另一方面,title_orig包含默认显示的原始标题(基本标题)。 卖方提供翻译后,它会显示在标题栏中。 当title和title_orig列相同时,通常意味着卖方没有指定用法语设置显示给用户的翻译。 部分列名解释: title:产品的名字
title_orig:产品的原始名字(英文)
price:价格(消费者购买商品时支付的价格)
retail_price: 商品指导价
uses_ad_boosts:商品是否在平台内被宣传过,1代表宣传过,0代表没有
product_variation_inventory:商家允许的存货数量,最大为50
inventory_total:存货的总数量
has_urgency_banner:商家是否使用紧急宣传情况标语(例如:‘数量有限’) product_variation_size_id: 服装尺码大小(例如::M、XS、S) 目标 尝试验证人们对价格下跌敏感的程度,观念? (折扣价与原始零售价相比) 寻找顶级类别的产品,以便了解最畅销的产品? 产品质量(等级)与成功之间的关系如何? 价格因素是否包括在内? 夏季最畅销的类别,产品尺寸和颜色是什么? 哪些关键变量/因素可以成功预测售出的产品数量? 建立机器学习模型来预测已售出的产品数量 数据预处理(清洗) 这是数据分析中的关键一步,以确保数据经过转换,干净且易于使用以用于分析目的。 以下是一些重要/关键步骤:
    删除无关/不必要的变量。 一些变量与使用无关。这些数据不包含任何重要信息或数据中的可变性,而有些信息可以帮助预测已售出的产品数量, 例如,currency_buyer ,shipping_option_name,merchant_profile_picture,urgency_text, crawl_month, theme, and product_url无用,因此,这些变量将从数据集中删除。 在适当的地方检查并处理缺失值
在生成了有关数字变量的描述性统计数据之后,应注意的是,仅评级数据具有一些缺失值。 给定产品的所有缺失评分计数均归零。 可以放心地进行假设,如果该产品不存在评级数据,则几乎意味着没有用户对该产品进行评级。 因此,在这种情况下,用零进行插补完全有意义。 若某商人 没有被评价 则用 均值代替 ,has_urgency_banner 缺失则说明没有紧急宣传,用0填补缺失值,price,retail_price,units_sold等若出现缺失,则移除所在行。
    从现有变量创建新变量 从现有变量中创建了一些新变量。以下是清单:
      由 units_sold 数据分布概览,将 4000 < units_sold 打上标签 “高销售量”,2000< units_sold < 4000 打上标签“中销售量”,units_sold < 2000 打上标签 “低销售量”,新增列 sold_label 折扣率,即价格与零售价格的百分比变化 每种产品的用户评分分布
    清除分类变量 某些类别变量(例如“商品颜色”,“服装尺码大小”和“来源国家/地区”)的频率分布很集中,表明数据不干净。 必须清理并转换类别变量,以使用这些变量来构建良好的模型。 商品颜色 “product_color” 有很多不同的值。 由于低频计数,这些值中的大多数要么是冗余的,要么是无关的。 最好手动将喜欢的颜色分组在一起,或者通过运行字符串到字符串的模糊匹配算法以消除数据冗余。 此外,我选择创建“其他”类别,以包括分布极低的那些颜色。 商品类别 商品类别在数据集中没有明确定义。我使用了商品描述,并将其与参考列表进行了匹配,从而为每个商品分配了一个类别。
直观分析
    夏季最畅销的类别,颜色和尺码是多少?
类别: 夏季在Wish电子商务平台上销售的前6名类别是 连衣裙,短裤,无袖,衬衫,短袖,T恤。符合夏季销售客观事实。 颜色: 夏季在Wish电子商务平台上销售的前6名颜色是 黑色,白色,灰色,紫色和蓝色,绿色。 尺码: 夏季在Wish电子商务平台上销售的前6名尺码是 S,M,XS,L,XXS,XL。 注意,本数据为在欧洲的销售数据。 补充:亚洲尺码和欧洲尺码区别 亚洲尺码和欧洲尺码区别是欧洲尺码通常要比亚洲尺码大一码到二码,如果欧洲人适合穿的衣服,让同等身高和身材的亚洲人来穿,就会明显大很多。另外欧洲尺码和亚洲尺码的表现形式有所不同,欧洲尺码一般用XS、S、M、 L、XL来表示,亚洲尺码则会用身高、腰围等数据表示,如155、160、165等。 看数据可知,S尺码较多,符合欧洲人客观事实。
    有多少商品的价格是低于指导价售卖?有多少商品的价格是高于指导价售卖的?
若价格差额为正,说明此商品是高于指导价售卖的,若为负,说明此商品是低于指导价售卖的 发现商家在售卖大部分商品时的价格在指导价格基础上 上下5欧元的区间浮动
    他们各自的商品数量有多少?
可以看到大多数商家采用低于指导价的方式在前期吸引消费者,而也有很多商品高于指导价,但很少有商品采用指导价作为最终销售价格,说明价格因素是多变的,活动,节日等都可能影响价格因素,使用指导价是不现实的。 综上所述,商家应在夏季前多储备连衣裙,短裤,尺码在S的服装,以供夏季服装销售。 聚类分析 每个商品都有一个标签列(tags),标签内容为该商品的关键词描述,每个tags都有多个tag,unique-categories.sorted-by-count.csv 中记录了每个标签出现的次数,通过从中提取高频且为服装类型标签,再与每一行的tags列作匹配,就可以为大多商品打上有效的服装类别标签(cat_label)。 为了接下来的聚类分析,这里按 cat_label 分组,分别对组内 销售量(units_sold)、商家评级(merchant_rating)、价格(price)、商品评级(rating),五星评价率(rating_five_percent)求均值,中位数,均值,中位数,中位数,再将 cat_label 作为行名,并移除该列,结果如下表。 其中,五星评价率,计算公式如下:
\[ median\_rating\_five\_percent = \frac{median(rating\_five\_count)} {median(rating\_count)} \]
接下来,对数据进行标准化,当不同特征量纲相差较大时,由于方差对于量纲,均值的敏感,将会导致量纲大的特征 对于 方差的影响很大,而我们认为这是不对的,不应当因为 公里数几千几万,相较于几元钱,而过分的影响最后方差,这也是相关系数的体现,相关性不应当受量纲影响,当然,标准化(均值0,方差1)后的数据求协方差矩阵,相当于相关系数矩阵,这是因为如下公式: 当方差为1时,相关系数等于协方差,在R语言中使用 scale() 进行均值0,方差1的标准化,即标准正态分布。 对之前得到的数据集中的所有变量做均值0,方差1的标准化,结果如下: 接下来,用 Euclidean 法计算得出距离矩阵,再分别用最短距离法,最长距离法,中间距离法,类平均法,重心法,离差平方和法聚类,最后画出聚类图,这里仅展示部分聚类图,如下, 广义与一般线性模型

广义线性模型

Logistic模型

\[ y = f(x) = \frac{1}{1 + e^{-x}} = \frac{e^x}{1 + e^x} , \ y \in [0, 1] \] 下方用 Logistic 曲线来描述P与解释变量X之间的关系。
\[ P = P(y = 1 | X) = \frac{exp(\beta_0 + \beta_1 x_1 + ... + \beta_p x_p)} {1 + exp(\beta_0 + \beta_1 x_1 + ... + \beta_p x_p)} = \frac{exp(X \beta)}{1 + exp(X \beta)} \] 由于Logistic模型要求函数应限制在[0, 1],因此这里根据销量(units_sold)列,大于销量均值,打上标签sold_label=1,否则sold_label=0,即将销量分二类,再将 分类变量(uses_ad_boots),分类变量(has_urgency_banner)作为解释变量,建立Logistic模型。 Logistic回归模型结果如下: 由此结果得到初步的 Logistic 回归模型:
\[ P = \frac{exp(-0.52043 -0.18452 x_1 -0.12876 x_2)} {1 + exp(-0.52043 -0.18452 x_1 -0.12876 x_2)} \]
即 \(logit(P) = -0.52043 -0.18452 x_1 -0.12876 x_2\) 在此模型中,由于参数 \(\beta_2\) 没有通过检验,可类似于线性模型,用 step() 做变量筛选,这里 逐步筛选法变量选择,结果如下: 逐步筛选法变量选择 结果 如下: 由上图结果可以得出新的回归方程如下:
\[ P = \frac{exp(-0.55868 -0.18552 x_1)} {1 + exp(-0.55868 -0.18552 x_1)} \]
对使用广告推送和不使用广告推送的商品分别做预测,预测商品高销量的概率,预测结果如下: 0.65 0.34 可以得知,使用广告推送有助于提高商品销量。 TODO: 效果极其不好,居然不使用广告推送,销量高的概率还大些

一般线性模型

随机区组设计模型

为了研究销售价与指导价的差额,商家为了商品所采取的行为(例如,使用广告推送,添加宣传横幅等)是否会影响销量,接下来将价格差额设计为一个单位组A,有3个水平,分别为无价格变动,低于指导价,高于指导价,商家行为设计为一个单位组B。有3个水平,分别为使用广告推送,有广告横幅,两者均使用。分别产生单位组A 的 3 个哑变量 和 单位组B的3个哑变量后,将实验结果 \(y_{ij}\) 表示如下:
\[ y_{ij} = \mu + \alpha_{i} + \beta_{j} + \varepsilon_{ij} (i = 1, 2, 3; j = 1, 2, 3) \]
其中 \(\mu\) 为平均数,\(\alpha_{i}\) 为处理因素A的的第\(i\) 个水平的效应;\(\beta_{j}\) 为第 \(j\) 个单位组的效应,\(\varepsilon_{ij}\) 为误差项 打上标签后,如下: 随机单位组设计模型 方差分析 如下: 结论: \(P_{diff\_price\_label}>0.05\) 说明价格差额对销量无显著影响
\(P_{behavior\_label}>0.05\) 说明商家行为对销量无显著影响 因子分析 按颜色分组,分别计算均值,和等,结果如下: 为了确认数据是否适合做因子分析,接下来进行简单相关分析,计算相关系数矩阵,作图,结果如下: 从上面的相关系数矩阵可以看出,大部分变量呈弱相关,不适合做因子分析。 参考 感谢帮助! R语言与数据分析论文(龙湘萍) 数据源 R语言:50题搞定 data.table R语言数据处理120题 玩转数据处理120题(R语言tidyverse版) https://akshay-mahesh-jain.medium.com/sales-of-summer-clothes-on-e-commerce-platform-wish-b9668d4a44f4 https://towardsdatascience.com/predicting-e-commerce-sales-with-a-random-forest-regression-3f3c8783e49b