Advertisement

阿里云天池龙珠计划金融风控训练营-Task2学习笔记

阅读量:

金融风控数据挖掘-Task2学习笔记

本学习笔记为阿里云天池龙珠计划金融风控训练营的学习内容,学习链接为:
(https://tianchi.aliyun.com/specials/promotion/handsonai_gut)

一、学习知识点概要

1、数据预处理

  • 函数的学习
  • 缺失值填充
  • 时间格式处理

2、异常值处理

  • 函数的学习
  • 均方差
  • 箱型图

3、数据分桶

  • k-均值聚类
  • 分箱的基本原则

4、特征编码

  • labelEncode

5、特征选择

  • Filter
  • wrapper
  • Embedded

二、学习内容

1、数据预处理

函数的学习

select_dtypes()
做数据分析时,需要对特征进行归类–类别型还是数值型,这时便使用到 select_dtypes函数

remove()
下面有一个关于如何使用remove函数的博客,先把链接放在这便于以后学习
python:remove方法的使用,remove、pop、del三者的区别

apply()
当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并将元组或者字典中的参数按照顺序传递给参数
Python中的lambda和apply用法

value_counts()
是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。

sample()
它的作用是从指定序列中随机获取指定长度的片断并随机排列,结果以列表的形式返回
表达式为 random.sample(sequence, k)

nunique与unique
unique()是以 数组形式(numpy.ndarray)返回列的所有唯一值(特征的所有唯一值)
nunique() Return number of unique elements in the object.即返回的是唯一值的个数

预处理

  • 缺失值填充
    填充的目的在上一个Task已经阐述过了,其重要性不言而喻。对于缺失值的填充 往往会影响比赛的结果,在比赛中不妨尝试多种填充然后比较结果选择结果最优 的一种;
    比赛数据相比真实场景的数据相对要“干净”一些,但是还是会有一定的“脏”数据存在,清洗一些异常值往往会获得意想不到的效果。

把所有缺失值替换为指定的值0

复制代码
    data_train = data_train.fillna(0)
    
    
    
      
      
    

向用缺失值上面的值替换缺失值

复制代码
    data_train = data_train.fillna(axis=0,method='bfill',limit=2)
    
    
      
    

纵向用缺失值下面的值替换缺失值,且设置最多只填充两个连续的缺失值

复制代码
    data_train = data_train.fillna(axis=0,method='bfill',limit=2)
    
    
      
    

时间格式处理

  • to_datetime()
    pandas库中的datatime可以进行时间转换
复制代码
    #转化成时间格式
    for data in [data_train, data_test_a]:
    data['issueDate'] = pd.to_datetime(data['issueDate'],format='%Y-%m-%d')
    startdate = datetime.datetime.strptime('2007-06-01', '%Y-%m-%d')
    #构造时间特征
    data['issueDateDT'] = data['issueDate'].apply(lambda x: x-startdate).dt.days
    
    
      
      
      
      
      
      
    

中的datetime的解释
python的时间转换datetime和pd.to_datetime

2、异常值处理

函数学习

  • groupby()
    pandas之分组groupby()的使用整理与总结

检测异常的方法一:均方差

  • 3segama原则:在统计学中,如果一个数据分布近似正态,那么大约 68% 的数据值会在均值的一个标准差范围内,大约 95% 会在两个标准差范围内,大约 99.7% 会在三个标准差范围内。

检测异常的方法二:箱型图

箱型图
是一种用作显示一组数据分散情况资料的统计图。
箱形图最大的优点就是不受异常值的影响,能够准确稳定地描绘出数据的离散分布情况,同时也利于数据的清洗。

统计学知识

内距IQR即Inter-Quartile Range, 这是统计技术上的名词.
内距又称为四分位差,是两个四分位数之差,即内距IQR=高四分位数—低四分位数.IQR

3、数据分桶

  • k-均值聚类
    K-means(K-均值)聚类算法

  • 特别要注意一下分箱的基本原则
    (1)最小分箱占比不低于5%
    (2)箱内不能全部是好客户
    (3)连续箱单调

  • 固定宽度分箱

复制代码
    # 通过除法映射到间隔均匀的分箱中,每个分箱的取值范围都是loanAmnt/1000
    data['loanAmnt_bin1'] = np.floor_divide(data['loanAmnt'], 1000)
    
    
      
      
    
复制代码
    ## 通过对数函数映射到指数宽度分箱
    data['loanAmnt_bin2'] = np.floor(np.log10(data['loanAmnt']))
    
    
      
      
    
  • 分位数分箱
复制代码
    data['loanAmnt_bin3'] = pd.qcut(data['loanAmnt'], 10, labels=False)
    
    
      
    

4、特征编码

labelEncode 直接放入树模型中
LabelEncoder 的使用

逻辑回归等模型要单独增加的特征工程
对特征做归一化,去除相关性高的特征
归一化目的是让训练过程更好更快的收敛,避免特征大吃小的问题
去除相关性是增加模型的可解释性,加快预测过程。

5、特征选择

  • 特征选择技术可以精简掉无用的特征,以降低最终模型的复杂性,它的最终目的是得到一个简约模型,在不降低预测准确率或对预测准确率影响不大的情况下提高计算速度。特征选择不是为了减少训练时间(实际上,一些技术会增加总体训练时间),而是为了减少模型评分时间。

Filter

基于特征间的关系进行筛选

  • 方差选择法
    使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征

  • 相关系数法
    皮尔森相关系数(Pearson correlation coefficient)

  • 卡方检验
    经典的卡方检验是用于检验自变量对因变量的相关性。
    假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距。 其统计量如下: χ2=∑(A−T)2T,其中A为实际值,T为理论值
    (注:卡方只能运用在正定矩阵上,否则会报错Input X must be non-negative)

  • 互信息法

Wrapper

  • 递归特征消除法 递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。
    在feature_selection库的RFE类可以用于选择特征
复制代码
    from sklearn.feature_selection import RFE
    from sklearn.linear_model import LogisticRegression
    #递归特征消除法,返回特征选择后的数据
    #参数estimator为基模型
    #参数n_features_to_select为选择的特征个数
    
    RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(train,target_train)
    
    
      
      
      
      
      
      
      
    

Embedded

  • 基于惩罚项的特征选择法 使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维。
    在feature_selection库的SelectFromModel类结合逻辑回归模型可以用于选择特征
复制代码
    from sklearn.feature_selection import SelectFromModel
    from sklearn.linear_model import LogisticRegression
    #带L1惩罚项的逻辑回归作为基模型的特征选择
    
    SelectFromModel(LogisticRegression(penalty="l1", C=0.1)).fit_transform(train,target_train)
    
    
      
      
      
      
      
    
  • 基于树模型的特征选择 树模型中GBDT也可用来作为基模型进行特征选择。
    在feature_selection库的SelectFromModel类结合GBDT模型可以用于选择特征
复制代码
    from sklearn.feature_selection import SelectFromModel
    from sklearn.ensemble import GradientBoostingClassifier
    #GBDT作为基模型的特征选择
    SelectFromModel(GradientBoostingClassifier()).fit_transform(train,target_train)
    
    
      
      
      
      
    

三、学习问题与解答

依旧还是有很多基础不懂,不过我通过在上搜索得到了很多优质的答案,部分已经看完并理解了,部分以链接的形式放在这篇学习笔记中,便于自己日后的复习巩固。

四、学习思考与总结

特征工程部分是机器学习的重要部分。作为一个小白,希望能够尽量理解这些。加油吧!

全部评论 (0)

还没有任何评论哟~