Classification Probability Models and Conditional Random Fields(1)--Naive Bayes

    目前正在学习自然语言处理相关的概率模型,在一篇名为《Classification Probability Models and Conditional Random Fields》论文中讲述了常用的几个经典的概率模型,并分析了他们之间的关系和区别,深入浅出,讲的非常的好。

    在很多任务中,面临的问题都是对给定的输入X,对输入赋予一个恰当的分类标签Y。在自然语言处理中,如文本分类、词性标注、分词等等,均可表示为以上形式。在常用的概率模型中,主要分为两类,一类是生成模型(generative model),这类模型计算X与Y的联合概率(joint probability)P(X,Y),常见的有朴树贝叶斯模型,隐马尔科夫模型等。另一类称为判别模型(discriminative model),这类模型计算X与Y的条件概率(conditional probability) P(Y|X),常见的有最大熵模型、条件随机场模型等。

    这四个模型的关系可用图表示如下:


    在这些概率模型中,最基本的就是朴树贝叶斯模型。贝叶斯模型是一个分类模型,对于输入赋予一个标签。在朴树贝叶斯模型中,对于给定的输入向量X,对其赋予一个类别标识,其概率可以表示为

   因为我们求的只是相对概率,所以可以将分母去掉,只计算分子即可。在上面的公式中,如果直接进行计算将会有较高的复杂度,所以使用一个链式规则对计算进行分解,得到新的计算公式:
       
在实际应用中,常常假设输入向量X的各维是条件独立的(朴树贝叶斯假设) 即p(x i |y, x j ) = p(x i |y) 。这样上面的计算公式可转换为:

这就是朴树贝叶斯分类规则。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个 RDD-based API 的简单 Scala 代码示例,展示如何使用 Apache Spark 中的 MLlib 库来训练一个朴素贝叶斯分类器并输出结果: ```scala import org.apache.spark.mllib.classification.{NaiveBayes, NaiveBayesModel} import org.apache.spark.mllib.util.MLUtils import org.apache.spark.{SparkConf, SparkContext} // 创建 SparkConf 和 SparkContext val conf = new SparkConf().setAppName("NaiveBayesExample") val sc = new SparkContext(conf) // 读取数据集 val data = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt") // 划分数据集为训练集和测试集 val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3), seed = 1234L) // 训练朴素贝叶斯分类器 val model = NaiveBayes.train(trainingData, lambda = 1.0, modelType = "multinomial") // 在测试集上进行预测 val predictions = testData.map { point => val prediction = model.predict(point.features) (prediction, point.label) } // 计算模型准确率 val accuracy = 1.0 * predictions.filter(r => r._1 == r._2).count() / testData.count() println(s"Test set accuracy = $accuracy") // 输出预测结果 predictions.take(10).foreach(println) // 保存模型 model.save(sc, "myModelPath") // 加载模型 val sameModel = NaiveBayesModel.load(sc, "myModelPath") ``` 你可以将你的数据集替换文中的数据集路径,然后运行代码即可得到训练好的模型和预测结果。需要注意的是,在 RDD-based API 中,我们需要显式地调用 `predict` 方法来进行预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值