朴素贝叶斯:修订间差异

来自决策链云智库
无编辑摘要
 
(未显示1个用户的6个中间版本)
第7行: 第7行:
|productionstate={{图标文件|Win}} / {{图标文件|W10}} Win10及以上可用
|productionstate={{图标文件|Win}} / {{图标文件|W10}} Win10及以上可用
|productionstatedesc=在[[Update:DecisionLinnc 1.0.0.8|V1.0]]部署
|productionstatedesc=在[[Update:DecisionLinnc 1.0.0.8|V1.0]]部署
|nodeenglishname=[[Has english name::Naïve Bayes]]
|nodeenglishname=Naïve Bayes
|abbreviation=[[Has abbreviation::NaBaye]]
|abbreviation=NaBaye
|funcmaincategory=机器学习
|funcmaincategory=机器学习
|funcsubcategory=[[DataML Lv1 Cat::分类训练器]]
|funcsubcategory=[[DataML Lv1 Cat::分类训练器]]
第27行: 第27行:
|nextnode=[[通用预测模块]]
|nextnode=[[通用预测模块]]
}}
}}
==算法概述==
==算法概述==
在统计学中,朴素贝叶斯分类器是一类线性“概率分类器”,它假设给定目标类别的特征是条件独立的。这个假设的强度(naivity)就是分类器名称的由来。这些分类器是最简单的贝叶斯网络模型之一
在统计学中,朴素贝叶斯分类器是一类线性“概率分类器”,它假设给定目标类别的特征是条件独立的。这个假设的强度(naivity)就是分类器名称的由来。这些分类器是最简单的贝叶斯网络模型之一
<ref>{{cite web|title=Naive Bayes Classifier|url=https://en.wikipedia.org/wiki/Naive_Bayes_classifier|website=Wikipedia|access-date=2024-01-19}}</ref>。
<ref>{{cite web|title=Naive Bayes Classifier|url=https://en.wikipedia.org/wiki/Naive_Bayes_classifier|website=Wikipedia|access-date=2024-01-19}}</ref>。


朴素贝叶斯分类器具有高度的可扩展性,在学习问题中需要许多变量(特征因子)数量呈线性的参数。最大似然训练(Maximum-likelihood training)可以通过评估闭式表达式(closed-form expression)<ref>Russell, Stuart; Norvig, Peter (2003) [1995]. ''Artificial Intelligence: A Modern Approach'' (2nd ed.). Prentice Hall. ISBN 978-0137903955.</ref>来完成。这需要线性时间而不是像用于许多其他类型的分类器那样通过昂贵的迭代近似。
朴素贝叶斯分类器具有高度的可扩展性,在学习问题中需要许多变量(特征因子)数量呈线性的参数。最大似然训练(Maximum-likelihood training)可以通过评估闭式表达式(closed-form expression)<ref>Russell, Stuart; Norvig, Peter (2003) [1995]. ''Artificial Intelligence: A Modern Approach'' (2nd ed.). Prentice Hall. ISBN 978-0137903955.</ref>来完成。这需要线性时间而不是像用于许多其他类型的分类器那样通过昂贵的迭代近似。在统计学文献中,朴素贝叶斯模型有多种名称,包括简单贝叶斯(simple Bayes)和独立贝叶斯(independent Bayes)。所有这些名称都引用了贝叶斯定理在分类器决策规则中的使用,但朴素贝叶斯(Naive Bayes)不是贝叶斯方法(Bayes Method)。


==示例代码-朴素贝叶斯分类节点==
==示例代码-朴素贝叶斯分类节点==
第38行: 第37行:
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
from sklearn.datasets import load_iris
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
X, y = load_iris(return_X_y=True)
X, y = load_iris(return_X_y=True)
clf = LogisticRegression(random_state=0).fit(X, y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
clf.predict(X[:2, :])
gnb = GaussianNB()
clf.predict_proba(X[:2, :])
y_pred = gnb.fit(X_train, y_train).predict(X_test)
clf.score(X, y)
</syntaxhighlight>
</syntaxhighlight>


第56行: 第55行:


===参数配置===
===参数配置===
* 设置随机数:控制模型的随机性。
* 方法选择:
* 正则化参数:正则化参数是机器学习算法中的一个重要参数,用于控制模型的复杂度并防止过拟合(Overfitting)。选择适当的正则化参数对于获得良好的模型性能非常重要。默认为1.0。
**Multinomial(多项式朴素贝叶斯):适用于多分类问题,特征是描述文本或计数数据的离散值。它假设特征的概率分布服从多项式分布,通常用于文本分类任务,如垃圾邮件过滤和情感分析。
* 惩罚规则选择:惩罚的允许值取决于所选择的算法。求解器支持的惩罚:'lbfgs' - ['l2',None], 'liblinear' - ['l1', 'l2'], 'newton-cg' - ['l2',None],'newton-cholesky' - ['l2',None], 'sag' - ['l2',,None], 'saga' - ['elasticnet', 'l1', 'l2', None]。
**Bernoulli(伯努利朴素贝叶斯):适用于二分类问题,特征是描述是否发生的二元离散值(如出现或未出现)。它假设特征的概率分布服从伯努利分布,通常用于处理二进制特征的文本分类问题。
* 优化算法选择:
**Categorical(分类朴素贝叶斯):适用于多分类问题,特征是描述离散值的离散值,但与Multinomial朴素贝叶斯不同,它不计算特征出现的次数,而是考虑特征之间的相等性。它适用于具有有限离散特征的分类问题。
**liblinear:这是适用于小型数据集的优化算法。它基于坐标轴下降法(coordinate descent)和拟牛顿法(quasi-Newton)进行优化。liblinear对于处理二分类问题或多类问题的一对多(one-vs-rest)方法都是有效的。它还可以处理L1和L2正则化。
**Complement(补充朴素贝叶斯):适用于不平衡数据集的多分类问题。与其他朴素贝叶斯变种不同,Complement朴素贝叶斯使用补充概率估计,通过考虑非目标类别的信息来提高目标类别的分类性能。
**newton-cg:这是使用牛顿法的优化算法。它通过计算损失函数的二阶导数信息来更新模型参数。newton-cg适用于处理具有较小数据集的二分类或多类分类问题,但不适用于L1正则化。
**Gaussian(高斯朴素贝叶斯):适用于连续特征的分类问题,假设特征的概率分布服从高斯分布(正态分布)。它通过计算每个类别在每个特征上的均值和方差来估计概率分布,然后使用贝叶斯定理进行分类。高斯朴素贝叶斯常用于处理实数特征的问题。
**lbfgs:这是使用拟牛顿法的优化算法。它也利用损失函数的二阶导数信息进行参数更新。lbfgs适用于处理具有较小数据集的二分类或多类分类问题,且支持L2正则化。
* alpha:加法 (Additive Laplace/Lidstone) 平滑参数(设置 alpha=0,不进行平滑拟合)。在除了高斯朴素贝叶斯外的所有方法适用。
**sag:这是随机平均梯度下降(Stochastic Average Gradient)的优化算法。它使用样本的一部分计算梯度,并在每次迭代中更新模型参数。sag适用于处理具有大型数据集的二分类或多类分类问题,但不支持L1正则化。
* 是否使用先验:选否使用Uniform分布作为先验概率,暂时不支持使用其他先验。
**saga:这是liblinear和sag算法的改进版本,支持L1和L2正则化,并可以处理大型数据集。saga在处理大规模数据集时比较高效。
* 特征二进制化的值:样本特征二值化(映射到布尔值)的阈值。如果为“无”,则假定输入已由二进制向量组成(仅在“方法选择”为“伯努利朴素贝叶斯”时出现)。
**设置容忍度:设置停止标准(stopping criteria)的容忍度。默认0.0001。
* 最小分组数:每个特征的最小类别数(仅在“方法选择”为“分类朴素贝叶斯”时出现)。默认为无。
**设置最大迭代次数。
* 是否归一化:是否执行权重的第二次归一化(仅在“方法选择”为“补充朴素贝叶斯”时出现)。
* 添加到方差的最大特征:为了计算稳定性而添加到方差中的所有特征的最大方差的部分(仅在“方法选择”为“高斯朴素贝叶斯”时出现)。


===注意事项===
===注意事项===
第72行: 第72行:
* 节点不出图,
* 节点不出图,
* 导入该节点的数据端口为训练数据集,导入前注意转换。
* 导入该节点的数据端口为训练数据集,导入前注意转换。
* Logistic回归是具有二项式/伯努利条件分布和Logit link的广义线性模型(GLM)的一个特例。逻辑回归的数字输出,即预测概率,可以通过应用阈值(默认为0.5)作为分类器。这就是它在决策链中的实现方式,因此它需要有一个分类的结局变量,使逻辑回归成为分类器。


== 参考文献 ==
== 参考文献 ==
{{reflist}}
{{reflist}}


{{Navplate AlgorithmNodeList}}
{{Navplate AlgorithmNodeList}}


[[Category:分类训练器]]
[[Category:分类训练器]]

2024年1月19日 (五) 19:29的最新版本

Naïve Bayes.png
节点状态
Windows / Windows 10 Win10及以上可用
V1.0部署
朴素贝叶斯Naïve Bayes.svg
节点开发者决策链算法研发部 (Dev.Team-DPS)
节点英文名Naïve Bayes
功能主类别机器学习
英文缩写NaBaye
功能亚类别分类训练器
节点类型数据挖掘
开发语言Python
节点简介

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的机器学习算法,常用于解决分类问题。它假设特征之间是相互独立的(朴素假设),并利用贝叶斯定理计算后验概率,从而进行分类预测。/p>

端口数量与逻辑控制(PC)
Input-入口2个
Output-出口3个
Loop-支持循环
If/Switch-支持逻辑判断
输入输出
可生成图片类型(推荐)
可生成数据表类型(推荐)
相关节点
上一节点随机森林
下一节点通用预测模块



算法概述

在统计学中,朴素贝叶斯分类器是一类线性“概率分类器”,它假设给定目标类别的特征是条件独立的。这个假设的强度(naivity)就是分类器名称的由来。这些分类器是最简单的贝叶斯网络模型之一 [1]

朴素贝叶斯分类器具有高度的可扩展性,在学习问题中需要许多变量(特征因子)数量呈线性的参数。最大似然训练(Maximum-likelihood training)可以通过评估闭式表达式(closed-form expression)[2]来完成。这需要线性时间而不是像用于许多其他类型的分类器那样通过昂贵的迭代近似。在统计学文献中,朴素贝叶斯模型有多种名称,包括简单贝叶斯(simple Bayes)和独立贝叶斯(independent Bayes)。所有这些名称都引用了贝叶斯定理在分类器决策规则中的使用,但朴素贝叶斯(Naive Bayes)不是贝叶斯方法(Bayes Method)。

示例代码-朴素贝叶斯分类节点

该节点使用Python编写,调用scikit-learn包 [3]。以下为示例代码:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
gnb = GaussianNB()
y_pred = gnb.fit(X_train, y_train).predict(X_test)

拟合后,模型可以用于预测样本的类别,可以在通用预测模块实现内外部测试集的预测。

节点使用指南

  • 最适用的场景:决策树可用于解决分类问题,其中目标是将数据分为不同的类别或预测数据的类别。
  • 处理的数据类型:结局变量为二分类,特征变量大多数为连续型的变量。

变量配置

  • 选择特征变量:作为特征进行学习的变量(X),多选。
  • 选择目标变量:作为结局的二分类变量(y),单选。

参数配置

  • 方法选择:
    • Multinomial(多项式朴素贝叶斯):适用于多分类问题,特征是描述文本或计数数据的离散值。它假设特征的概率分布服从多项式分布,通常用于文本分类任务,如垃圾邮件过滤和情感分析。
    • Bernoulli(伯努利朴素贝叶斯):适用于二分类问题,特征是描述是否发生的二元离散值(如出现或未出现)。它假设特征的概率分布服从伯努利分布,通常用于处理二进制特征的文本分类问题。
    • Categorical(分类朴素贝叶斯):适用于多分类问题,特征是描述离散值的离散值,但与Multinomial朴素贝叶斯不同,它不计算特征出现的次数,而是考虑特征之间的相等性。它适用于具有有限离散特征的分类问题。
    • Complement(补充朴素贝叶斯):适用于不平衡数据集的多分类问题。与其他朴素贝叶斯变种不同,Complement朴素贝叶斯使用补充概率估计,通过考虑非目标类别的信息来提高目标类别的分类性能。
    • Gaussian(高斯朴素贝叶斯):适用于连续特征的分类问题,假设特征的概率分布服从高斯分布(正态分布)。它通过计算每个类别在每个特征上的均值和方差来估计概率分布,然后使用贝叶斯定理进行分类。高斯朴素贝叶斯常用于处理实数特征的问题。
  • alpha:加法 (Additive Laplace/Lidstone) 平滑参数(设置 alpha=0,不进行平滑拟合)。在除了高斯朴素贝叶斯外的所有方法适用。
  • 是否使用先验:选否使用Uniform分布作为先验概率,暂时不支持使用其他先验。
  • 特征二进制化的值:样本特征二值化(映射到布尔值)的阈值。如果为“无”,则假定输入已由二进制向量组成(仅在“方法选择”为“伯努利朴素贝叶斯”时出现)。
  • 最小分组数:每个特征的最小类别数(仅在“方法选择”为“分类朴素贝叶斯”时出现)。默认为无。
  • 是否归一化:是否执行权重的第二次归一化(仅在“方法选择”为“补充朴素贝叶斯”时出现)。
  • 添加到方差的最大特征:为了计算稳定性而添加到方差中的所有特征的最大方差的部分(仅在“方法选择”为“高斯朴素贝叶斯”时出现)。

注意事项

  • 不支持带空值运算,用多重插补插补空值进行插补,
  • 节点不出图,
  • 导入该节点的数据端口为训练数据集,导入前注意转换。

参考文献

  1. "Naive Bayes Classifier". Wikipedia. Retrieved 2024-01-19.
  2. Russell, Stuart; Norvig, Peter (2003) [1995]. Artificial Intelligence: A Modern Approach (2nd ed.). Prentice Hall. ISBN 978-0137903955.
  3. Kramer, Oliver (2016). "Scikit-learn". Machine learning for evolution strategies. Springer: 45--53.


查找其他类别的节点,请参考以下列表