R语言SVM模型文本挖掘分类研究手机评论数据词云可视化

简介: R语言SVM模型文本挖掘分类研究手机评论数据词云可视化

随着大数据时代的来临,数据挖掘和机器学习在诸多领域中的应用价值日益凸显。手机评论数据作为消费者对产品和服务的主观反馈,具有巨大的商业价值点击文末“阅读原文”获取完整代码数据

相关视频

image.png

image.png

本文旨在帮助客户通过R语言实现支持向量机(SVM)模型在文本挖掘分类方面的研究,并对手机评论数据进行词云可视化分析,以深入挖掘消费者意见,为企业决策提供有力支持。

支持向量机(SVM)

感知机学习算法会因采用的初值不同而得到不同的超平面。而SVM试图寻找一个最佳的超平面来划分数据,怎么算最佳呢?我们自然会想到用最中间的超平面就是最好的。如下图 :

d22cf403671499bfff3a03f5eae51b3f.png

感知机与支持向量机的区别

感知机是支持向量机的基础,由感知机误分类最小策略可以得到分离超平面(无穷多个),支持向量机利用间隔最大化求得最优分离超平面(1个)。间隔最大化就是在分类正确的前提下提高确信度。比如,A离超平面远,若预测点就是正类,就比较确信是正确的。点C离超平面近,就不那么确信正确。

同时SVM具有核函数,线性支持向量机解决线性分类问题。对于非线性分类问题,可以采用非线性支持向量机解决。具体为:

采取一个非线性变换,将非线性问题转变为线性问题。再通过线性支持向量机解决,这就是核技巧。

设T是输入空间(欧式空间或离散集合),H为特征空间(希尔伯特空间)。如果存在一个映射

5cb03d6ed8eff18d6b5ed17909a27c4f.png

使得对于所有的 ad1412168dba410a0e9d4b7db9881a2c.png

f2238df88213e00dbd396584a52dc372.png

在学习与预测中只定义核函数,而不显式地定义映射函数.

基于距离的聚类算法

层次分析(Clustering Analysis):根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内的对象互相之间是相似的(相关的),不同组中的对象是不同的(不相关的)。组内的余弦距离越小,相似性越大,组间差别越大,聚类就越好。就理解数据而言,簇是潜在的类,而聚类分析就是研究自动发现这些类的技术。

文本挖掘中的分类模型

支持向量机方法能在训练样本数很小的情况下达到很好分类推广能力的学习算法,它能做到与数据的维数无关。以线性可分的问题为例,从图<可直观地理解 算法。算法所得到的决策面为:将两类分开最大缝隙的超平面。对决策面设计起作用的点(图中圈中的点)称为支持向量 。分类线方程 可以对它进行归一化 使得对线性可分的样本集。它被成功的应用于手写数字识别和文本自动分类等很多领域。

数据预处理

用SVM实现文本分类,先要从原始空间中抽取特征,将原始空间中的样本映射为高维特征空间中的一个向量,以解决原始空间中线性不可分的问题.

文本分类(Text Categorization 或Text Classification)是在已给定的分类体系下(文本集),依据文本的内容或对文本的标识信息等,通过分类程序的学习和运算等处理方式,自动地确定文本所关联的类别。从数学角度来看,文本分类是一个映射的过程,即系统根据已经掌握的每类若干样本的数据信息,总结出分类的规律从而建立并关联判别公式和判别规则;当分类器遇到输入的未标明类属的新文本时,根据总结出的判别规则,确定该文本相关联的类别。

手机评论数据:

72dcdd337f6e6f8df380c2353ef04d1c.png

#剔除特殊词和回车等特殊符号  
res=gsub(pattern="[我|你|的|了|是]"," ",res);  
res=gsub(pattern="[1|2|3|4|5|6|7|8|9|0]"," ",res);

