暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase UP —— 朴素贝叶斯(Native Bayes)

三金先生 2023-04-21
854

朴素贝叶斯(Native Bayes)


朴素贝叶斯(Native Bayes),是一类简单概率分类器,它基于把贝叶斯定理运用在特征之间 关系的强独立性假设上。

朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真 的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各 个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。选择条件概率最大的类别,这 就是朴素贝叶斯的思想基础。

现代大规模数据分类在单机计算机上训练和测试时间过长,对此在 hadoop 分布式平台下设计 并实现了基于朴素贝叶斯的数据分类算法。有实验结果表明,改进的算法能有效提高分类的正确 率,所设计的并行朴素贝叶斯数据分类算法具有较高的执行效率,适用于海量数据的处理与分析。 比如,使用 TF-IDF 算法与朴素贝叶斯算法相结合,实现图书的自动分类:首先需从互联网中获 取图书信息,主要包括图书基本信息、图书简介、图书目录等;其次,需要对爬取到的图书信息 进行预处理,将同类图书的基本信息聚在一起,并进行分词去噪;然后使用 TF-IDF 算法对每一 类图书进行特征提取,获得每一类图书的特征;最后使用朴素贝叶斯算法,并利用训练好的分类特征,计算某本新书的具体分类。再如贝叶斯算法在垃圾邮件过滤中的广泛应用:有实验表明在 给出了不同方法下中、英文垃圾邮件过滤实验数据对比中,朴素贝叶斯方法显著提高了垃圾邮件 的过滤性能。

2.2.4.1 算法介绍

朴素贝叶斯分类的正式定义如下: 

 1、设为一个待分类项,而每个 a 为 x 的一个特征属性。

2、有类别集合 

3、计算

4、如果 ,则 。

那么现在的关键就是如何计算第 3 步中的各个条件概率。我们可以这么做:

1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。

2、统计得到在各类别下各个特征属性的条件概率估计。即:

3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:


因为分母对于所有类别为常数,因为我们只要将分子最大化即可。又因为各特征属性是条件 独立的,所以有:

可以看到,整个朴素贝叶斯分类分为三个阶段:

第一阶段,准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是 根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进 行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。 这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响, 分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

第二阶段,分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在 训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入 是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程 序自动计算完成。

第三阶段,应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段由程序完成。

2 演示用例

Gbase UP 利用朴素贝叶斯算法进行文本分类。而在使用朴素贝叶斯之前,采用了 TF-IDF 算 法对文本进行了预处理。文本分类属于多分类问题。不同类别的文章,分别贴上不同标签,进行 模型训练。将训练好的模型应用于未分类的文章,从而实现文本的自动分类。数据格式如下所示:

7,大学生 参加工作 白领 更换 工作 环境 都会 同事 打交道 能与 同事 相处 愉快 几位 专家 指点 一 二 社会 沟通 能力 立足 技术 专家 演讲 能力 沟通 能力 技术 没用 职业 发展 不可避免 受到限制

首席 职业顾问 卞秉彬 大学 … 5,中新社 澳门 四月 十七日 记者 澳门 航空 十七日 台湾 贵州 乘客 提供 方便快捷 服务 澳门 航空

开通 澳门 贵阳 航线 航班 编号 nx162 nx161 从今天开始 台北 高雄 出发 前往 贵阳 乘客 搭乘 nx611 nx663 飞抵 澳门 转机 …

数据源为已经进行分词操作的文章和标签。数据源包含两列,第一列为标签,第二列为文章 分词。两列之间以“,”分隔,文章分词列则以空格将单词分隔。 在利用文本分类之前,先采用 TF-EDF 算法对数据进行处理,转换为对应的 tf-idf 值,然后再 进行处理。转换后的数据示例如下:

[0,(500000,[1482,59346,66216,97258,104601,105860,111754,122123,156540,158863,161309,202195,264815, 272678,283036,358972,367821,383828,432179,448723,470977,472500,488340],[8.064479230707462, 5.4495194526712645,3.984120910460102,5.867254653371243,8.246800787501417,2.8939952356693106, 1.7744544930005166,4.4580759984177645,4.295557068919989,6.965866942039352,4.490262684913666, 5.474212065261636,5.5812506726756,3.8597866113164963,16.493601575002835,5.713103973543984, 8.064479230707462,5.241118183094258,7.553653606941472,7.281934515399737,4.030238592555067, 5.43739809213892,4.859026426171402])]

UP 朴素贝叶斯算法示例如下:

# 准备数据 call hdfs.hdfs_put('/home/gbase/up_ml_spark2/data/sougou_train/','/up/sparkml/data/sougou_train/'); call hdfs.hdfs_put('/home/gbase/up_ml_spark2/data/sougou_test/','/up/sparkml/data/sougou_test/'); call hdfs.hdfs_put('/home/gbase/up_ml_spark2/data/sougou_predict/','/up/sparkml/data/sougou_predict/'); # 训练集和测试集特征提取 call upextdb.tf_idf('/up/sparkml/data/sougou_train/*','/up/sparkml/data/features_train'); call spark_ml.tf_idf('/up/sparkml/data/sougou_test/*','/up/sparkml/data/features_test'); # 待分类数据特征提取 call upextdb.tf_idf_table('spark_ml.t_text_predict', '/up/sparkml/data/features_predict'); # 创建模型 call upextdb.create_model( 'naiveBayes_model', 'naiveBayes', '/up/sparkml/data/features_train','/up/sparkml/data/features_test');

GBase UP 机器学习算法简介

# 设置训练和评估参数 call upextdb.add_train_setting('naiveBayes_model','lambda','1.0' ); call upextdb.add_train_setting('naiveBayes_model','modeType','multinomial' ); # 训练 call upextdb.train_model('naiveBayes_model'); # 评估 call upextdb.evaluate_model('naiveBayes_model'); # 预测 call upextdb.predict('naiveBayes_model', '/up/sparkml/data/features_predict', 'spark_ml.text_classification_result');

输出结果示例如下:

gbase> select * from spark_ml.text_classification_result; +------------+----------+ | name | category | +------------+----------+ | 000016.txt | 5 | | 000020.txt | 6 | | 000022.txt | 7 | | 000010.txt | 2 | | 000013.txt | 3 | | 000014.txt | 4 | | 000023.txt | 8 | | 000007.txt | 0 | | 000024.txt | 9 | | 000008.txt | 1 | +------------+----------+ 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论