标签:好的 大小 通过 导数 unknown 金融数据分析 全局 enc 创建
1.布雷格曼散度:是一种类似距离度量的方式,用于衡量两者之间差异的大小。Bregman
散度是损失或者失真函数。考虑如下情况:设点是点的失真或者近似的点,也就是说可能是由添加了一些噪声形成的,损失函数的目的是度量用近似近似导致的失真或者损失,因而Bregman散度可以用作相异性函数。
2.挖掘方向:
3.日志信息挖掘的基本过程:
(一)关联分析
(二)分类和预测
(三)聚类分析
(四)序列模式(演变算法):找出页面依照时间顺序出现的内在模式、趋势分析、访问模式分析
(五)统计学分析
4.基本实现过程:
目的:挖掘容易,结果有效
欺骗检测:利用对罕见事件进行孤立点分析而得到的结果
聚类分析、孤立点分析:
5.数据获取:
(request.get(resqponse.url).content.decode(“gbk”,“ignore”)
Response = urllib.request.urlopen(url)
Html = response.read()
Encode = chardet.detect(html)[“encoding”]
If encode = “GB2312”
Encode = “GBK”
提取html (固定标签)
Soup= Beautifulsoup(html,’html.parser’)
Re.search(r’’)
数据清洗:
6.处理空缺值:比较有效的有4、5、6
7.处理噪声数据:简单统计量分析(最大,小值),3&原则(若数据服从正态分布,异常数据就是超过3倍标准差的值),箱型图分析(以四分位数和四分卫距为基础具有一定的鲁棒性,多达25%的数据可以变得任意远而不会很大的扰动四分位数,所以异常值不能对这个标准施加影响)一致性分析:数据集成的过程中,可能来自不同的数据源
数据集成:处理数据冗余
8.数据变换:
9.数据归约:减省挖掘时间,提高效率
10.离散化:
数据存储:json 、CSV文件、mysql(直观)、Redis(取出的是二进制,需要转化为字符串再操作)、MongDB(优点:不在乎数据结构,注意取出来的时候写个脚本整理一下)
可视化:R、PowerBI、Python(plotly)、词云生成器
11.数据挖掘系统:KDD,BI(用数据挖掘原语指导数据挖掘系统(挖掘目标等))
(一).特征选择
1.过滤法,通过信息按照特征的发散性或者相关性指标对各个特征进行评分,设定评分阈值或者待选择阈值的个数,选择合适特征(
方差筛选(sklearn中的VarianceThreshold类)
相关系数(主要用于输出连续值的监督学习算法中。我们分别计算所有训练集中各个特征与输出值之间的相关系数,设定一个阈值,选择相关系数较大的部分特征。))
假设检验(卡方检验(检验某个特征分布和输出值分布之间的相关性,临界概率可以合理又科学的筛选异常用户)
F检验和t检验(F检验的函数f_classif和f_regression,分别在分类和回归特征选择时使用))sklearn使用chi2这个类
互信息,即从信息熵的角度分析各个特征和输出值之间的关系评分(sklearn中,可以使用mutual_info_classif(分类)和mutual_info_regression(回归)来计算各个输入特征和输出值之间的互信息)
***优先使用卡方检验和互信息来做特征选择***
2.包装法,根据目标函数,通常是预测效果评分,每次选择部分特征,或者排除部分特征
递归消除特征法(SVM-RFE算法)使用一个机器学习模型来进行多轮训练,每轮训练后,消除若干权值系数的对应的特征,再基于新的特征集进行下一轮训练。在sklearn中,可以使用RFE函数来选择特征。
3.嵌入法,使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据权值系数从大到小来选择特征。类似于过滤法,但是它是通过机器学习训练来确定特征的优劣,而不是直接从特征的一些统计学指标来确定特征的优劣
嵌入法也是用机器学习的方法来选择特征,但是它和RFE的区别是它不是通过不停的筛掉特征来进行训练,而是使用的都是特征全集。在sklearn中,使用SelectFromModel函数来选择特征
递归消除特征法。用的L1正则化和L2正则化来选择特征的基学习器是逻辑回归。(决策树或者GBDT)
4.寻找高级特征(聚类的时候高级特征尽量少一点,分类回归的时候高级特征适度的多一点。)
(二).特征表达
1.缺失值处理(sklearn中,可以使用preprocessing.Imputer来选择这三种不同的处理逻辑做预处理)
连续值:选择所有有该特征值的样本,然后取平均值,来填充缺失值,另一种是取中位数来填充缺失值
离散值:一般会选择所有有该特征值的样本中最频繁出现的类别值,来填充缺失值
2.特殊的特征处理
时间原始特征:
第一种是使用连续的时间差值法,即计算出所有样本的时间到某一个未来时间之间的数值差距,这样这个差距是UTC的时间差,从而将时间特征转化为连续值。
第二种方法是根据时间所在的年,月,日,星期几,小时数,将一个时间特征转化为若干个离散特征,这种方法在分析具有明显时间趋势的问题比较好用。
第三种是权重法,即根据时间的新旧得到一个权重值。比如对于商品,三个月前购买的设置一个较低的权重,最近三天购买的设置一个中等的权重,在三个月内但是三天前的设置一个较大的权重。
地理特征:
如果是处理成离散值,则需要转化为多个离散特征,比如城市名特征,区县特征,街道特征等。但是如果我们需要判断用户分布区域,则一般处理成连续值会比较好,这时可以将地址处理成经度和纬度的连续特征。
3.离散特征的连续化处理
有很多机器学习算法只能处理连续值特征,不能处理离散值特征,比如线性回归,逻辑回归等.这时将离散特征连续化处理
方法:
1.独热编码one-hot encoding sklearn的OneHotEncoder可实现(比如某特征的取值是高,中和低,那么我们就可以创建三个取值为0或者1的特征,将高编码为1,0,0这样三个特征,中编码为0,1,0这样三个特征,低编码为0,0,1这样三个特征)
2.特征嵌入embedding:可以用tf.nn.embedding_lookup找到该用户的特征嵌入向量。特征嵌入矩阵会在反向传播的迭代中优化。
在自然语言处理中,我们也可以用word2vec将词转化为词向量
4. 离散特征的离散化处理:sklearn的LabelEncoder将其转化为0,1,2,...这样的类别标签值。
独热编码one-hot(推荐)
虚拟编码dummy coding
5. 连续特征的离散化处理:特征变得高维稀疏
LR+GBDT的经典模型中,就是使用GDBT来先将连续值转化为离散值
(三).特征预处理
1. 特征的标准化和归一化
特征的标准化和归一化
max-min标准化:
L1/L2范数标准化:在sklearn中,我们可以用Normalizer来做L1/L2范数标准化
虽然大部分机器学习模型都需要做标准化和归一化,也有不少模型可以不做做标准化和归一化,主要是基于概率分布的模型,比如决策树大家族的CART,随机森林等。当然此时使用标准化也是可以的,大多数情况下对模型的泛化能力也有改进。
2. 异常特征样本清洗
聚类
异常点检测方法,主要是使用iForest或者one class SVM
3. 处理不平衡数据
权重法:对训练集里的每个类别加一个权重class weight。如果该类别的样本数多,那么它的权重就低,反之则权重就高。如果更细致点,我们还可以对每个样本加权重sample weight,思路和类别权重也是一样,即样本数多的类别样本权重低,反之样本权重高。sklearn中,绝大多数分类算法都有class weight和 sample weight可以使用。
采样法:对类别样本数多的样本做子采样,对类别样本数少的样本做过采样
上述两种常用的采样法很简单,但是都有个问题,就是采样后改变了训练集的分布,可能导致泛化能力差。所以有的算法就通过其他方法来避免这个问题,比如SMOTE算法通过人工合成的方法来生成少类别的样本。
得到不改变训练集分布的新样本,让训练集中各个类别的样本数趋于平衡。我们可以用imbalance-learn这个Python库中的SMOTEENN类来做SMOTE采样。
标签:好的 大小 通过 导数 unknown 金融数据分析 全局 enc 创建
原文地址:https://www.cnblogs.com/lgx-fighting/p/9372790.html