
教程总体简介:Excel的使用、全渠道业务概述、1. Excel的使用(预计4小时)、2. 全渠道业务分析(预计4小时)、3. 会员运营分析(预计2小时)、价格>50的比较少、groupby的操作,不同类别app的价格分布、第01章 Pandas基础、不支持列表和整数间的运算、选取imdb_score这列、每列值加1、每列值乘以2.5、每列值除以7的余数、判断是否大于7、判断是否等于字符串、利用通用函数实现加法、利用通用函数实现乘法、利用通用函数实现底除、利用通用函数实现大于、利用通用函数实现等于、利用通用函数实现取模、第02章 DataFrame基本操作、设定skipna=False、没有缺失值的数值列才会计算结果、第03章 数据分析入门、查看数据类型、用memory_usage方法查看每列的内存消耗、RELAFFIL这列只包含0或1、因此没必要用64位、使用astype方法将其变为8位(1字节)整数、再次查看数据类型、检查两个对象列的独立值的个数、STABBR列可以转变为“类型”(Categorical)、独立值的个数小于总数的1%、再次检查内存的使用、第04章 选取数据子集、第05章 布尔索引、读取movie数据集、创建布尔条件、第06章 分组聚合、过滤、转换、如果将列限制到SATMTMID、会报错、这是因为不能访问UGDS、求每两个城市间的航班总数、选出休斯顿(IAH)和亚特兰大(ATL)之间双方向的航班总数、分别对每行按照出发地和目的地、按字母排序、因为现在每行都是独立排序的、列名存在问题、对列重命名、然后再计算所有城市间的航班数、找到亚特兰大和休斯顿之间的航班数、如果调换顺序、则会出错、用NumPy的sort函数可以大大提高速度、重新用DataFrame构造器创建一个DataFrame、检测其是否与flights_sorted相等、比较速度、第07章 数据清理、读取texa

全套教程部分目录:


