python 回归去掉共线性_逻辑回归在目标用户挖掘方面的应用

编辑导读:企业为了更精准地定位用户,通常会开展自己的用户洞察项目。既包括分析现有用户特征,也包括寻找符合目标特征的用户。更进一步,想要针对用户进行精细化运营,则可以用逻辑回归算法。本文对此进行了五个方面的分析,希望对你有帮助。

S3ZH2VmEZvtieL

随着用户数据的丰富,越来越多的公司开始开展自己的用户洞察项目。所谓用户洞察,其输出主要是两种,其一是现有用户的画像:通俗的讲就是通过现有用户群去分析自己的目标用户特征;其二是目标用户的挖掘:以用户画像为标准,去寻找符合目标特征的用户。

而这里的目标落实到业务层面,其实可以是正面的也可以是负面的。正面的如注册目标、活跃目标、下单目标、复购目标等,毫无疑问,找到这些意向的用户,能帮助我们提升业绩;而负面的流失目标、沉睡目标、投诉目标,也自有其价值,我们预先知道可能产生这类行为的用户,就能未雨绸缪提前做好应对措施。

但是如果仅仅知道用户是否是我们的目标用户还不够,我们还需要知道其意向度。比如同样是下单目标用户:60%的下单可能和90%的下单可能,对我们的价值肯定是不一样的。从精细化运营考虑,这两个用户有必要采用不同的运营策略。

而要想在给用户进行分类的同时,又想知道他属于某个类的置信度,那逻辑回归算法能较好的满足我们的需求。

逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。

这次我们以挖掘某出行类产品的用户下单意向为需求,来介绍逻辑回归算法的实际应用。

一、需求背景

基于现有用户的下单情况,来预测新用户的下单的可能性。

二、特征圈定

首先我们要根据经验圈定出可能对用户下单产生影响的特征。

我们可以将相关特征分为通用特征和业务特征。通用特征即无论分析何种场景都可以参考的特征,业务特征指仅适用于具体分析场景的特征。

因为此次分析的场景是:分析用户租赁汽车类出行工具的可能性,其相关特征可以从如下几方面考虑。

通用特征:

业务特征:

对于汽车租赁类产品,用户租赁的目的一是日常上下班代步,二是节假日出行。

那么基于上下班代步需求,他的业务特征可以是:

而节假日出行,可提炼的特征:

除此之外,还有一种特征我们也需要考虑:APP用户行为。

三、特征数据获得

“巧妇难为无米之炊”,要想做数据挖掘前提必然是有足够的数据源,而数据的获得可以分为自有和外采两类。

对于大部分的通用特征,我们往往通过注册、身份认证等渠道可以让用户主动给提供。而经济水平特征的获得可以通过短信分析,若用户未授权的短信权限的话,也可以通过所居住小区的平均房价预估用户经济水平。用户小区通过夜间GPS定位判断,房价则可以通过爬虫获得。

业务特征中的APP用户行为,可以通过APP埋点获得,用户的访问路径:注册-登录-首页-车辆列表页-车辆详情页-预订页-支付页等等。而通勤距离时间、节假日出行这些数据,可以通过向第三方采购。移动联通这种通讯公司往往可以通过信号基站获得用户的这类数据。

四、建立基模

我们圈定了凭经验推测的特征数据后,就可以进行建模了。上述的特征虽说是我们全凭经验所得,并不一定都会影响用户下单。即使有所关联,其相关程度也会分个三六九等,而且可能特征与特征之间也会有一定的相关性,所有这些问题,我们后续都需要进行相应处理。

但是这些并不影响,我们先用所有特征构建一个基础模型,得到最原始的拟合情况,作为我们后续不断调整的一个参照组。

五、特征工程

1. 数据标准化

很多算法对特征的数量级都是敏感的,逻辑回归也不例外。因此,我们最好将数据集中的特征转换成相同的量纲,从而消除不同量纲对算法造成的负面影响,我们将这个过程称为数据标准化。

实际上,即使原本数据的量纲已经是一样的了,多一步标准化也不会产生负面影响。

在scikit-learn中,常用的标准化方式为:

  • 均值标准差标准化(StandardScaler)
  • 最小最大值标准化(MinMaxScaler)

2. 去除多重共线性

在多元线性回归中,自变量与应变量应该要存在线性关系,但是如果自变量之间存在线性关系,那么这种情况我们就称之为多重共线性。多重共线性会造成权重的不稳定性,甚至会出现拟合后的权重与相关系数呈现相反的结果。

