前言
本项目旨在巩固机器学习算法,测试不同机器学习对文本分类的效果
由于暑假前不会更新(认真备战期末考试),本文先占坑,以后再补。
目的
根据已有数据,判断一条评论的星级。
数据的获得与处理
下载亚马逊评论数据集,获得 json 文件。
将文件拆成 $25$ 个,每个包含 $10^5$ 条评论的小文件
对每个文件提取单词,转小写,统计出常用单词 $1729$ 个(出现次数超过千分之一),转为编号形式。
平均每条评论出现单词数不多(远小于 $1792$ 个),算法可以对此进行优化。
中小规模数据效果
训练集 $10^5$ 个,测试集 $10^5$ 个。
感知机
正确率 $70\%$ 左右。
作为最简单的神经网络,这个正确率已经很可观了。
由于感知机只能解决线性可分问题,会造成欠拟合,训练集准确率也不超过 $73\%$ 。
朴素贝叶斯
正确率 $62\%$ 左右。
可能由于属性之间并非独立。
决策树
先分出70000训练集,30000验证集
采用基尼系数作为属性选择标准
用验证集实现预剪枝,并在数据大小小于10时,停止分类。
算法 | 正确率 |
---|---|
感知机 | 70% |
朴素贝叶斯 | 62% |
决策树 |