- 风控业务
- 数据采集
- 自己获取
- 从运营商获取
- 从大数据公司获取
- 人民银行征信报告
- 从手机里爬数据
- 反欺诈
- 大部分的公司都使用的是反欺诈规则
- 风控模型
- A 申请评分卡
- B 行为评分卡
- C 催收评分卡
- 催收
- 数据采集
特征工程
-
特征衍生和特征选择是工作中比较耗时的部分
-
特征选择
- 移除低方差特征 (如果特征方差比较小,说明这个特征维度上,每个样本区分度不高)
- from sklearn.feature_selection import VarianceThreshold
- 传入方差的阈值,低于这个阈值的特征会被移除掉
- 根据特征的相关性,选择和目标值相关性比较强的特征
- 目标是连续值 皮尔逊
- 目标是离散 chi卡方检验
-
递归特征消除 RFE
-
原理,用算法模型反复迭代,利用训练的数据去预测,选择可以返回特征权重的算法(随机森林,逻辑回归)
-
反复迭代 每一次去除一个特征,去除一个用剩下的特征再次训练
-
可以用一个模型来进行特征选择,用另一个模型来做最终过的预测
from sklearn.feature_selection import RFE from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris #建立一个决策树模型 rf = RandomForestClassifier() #加载鸢尾花的数据 iris=load_iris() X,y=iris.data,iris.target #创建RFE 递归消除特征 对象 传入要进行RFE使用到的模型, n_features_to_select 最终要剩下几个特征 rfe = RFE(estimator=rf, n_features_to_select=2) X_rfe = rfe.fit_transform(X,y) X_rfe.shape
-
-
Embeded
- 利用l1正则做特征选择
- xgboost lightgbm 可以输出feature_importance
from sklearn.feature_selection import SelectFromModel from sklearn.svm import LinearSVC # penalty = 'l1' 利用l1正则训练模型 lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X,y) #把模型 交给SelectFromModel 把l1之后系数为0的特征去掉 model = SelectFromModel(lsvc, prefit=True) X_embed = model.transform(X) X_embed.shape -
一 定义问题
- 基本统计分析
- 工具选择
- 建模分析(选择算法)
- 监督/无监督
- 监督
- 分类
- 回归
- 基本统计分析
-
算法确定下来之后
- 数据预处理
- 特征衍生
- 特征选择
-
风控建模的时候需要注意
- 信用评分分段之后,正常的效果,评分和预期的概率应该是单调的
- 按照评分进行分组
- 评分越高的组,坏人的概率应该更低
- 如果评分和预计的概率不是单调的,模型时有问题的
- 模型人群分布的稳定性
- 在业务没有变化的前提下,间隔一段时间,在同一分段的人群总数占全体用户的比例,应该不会有大的波动
- 信用评分分段之后,正常的效果,评分和预期的概率应该是单调的
-
跨时间验证
- 上线之前 需要用最近时间的数据对模型进行评估
- 训练模型的时候 最近两个月~6个月的数据 是不会用来训练模型
-
正常的信贷业务 坏账率 合理比例 低于5%
-
B卡 贷后管理 用户注册数据 从三方购买的,如果半年之内 没有新的操作
- 从不同渠道买来的评分数据 有效期半年
- 用户第一次来的时候 个人用户的数据不全,需要从其它合作方购买 同盾
特征衍生
- 利用数值量的统计值做特征衍生
- 如果一个用户(id)在数据集中有多条记录,可以根据这个id做分组,获取当前id对应的所有记录,对这些记录求
- 平均值
- 标准差(方差)
- 求和
- 求最大/最小
- 极差
- 计算条目数量
- 如果一个用户(id)在数据集中有多条记录,可以根据这个id做分组,获取当前id对应的所有记录,对这些记录求
数据处理-》特征衍生-》特征选择
-
模型融合思路
- 训练两个模型
- MSE 在误差比较大的情况下 损失比MAE的惩罚更严重
- 误差平方求平均
- MAE
- 误差绝对值求平均
- 误差比较大的时候 更多的用MSE的结果放到最终的模型中
- 误差比较小的时候 用MAE
- MSE 在误差比较大的情况下 损失比MAE的惩罚更严重
- 训练两个模型
-
特征衍生
-
如果是多个分类特征 类别的值都是0,1 通过相乘做特征交叉
-
特征相除 需要注意避免除0的异常 分母+1
-
df_data['话费稳定'] = df_data['用户账单当月总费用(元)'] / (df_data['用户当月账户余额(元)'] + 1) df_data['相比稳定'] = df_data['用户账单当月总费用(元)'] / (df_data['用户近6个月平均消费值(元)'] + 1) df_data['缴费稳定'] = df_data['缴费用户最近一次缴费金额(元)'] / (df_data['用户近6个月平均消费值(元)'] + 1)
-
-
目标
-
风控业务
- 数据采集
- 买合作方的数据
- 芝麻分 需要用户授权
- 同盾 同盾分
- 人行征信数据
- 自己应用内部数据
- 买合作方的数据
- 反欺诈
- 用规则
- 规则引擎
- 评分卡模型 逻辑回归
- A 贷前
- B 贷中
- C 催收
- 催收
- 数据采集
-
特征工程
- 特征衍生
- 如果一个用户(id)在数据集中有多条记录,可以根据这个id做分组,获取当前id对应的所有记录,对这些记录求
- 平均值
- 标准差(方差)
- 求和
- 求最大/最小
- 极差
- 计算条目数量
- 如果一个用户(id)在数据集中有多条记录,可以根据这个id做分组,获取当前id对应的所有记录,对这些记录求
- 特征选择
- 相关性 卡方检验 筛选特征
- wrapper RFE 递归特征消除
- 一次去掉一个
- embeded 带到模型里 利用模型的特点做特征选择
- LR l1
- xgboost/lightGBM 训练出模型之后 可以输出feature_importance
- 验证模型效果的时候
- 跨时间验证 最近几个月的数据 作为跨时间验证集
- 模型稳定性 根据坏人比例 给用户分若干群, 隔了一段时间 比例应该没有太大变化
- 信用分和坏人概率 要有严格单调性 分数越高的组,坏人的概率越低
- 特征衍生
-
移动人群画像赛
-
特征工程
-
离群点处理
- 将大于99.9%分位数的数据直接赋值对应99.9%分位数的值
- 将小于0.1%分位数的数据直接赋值0.1%分位数对应的值
-
数据分布处理
- log变换 改变数据分布情况
-
特征衍生思路
# 特征交叉 两个维度交叉 这里用的是乘法 都是 0,1这样的分类值 df_data['是否_商场_电影']=df_data['是否去过高档商场']*df_data['当月是否看电影'] df_data['是否_商场_旅游']=df_data['是否去过高档商场']*df_data['当月是否
-
-