博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
特征工程读书笔记2(Feature Engineering for Machine Learning)
阅读量:5347 次
发布时间:2019-06-15

本文共 2006 字,大约阅读时间需要 6 分钟。

第三章(文本数据:展平、过滤和分块)

1. Bag-of-X: 将文本信息转化为向量

统计各个词出现次数,能够根据词频进行文本分类,也同样用于信息检索。

1)Bag-of-Words:

将文本转化为平面向量,词以及文本中出现次数。相当于将文本映射到一个n维空间。

但是,这种表示方式会破坏整体的意思,换言之,不能表征词与词之间的联系。

2)Bag-of-n-Grams:

是上种的扩展版(但没有解决根本问题,n表示取多少词组做统计),此方法能够表征的信息更多,但是随之引发代价也增加。

from sklearn.feature_extraction.text import CountVectorizer

bigram_converter = CountVectorizer(ngram_range=(2,2))

bigram_converter.fit(text['one'])

bigrams = bigram_converter.get_feature_names()

 2. 滤波(类似消除噪声,去掉不重要的信息):

1)Stopwords:

一般句子中的介词、冠词等意义不大,可以滤掉。Python NLP package NLTK 其中包含stopwords列表。

2)Frequency-Based Filtering:

统计各词出现频率,根据词频进行滤波,一般介词等之类出现次数比较多,但是如何选择滤除阈值还是比较重要的,需要手动选择。

其次,根据任务可能还需要过滤掉异常的单词(模糊的或拼写错误),异常词在计数时,存入garbage bin。

3)词根:

“flower” 与“flowers”属于同一词根,识别方法有基于语言规则及其他观察统计数据。Porter stemmer 是最广泛的免费的英语词干工具。

import nltk 

stemmer = nltk.stem.porter.PorterStemmer()

stemmer.stem('flowers')

u'flower'

3. 短语:

1)解析和标记化:

 当数据字符串不仅仅是纯文本需要进行解析(需要注意字符串编码,像 ASCII 、Unicode,否则标记可能会出错)。

操作:将字符串 - 字符序列 - 转换为标记序列。然后将每个标记计为一个单词,进行词频统计,标记生成器需要知道哪些字符表示标记结束或开始, 空格字符通常是好的分隔符。 

word2vec需要首先将文档解析为句子,然后进一步将每个句子标记为单词。

2)词组的搭配提取:

可以使用n-grams。

判定两个词是偶然组合的,还是出现比较频繁。 解决这个问题的统计机制称为假设检验。

似然函数L(data; H)表示在单词对依照独立或非独立模型,观察到数据集中单词出现频率。

另外一种检验方式:逐点互信息方法,这种方法对异常词会很敏感,一般不用。

3)Chunking and part-of-speech tagging(生成更长的短语):

 Chunking比找n-gram更复杂,因为它使用规则模型形成基于词性的标记序列。

Python 库, 如 NLTK, spaCy, TextBlob

import spacy

nlp = spacy.load('en')
doc_df = review_df['text'].apply(nlp)

from textblob import TextBlob

blob_df = review_df['text'].apply(TextBlob)

两种方式最后得到的结果不尽相同,规则不一样,根据自己的需求选择或制定自己专属。

第四章(特征尺度的影响:从Bag-of-Words到Tf-Idf)

1. Tf-Idf:单词包的简单转折,也属于scaling

它代表术语频率 - 逆文档频率

Tf-Idf使得稀有词汇更突出,削弱普通词汇。

tfidf_trfm = text.TfidfTransformer(norm=None)

X_tr_tfidf = tfidf_trfm.fit_transform(X_tr_bow)
X_te_tfidf = tfidf_trfm.transform(X_te_bow)

逻辑回归,当输入的特征比数据要多时,训练出的模型是不确定的,因此需要增加正则化,正则参数属于超参数,一般使用网格搜索确定。

k-fold cross validation用于评价模型关于噪声的影响。

Tf-Idf与ℓ2归一化均属于以上数据矩阵关于列操作。该矩阵会出现特征线性相关。Tf-Idf与ℓ2归一化对特征进行scaling后,加速模型收敛,ℓ2归一化相较于其他两个收敛更快,但是容易出现过拟合。

转载于:https://www.cnblogs.com/hzhenhuan/p/10222336.html

你可能感兴趣的文章
[Python学习] 简单网络爬虫抓取博客文章及思想介绍
查看>>
触发器课程SQL Server 知识梳理九 触发器的使用
查看>>
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
客户端连接linux虚拟机集群报错
查看>>
linux下部署一个JavaEE项目的简单步骤
查看>>
hash储存机制
查看>>
[Android学习系列16]Android把php输出的json加载到listview
查看>>
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
6)添加一个窗口的图标
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>
Road Map
查看>>
正则替换中的一个Bug
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>