首先需要一个训练样本集作为输入,以便分类器能够学习模式并找到分类函数。训练集(Training set) 由一组数据库纪录或元组构成,每个记录是一个由有关字段值组成的特征向量,这些字段称做属性(Feature),用于分类的属性叫做标签(Label)。训练集中标签属性的类型必须是离散的。为降低分类器错误率,提高分类效率,标签属性的可能值越少越好。对于经典支持向量分类机来说,正负二类分类值{+1,-1}(binary classification)是最理想的分类值状态。

 从训练集中自动地构造出分类器的算法叫做训练。得到的分类器常要进行分类测试以确定其分类准确性。测试集使用的数据和训练集通常具有相同的数据格式。在实际应用中常用一个数据集的2/3作为训练集,1/3作为测试集。

特征选取

 

将文本转换成为适合分类任务后,本文对各个关键词的词频进行统计。而词频较小的特征词汇对许多任务影响相对较小。因此本文筛选出词频最高的20个特征词汇,并使用这些词频来建模,从而提高准确度。

# 降序排序  
v=rev(sort(v));   
d=data.frame(word=names(v), freq=v);

高频特征词汇词云图如下:

wordcloud(d$word,d$freq.Freq,random.order=FALSE,random.color=FALSE,colors=mycolors,family="myFont3")

fa809568ee17fc465933009763f58a64.png

得到的高频词汇频数。

fced605d4a4cc28751723ff44aa8cdb7.png


层次聚类结果

clust(dist(cldata))
plot(hc)

0105fef4eb4320ddbede351270095437.png

c8adaefbc237b65474f268894bfd4ace.png

3个聚类类别的数据词云可视化

#cluster 1 
y1=cldata[memb==1,]
#cluster 2
y2=cldata[memb==2,]

9187779eef39fe4fb55b308c8130f16a.png

ceffbfeb258f38c36fbbd402a059e367.png

ff39126258b9ebb293e405f32ba69df5.png

从词频云图可以看到,第一个类中评价的主要关键词是发货速度等,从这些关键词来看,本文可以推测这类用户主要看重的是购买体验,并且主要集中在物流。也可以推测这些用户比较关注物流 。

第二个类别中主要的关键词是物流、好评、性价比等。从这些关键词我们大致可以推测这类用户主要看重的是购物的综合评价。他们比较看重手机的物流、好评,更在乎购物给他们使用的直观体验。

第三个类别中主要的关键词是正品,满意 。从这些关键词我们可以推测这类用户主要看重手机的品质,当然这类手机一般都是高端的定制手机。因此,这类手机大多是手机玩家,发烧友。如果手机能很好满足他们的需求,他们愿意做出较好的评价。因此针对这类用户,我们可以体检性能好、功能强大的手机。

相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
4月前
|
存储 数据采集 数据处理
R语言数据变换:使用tidyr包进行高效数据整形的探索
【8月更文挑战第29天】`tidyr`包为R语言的数据整形提供了强大的工具。通过`pivot_longer()`、`pivot_wider()`、`separate()`和`unite()`等函数,我们可以轻松地将数据从一种格式转换为另一种格式,以满足不同的分析需求。掌握这些函数的使用,将大大提高我们处理和分析数据的效率。
|
3月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
4月前
|
数据采集 机器学习/深度学习 数据挖掘
R语言数据清洗:高效处理缺失值与重复数据的策略
【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
|
4月前
|
数据处理
R语言数据合并:掌握`merge`与`dplyr`中`join`的巧妙技巧
【8月更文挑战第29天】如果你已经在使用`dplyr`进行数据处理,那么推荐使用`dplyr::join`进行数据合并,因为它与`dplyr`的其他函数(如`filter()`、`select()`、`mutate()`等)无缝集成,能够提供更加流畅和一致的数据处理体验。如果你的代码中尚未使用`dplyr`,但想要尝试,那么`dplyr::join`将是一个很好的起点。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
6月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
5058 2
|
7月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
217 0
|
7月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
110 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用