高点播动漫的特征画像

特征画像,在电商中俗称用户画像,是对不同类别群体的特征描述方法
做特征画像的方法非常多,今天抛砖引玉一下
注,有疑问 加QQ群..[174225475].. 共同探讨进步
有偿求助请 出门左转 door , 合作愉快

问题描述

从网上抓取了部分动漫的基本信息/周边及竞品数量信息
希望能从中获取高点播动漫的分布特征

解题步骤

数据准备

setwd('./20171222dongman')
library(readxl)
library(data.table)
dongman1 <- data.table(read_xlsx('./dongman.xlsx',sheet = 1))

数据基本情况描述

head(dongman1)
高点播动漫的特征画像_第1张图片
data

数据有数值和字符串及数值和字符串混合等情况,字符串中还包含了特殊字符大量空格等,鉴于这些情况,需要对数据进行清洗

数据清洗及有效信息提取

str_clean <- function(x) {
  trimws(gsub('\r|\n','',x))
}

dongman2 <- dongman1[,lapply(.SD,str_clean)]

get_num <- function(x) {
  if (as.numeric(regexpr('[0-9.]+',x))>0) {
    regmatches(x,regexpr('[0-9.]+',x))
  }else{
    NA
  }
}

dongman2[,c('正片数据','周边数据','专辑总数据')] <- 
  dongman2[,lapply(.SD,function(x) lapply(x,get_num)),
           .SDcols=c('正片数据','周边数据','专辑总数据')]

dongman2[,':='(评分=as.numeric(评分),
                 总播放量=as.numeric(总播放量),
                 正片数据=as.numeric(正片数据),
                 周边数据=as.numeric(周边数据),
                 专辑总数据=as.numeric(专辑总数据),
                 今日播放量=as.numeric(今日播放量))]

leixing2 <- gsub('                                                    ',
                 ' ',dongman2$类型)
type1 <- dcast(L1~value,data=melt(strsplit(leixing2,' ')),length)

dongman3 <- cbind(dongman2,type1[,-1])

建模前数据规整

# delete 动漫名称/主演/类型/简介
# 名称无效,主演都是动漫里的角色没什么参考价值,简介涉及文本挖掘暂不深入,类型已被拆分处理为type1
dongman4 <- dongman3[!is.na(dongman3$总播放量),-c('动漫名称','主演','类型','简介')]
dongman4$target1 <- ifelse(dongman4$总播放量>0.1,1,0)
library(smbinning)
websc1 <- smbinning(df=dongman4[,c('target1','评分')],
                    y='target1',x='评分')
pingfen1 <- cut(dongman4$评分,c(websc1$bands))
zhengp1 <- smbinning(df=dongman4[,c('target1','正片数据')],
                    y='target1',x='正片数据')
zhengpian1 <- cut(dongman4$正片数据,c(zhengp1$bands))
zhoub1 <- smbinning(df=dongman4[,c('target1','周边数据')],
                     y='target1',x='周边数据')
zhoubian1 <- cut(dongman4$周边数据,c(zhoub1$bands))
zhuanj1 <- smbinning(df=dongman4[,c('target1','专辑总数据')],
                    y='target1',x='专辑总数据')
zhuanji1 <- cut(dongman4$周边数据,c(zhuanj1$bands))

doman1 <- cbind(pingfen1,zhengpian1,zhoubian1,
                zhuanji1,dongman4[,-c(1:5)])
doman1$target2 <- ifelse(doman1$target1==1,'YES','NO')
doman2 <- data.table(doman1[,-c('target1')])
doman2 <- doman2[,lapply(.SD,as.factor)]

建模

rules <- apri(...)
rules.sorted <- sort(rules, by='lift')
plot(rules.sorted, method="graph", 
     control=list(type='items',arrowSize=0.3)) 
高点播动漫的特征画像_第2张图片
grf1.png

将所有规则展示出来会发现, 绝大多数高点播动漫都与 评分(8.9,9.7]有关联, 于是对规则进行合并处理

# remove redundant rules 
rules.pruned <- rules.sorted[!redundant] 
#inspect(rules.pruned)

plot(rules.pruned, method="graph", 
     control=list(type='items',arrowSize=0.4)) 
高点播动漫的特征画像_第3张图片
grf2.png

将前面的规则合并后我们发现,高点播动漫主要依赖于 分值, 这一点是非常清晰明了的, 同时也是闭着眼睛也能发现的规则, 于是乎规避掉这个因素, 则

rules <- apri(...)
rules.sorted <- sort(subset(rules, !items %in% c('pingfen1')), by='lift')
...
# remove redundant rules 
rules.pruned <- rules.sorted[!redundant] 

plot(rules.pruned, method="graph", 
     control=list(type='items',arrowSize=0.4))
高点播动漫的特征画像_第4张图片
grf3.png

剔除 评分 因素, 正片数量在(52,218] , 周边数量在 (35,2460], 类型 == 经典, 专辑总数据在 (52,2580] 都可以 成为高点播动漫 的主要特征

你可能感兴趣的:(高点播动漫的特征画像)