欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2020-1-3学习笔记

程序员文章站 2022-04-10 23:25:55
...

特征工程

  • 有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。通过总结和归纳,人们认为特征工程包括以下方面:
    2020-1-3学习笔记

金融领域的几大模型:

2020-1-3学习笔记

客户流失模型

银行客户流失是指银行的客户终止在该行的所有业务,并销号。但在实际运营中,对于具体业务部门,银行客户流失可以定位为特定的业务终止行为。

商业银行的客户流失较为严重,流失率可达20%。而获得新客的成本是维护老客户的5倍。因此,从海量客户交易数据中挖掘出对流失有影响的信息,建立高效的客户流失预警体系尤为重要。

客户流失的主要原因有:价格流失、产品流失、服务流失、市场流失、促销流失、技术流失、政治流失。有些时候表面上是价格导致的客户流失,但实际上多重因素共同作用导致了客户的流失。比如说,不现实的利润目标、价格结构的不合理、业务流程过于复杂、组织结构的不合理等等。

维护客户关系的基本方法:追踪制度,产品跟进,扩大销售,维护访问,机制维护。

因此建立量化模型,合理预测客群的流失风险是很有必要的。比如:常用的风险因子,客户持有的产品数量、种类,客户的年龄、性别,地理区域的影响,产品类别的影响,交易的时间间隔,促销的手段等等。根据这些因素及客户流失的历史数据对现有客户进行流失预测,针对不同的客群提供不同的维护手段,从而降低客户的流失率。
————————————————
版权声明:本文为CSDN博主「北白白」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41761857/article/details/82026170

收入预测模型

催收模型

反欺诈模型

(参考微调的知乎回答)
- 单纯依靠机器学习模型来检测欺诈是愚蠢的。至少在现阶段我们不能单纯依靠纯粹的数据模型来做这一点。比较折中且可行的方法是做 混合模型(hybrid model),也就是把人为规则和机器学习模型合二为一,一起来使用
- 反欺诈模型难度很高,而且需要和领域专家一起协作才能有最好的结果。机器学习从业者千万不要闭门造车,试图自己靠调参就搞个大新闻。
- 我个人推荐的步骤是:
1. 对数据进行必要的可视化,如MDS
2. 同时考虑时间是否是重要因素,如果是那么进行时序分析
3. 用无监督学习得到一些可能的异常点,如Isolation Forests
4. 通过统计学方法分析得到的异常点是否有显著的不同,有特征可供我们研究
5. 归纳特征并构造一个故事,与领域专家共同验证故事的可靠性
6. 重复1-5直到被派到下一个项目上搬砖,争取找到尽量多有效的欺诈
7. 构造[规则+机器学习]的混合模型,进一步调参优化模型

客户信用评分卡

AUC的计算

2020-1-3学习笔记
M为正样本数,N为负样本数,rank为所有样本按对应概率值从小到大排序后的位置。

    def calAUC(self,labels,prob):
        f = list(zip(prob, labels))
        rank = [values2 for values1, values2 in sorted(f, key=lambda x: x[0])]
        rankList = [i + 1 for i in range(len(rank)) if rank[i] == 1]
        posNum = 0
        negNum = 0
        for i in range(len(labels)):
            if (labels[i] == 1):
                posNum += 1
            else:
                negNum += 1
        auc = (sum(rankList) - (posNum * (posNum + 1)) / 2) / (posNum * negNum)
        return auc

多维尺度变换(MDS)

  • 多维尺度变换(MDS)可以将高维的数据在二维或者三维的框架里面进行可视化,类似的数据点会更加接近。通过观察数据点的分布,我们可以直观的猜测数据是否有规律,是否存在潜在异常点。
  • 区分噪音(noise)和异常点(anomaly)

做一个项目要多做数据可视化

交叉验证(cross validation)

  • 为什么需要cv?
    在训练集(train set)上训练得到的模型表现良好,但在测试集(test set)的预测结果不尽如人意,这就说明模型可能出现了过拟合(overfitting),bias低而variance高,在未知数据上的泛化能力差。
    一个改进方案是,在训练集的基础上进一步划分出新的训练集和验证集(validate set),在新训练集训练模型,在验证集测试模型,不断调整初始模型(超参数等),使得训练得到的模型在验证集上的表现最好,最后放到测试集上得到这个最优模型的评估结果。
    这个方案的问题在于模型的表现依赖于验证集的划分,可能使某些特殊样本被划入验证集,导致模型的表现出现异常(偏好或偏差)。而且训练集划了一部分给验证集后,训练模型能得到的数据就变少了,也会影响训练效果。因为通常来说,训练数据越多,越能反映出数据的真实分布,模型训练的效果就越好,越可能得到无偏估计。
    交叉验证思想应运而生,交叉验证可以充分使用所有的训练数据用于评估模型。

  • Cross Validation是一种评估模型性能的重要方法,主要用于在多个模型中(不同种类模型或同一种类不同超参数组合)挑选出在当前问题场景下表现最优的模型(model selection)。
    最常用的k折,K-fold交叉验证法
    k折交叉验证是最基本的cv方法,具体方法为,将训练集随机等分为k份,取其中一份为验证集评估模型,其余k-1份为训练集训练模型,重复该步骤k次,每次都取一份不同的子集为验证集,最终得到k个不同的模型(不是对一个模型迭代k次)和k个评分,综合这k个模型的表现(平均得分或其他)评估模型在当前问题中的优劣。

相关标签: 学习日记