不过多重共线性并不会影响拟合优度,如果我们仅追求模型的拟合优度,而不考虑权重系数的大小,则可以不处理多重共线性。

我们一般使用方差膨胀系数(VIF)来检测多元线性回归中的多重共线性。如果变量之间存在多重共线性,则得到的VIF值就会较高,当VIF值大于10时,就意味着存在严重的多重共线性。

VIF的计算我们可以直接调用python的statsmodels.stats.outliers_influence 包里的variance_inflationfactor方法。

3. RFECV特征选择法

在建立模型时,特征并非越多越好,有些特征可能对模型质量没有什么改善,我们可以直接删除这类特征,所以特征选择是建模非常重要的一个环节。

特征选择的方法很多,这次我们介绍RFECV方法。

RFECV分成两个部分:

  1. RFE:递归特征消除,用来对特征进行重要性评级
  2. CV:交叉验证,在特征评级后,通过交叉验证,获得最佳数量的特征

其具体过程如下:

RFE阶段:

  1. 初始的特征集(若之前操作有进行特征删除,则最新的特征为初始特征集)作为所有可用的特征
  2. 使用当前特征进行建模,然后计算每个特征的重要性
  3. 删除最不重要的一个(或多个特征),更新特征集
  4. 跳转到步骤2,直到完成所有的特征重要性评级

CV阶段:

  1. 根据RFE阶段确定的特征重要性,依次选择不同数量的特征
  2. 对选定的特征进行交叉验证
  3. 确定平均分最高的特征数量,完成特征选择

在上述多步清洗操作过程中,我们可以每完成一个环节,看一下新模型的拟合优度。有时候处理的步骤并非越多,拟合优度就越好。我们可以根据实际需要,选择合适拟合优度的模型,对那些未下单用户进行预估,得到其最终下单的可能性。

#专栏作家#

唐豪杰,人人都是产品经理专栏作家,微信公众号:弈呓(ID:YiYi_TANG7980),互联网运营从业

本文由 @唐豪杰 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的逻辑回归分类的 Python 实例。 首先,我们需要导入必要的库和数据集。在这个例子中,我们使用了 scikit-learn 库中的鸢尾花数据集。 ```python from sklearn import datasets import numpy as np # 导入鸢尾花数据集 iris = datasets.load_iris() # 只使用前两个特征:花萼长度和花萼宽度 X = iris.data[:, :2] y = (iris.target != 0) * 1 ``` 接下来,我们将数据集拆分为训练集和测试集。 ```python # 将数据集拆分为训练集和测试集 train_X, train_y = X[:80], y[:80] test_X, test_y = X[80:], y[80:] ``` 然后,我们可以使用 scikit-learn 库中的 LogisticRegression 类来建立逻辑回归模型。 ```python from sklearn.linear_model import LogisticRegression # 创建一个逻辑回归模型 clf = LogisticRegression() # 在训练集上拟合模型 clf.fit(train_X, train_y) ``` 接着,我们可以使用训练好的模型来进行预测。 ```python # 在测试集上进行预测 pred_y = clf.predict(test_X) ``` 最后,我们可以使用 scikit-learn 库中的 metrics 模块来评估模型的性能。 ```python from sklearn import metrics # 计算模型的准确率、精度和召回率 print("Accuracy:", metrics.accuracy_score(test_y, pred_y)) print("Precision:", metrics.precision_score(test_y, pred_y)) print("Recall:", metrics.recall_score(test_y, pred_y)) ``` 完整代码如下: ```python from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn import metrics import numpy as np # 导入鸢尾花数据集 iris = datasets.load_iris() # 只使用前两个特征:花萼长度和花萼宽度 X = iris.data[:, :2] y = (iris.target != 0) * 1 # 将数据集拆分为训练集和测试集 train_X, train_y = X[:80], y[:80] test_X, test_y = X[80:], y[80:] # 创建一个逻辑回归模型 clf = LogisticRegression() # 在训练集上拟合模型 clf.fit(train_X, train_y) # 在测试集上进行预测 pred_y = clf.predict(test_X) # 计算模型的准确率、精度和召回率 print("Accuracy:", metrics.accuracy_score(test_y, pred_y)) print("Precision:", metrics.precision_score(test_y, pred_y)) print("Recall:", metrics.recall_score(test_y, pred_y)) ``` 这就是一个简单的逻辑回归分类的 Python 实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值