一、初学部分
引用库总结:
numpy,pandas进行各种格式文件读取,bs4适用于去掉标签
引用sklearn.feature_extraction.text import CountVectorizer计数函数
sklearn.ensemble 中RandomForestClassifier随机森林决策树算法
sklearn.metrics 中的confusion_matrix混淆矩阵评估
对影评数据进行预处理,大概有以下环节:
1.去除html标签
2.移除标点
3.切分成词/token
4.去掉停用词
5.重组为新的句子
word2Vec实例
1.使用英文nltk语料库
2.预处理:去除html标签,将所有原文中的大小写转换为小写字母,并分割,移除停用词
此外引用一个定义:停用词:由于处理文本丢失或过滤掉的词汇称为停用词,停用词主要包括英文字符、数字、数学字符、标点符号及使用频率特高的单汉字等,有的是包含语气助词、副词,介词,连接词。这里选择将一个现成的文件导入成停用词语料库。
def load_dataset(name,nrows=None):
datasets = {
'unlabeled_train': 'D:/.../unlabeledTrainData.tsv',
'labeled_train': 'D:/.../labeledTrainData.tsv',
'test': 'D:/.../testData.tsv'
}
if name not in datasets:
raise ValueError(name)
data_file = os.path.join('..', 'data', datasets[name])
df = pd.read_csv(data_file, sep='\t', escapechar='\\', nrows=nrows)
print('NUMBER OF REVIEWS:{}'.format(len(df)))
return df
df = load_dataset('unlabeled_train')
load一个英文停用词库:eng_stopwords,将所有包含在词库里的停用词进行移除:
eng_stopwords = {}.fromkeys([line.rstrip() for line in open('D:/.../stopwords.txt')])
def clean_text(text,remove_stopwords=False):
text = BeautifulSoup(text, 'html.parser').get_text()
text = re.sub(r'[^a-zA-Z]', ' ', text)
words = text.lower().split()
if remove_stopwords:
words = [w for w in words if w not in eng_stopwords]
return words
tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
用gensim训练词向量,将词向量嵌入模型。import logging
二、开题报告进行部分,根据原理梳理了几种算法:
传统统计算法:ARIMA、holt-winters、Facebook-prophet
深度学习算法:Bagging+决策树=Randomforest
seq2seq类:RNN、LSTM、DeepAR
Attention类:Transformer、informer、TFT
传统的时间序列预测方法还是集中在统计方法上面,如:ARIMA,Holt-Winters,Facebook Prophet。而传统统计学比较偏重于单目标预测并且是只用时间与目标变量进行分析,像ARIMA方法是一种自回归算法,自回归综合移动平均,数据序列一般呈平稳趋势,均值和方差不随时间变化。通过对数变换或差分可以使序列平稳。数据复杂程度较低,并呈现一段时间内呈单调趋势的状态,预测难度较低,一旦出现异常值及缺失值时则不能达到较好的预测精度;Holt-Winters是一种指数平滑方法,包括一个预测方程三个平滑方程:一个用于水平,一个用于趋势,一个用于季节性分量,以累加累乘的方式叠加分量组成预测。Holt-Winters,适合季节性问题,可以使用三次指数平滑方程,具有趋势性和季节性,所有的指数平滑法都要更新上一时间步长的计算结果。
BPNN神经网络模型机器学习方法[4]和随机森林算法[5]。随机森林算法一般旨在处理一些监督问题上,监督问题即需要将所有数据进行标记,数据处理上复杂性较大,需要将时间序列的数据转化为监督学习数据集。此方法使用了交叉验证的方法进行算法性能验证,随机森林作为一个bagging算法,属于一种集成算法,将多个决策树弱学习器进行一个集成以提高其精确率,准确来说在分类问题上比回归问题上应用的更好。特征工程中使用随机森林可以利用决策器进行特征分类,将相关性进行分析,将相关性高的特征筛选出来进行目标预测。
Seq2Seq类算法如RNN、DEEPAR、LSTM,DEEPAR是一种自回归循环神经网络,结合递归神经网络(RNN)与自回归AR预测标量。此算法的明显缺点是对于长时时间序列效果并不佳,没有传统算法的季节性周期性。DEEPAR的优势性在于可以根据神经网络进行多重时间预测,预测的结果是以预测概率实现的,并不是确定的预测值。这种结果的呈现提高了准确性,采用分布损失进行计算损失函数,灵活调节损失函数的预测分位,根据数据的形态进行损失函数的调整。由于环境问题不是一时间到达峰值,是一个态势,当出现态势后缓慢到达峰值,故环境问题中的化学物质排放更接近于正态分布,在DEEPAR中使用正态分布的loss函数。此外此算法也可以使用自带的特征工程,根据时间步长的设置去选定特征,也可以用特征工程选定合适的lag项