五.特征转换:
特征转换主要指将原始数据中的字段数据进行转换操作,从而得到适合进行算法模型构建的输入数据(数值型数据),在这个过程中主要包括但不限于以下几种数据的处理:
- 文本数据转换为数值型数据
- 缺省值填充
- 定性特征属性哑编码
- 定量特征属性二值化
- 特征标准化与归一化
1.分词
分词是指将文本数据转换为一个一个的单词,是NLP自然语言处理过程中的基础;因为对于文本信息来讲,我们可以认为文本中的单词可以体现文本的特征信息,所以在进行自然语言相关的机器学习的时候,第一操作就是需要将文本信息转换为单词序列,使用单词序列来表达文本的特征信息
1.1分词
通过某种技术将连续的文本分隔成更具有语言语义学上意义的词。这个过程就叫做分词。
分词的常见方法
按照文本/单词特征进行划分:对于英文文档,可以基于空格进行单词划分。
词典匹配:匹配方式可以从左到右,从右到左。对于匹配中遇到的多种分段可能性,通常会选取分隔出来词的数目最小的。
基于统计的方法:隐马尔可夫模型(HMM)、最大熵模型(ME),估计相邻汉字之间的关联性,进而实现切分。
基于深度学习:神经网络抽取特征、联合建模。
1.2Jieba分词
jieba:中文分词模块;
Python中汉字分词包:jieba
安装方式: pip install jieba
Github:https://github.com/fxsjy/jieba
1.2.1 jieba分词原理
字符串匹配:把汉字串与词典中的词条进行匹配,识别出一个词。
理解分词法:通过分词子系统、句法语义子系统、总控部分来模拟人对句子的理解。(试验阶段)
统计分词法:建立大规模语料库,通过隐马尔可夫模型或其他模型训练,进行分词(主流方法)
2.2.2 jieba分词使用
jieba分词模式:
全模式 jieba.cut(str,cut_all=True)
精确模式 jieba.cut(str)
搜索引擎模式 jieba.cut_for_search(str)
分词特征提取: 返回TF/IDF权重最大的关键词,默认返回20个。
jieba.analyse.extract_tags(str,topK=20)
自定义词典: 帮助切分一些无法识别的新词,加载词典:jieba.load_userdict(‘dict.txt’)
调整词典: add_word(word, freq=None, tag=None) 和 del_word(word)可在程序中动态修改词典。使用suggest_freq(segment, tune=True) 可调节单个词语的词频。
2.文本特征属性转换
机器学习的模型算法均要求输入的数据必须是数值型的,所以对于文本类型的特征属性,需要进行文本数据转换,也就是需要将文本数据转换为数值型数据。常用方式如下:词袋法(BOW/TF)
TF-IDF(Term frequency-inverse document frequency)
HashTF
Word2Vec(主要用于单词的相似性考量)
(资料待补充)
3. 缺省值处理
缺省值是数据中最常见的一个问题,处理缺省值有很多方式,主要包括以下四个步骤进行缺省值处理:
- 确定缺省值范围。
- 去除不需要的字段。
- 填充缺省值内容。
- 重新获取数据。
注意:最重要的是缺省值内容填充。
3.1确定缺省值范围
在进行确定缺省值范围的时候,对每个字段都计算其缺失比例,然后按照缺失比例和字段重要性分别指定不同的策略。
3.2 去除不需要的字段
在进行去除不需要的字段的时候,需要注意的是:删除操作最好不要直接操作与原始数据上,最好的是抽取部分数据进行删除字段后的模型构建,查看模型效果,如果效果不错,那么再到全量数据上进行删除字段操作。总而言之:该过程简单但是必须慎用,不过一般效果不错,删除一些丢失率高以及重要性低的数据可以降低模型的训练复杂度,同时又不会降低模型的效果。
3.3 填充缺省值方法(重要)
填充缺省值内容是一个比较重要的过程,也是我们常用的