提交 0b9b632c 编写于 作者: L loopyme

更新至0.21

上级 e9e4696f
......@@ -2,33 +2,30 @@
校验者:
        [@Kyrie](https://github.com/apachecn/scikit-learn-doc-zh)
[@Loopy](https://github.com/loopyme)
翻译者:
        [@TWITCH](https://github.com/apachecn/scikit-learn-doc-zh)
朴素贝叶斯方法是基于贝叶斯定理的一组有监督学习算法,即“简单”地假设每对特征之间相互独立。 给定一个类别 ![y](img/0775c03fc710a24df297dedcec515aaf.jpg) 和一个从 ![x_1](img/f15b9946d9078749f894a78579dc6778.jpg) 到 ![x_n](img/14f6506599a88a5297ea712fa70eece4.jpg) 的相关的特征向量, 贝叶斯定理阐述了以下关系:
![P(y \mid x_1, \dots, x_n) = \frac{P(y) P(x_1, \dots x_n \mid y)}
{P(x_1, \dots, x_n)}](img/32f500a4e2eba65727c1e003699dff90.jpg)
![P(y \mid x_1, \dots, x_n) = \frac{P(y) P(x_1, \dots x_n \mid y)}{P(x_1, \dots, x_n)}](img/32f500a4e2eba65727c1e003699dff90.jpg)
使用简单(naive)的假设-每对特征之间都相互独立:
![P(x_i | y, x_1, \dots, x_{i-1}, x_{i+1}, \dots, x_n) = P(x_i | y) ,](img/9fd83615429a9be9e5698d35bec8642a.jpg)
对于所有的 :math: *i* ,这个关系式可以简化为
对于所有的 :*i* ,这个关系式可以简化为
![P(y \mid x_1, \dots, x_n) = \frac{P(y) \prod_{i=1}^{n} P(x_i \mid y)}
{P(x_1, \dots, x_n)}](img/1c12ea7ea179efd16ce513645034d41a.jpg)
![P(y \mid x_1, \dots, x_n) = \frac{P(y) \prod_{i=1}^{n} P(x_i \mid y)}{P(x_1, \dots, x_n)}](img/1c12ea7ea179efd16ce513645034d41a.jpg)
由于在给定的输入中 ![P(x_1, \dots, x_n)](img/03dc262433e357325639af531c5bf70e.jpg) 是一个常量,我们使用下面的分类规则:
![P(y \mid x_1, \dots, x_n) \propto P(y) \prod_{i=1}^{n} P(x_i \mid y)
\Downarrow
\hat{y} = \arg\max_y P(y) \prod_{i=1}^{n} P(x_i \mid y),](img/983133e80141fbf289a10f379c11b34f.jpg)
![P(y \mid x_1, \dots, x_n) \propto P(y) \prod_{i=1}^{n} P(x_i \mid y)\Downarrow\hat{y} = \arg\max_y P(y) \prod_{i=1}^{n} P(x_i \mid y),](img/983133e80141fbf289a10f379c11b34f.jpg)
我们可以使用最大后验概率(Maximum A Posteriori, MAP) 来估计 ![P(y)](img/d41288778c3d66bcae947c3078469126.jpg) 和 ![P(x_i \mid y)](img/db23fadfab6b660dbfa2934c4536beb1.jpg) ; 前者是训练集中类别 ![y](img/0775c03fc710a24df297dedcec515aaf.jpg) 的相对频率。
......@@ -41,9 +38,8 @@
另一方面,尽管朴素贝叶斯被认为是一种相当不错的分类器,但却不是好的估计器(estimator),所以不能太过于重视从 `predict_proba` 输出的概率。
参考文献:
* H. Zhang (2004). [The optimality of Naive Bayes.](http://www.cs.unb.ca/~hzhang/publications/FLAIRS04ZhangH.pdf) Proc. FLAIRS.
>参考文献:
>* H. Zhang (2004). [The optimality of Naive Bayes.](http://www.cs.unb.ca/~hzhang/publications/FLAIRS04ZhangH.pdf) Proc. FLAIRS.
## 1.9.1\. 高斯朴素贝叶斯
......@@ -73,19 +69,29 @@ Number of mislabeled points out of a total 150 points : 6
![\hat{\theta}_{yi} = \frac{ N_{yi} + \alpha}{N_y + \alpha n}](img/cb5a89fd247e8cbbea21b00a12d188e6.jpg)
```py
式中 训练集 特征 在类 中出现的次数
```
式中![N_{yi} = \sum_{x \in T} x_i](img/bayes01.png)是 训练集T中特征i在类![y](img/0775c03fc710a24df297dedcec515aaf.jpg)中出现的次数,![N_{y} = \sum_{i=1}^{|T|} N_{yi}](img/bayes02.png) 是类 ![y](img/0775c03fc710a24df297dedcec515aaf.jpg) 中出现所有特征的计数总和。
先验平滑因子 ![\alpha \ge 0](img/43fc75930300610d8cb41a8d15899c15.jpg) 应用于在学习样本中没有出现的特征,以防在将来的计算中出现0概率输出。 把 ![\alpha = 1](img/3e0dffeddefe6ba1e809bd9b6276c771.jpg) 被称为拉普拉斯平滑(Lapalce smoothing),而 ![\alpha < 1](img/8fe0d726b364f224c93e31cd3248a1f6.jpg) 被称为Lidstone平滑方法(Lidstone smoothing)。
## 1.9.3\. 补充朴素贝叶斯
[`ComplementNB`](https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.ComplementNB.html#sklearn.naive_bayes.ComplementNB)实现了多项朴素贝叶斯(CNB)算法。CNB是标准多项式朴素贝叶斯(MNB)算法的一种改进,特别适用于不平衡数据集。具体来说,CNB使用来自每个类的补数的统计数据来计算模型的权重。CNB的发明者的经验表明,CNB的参数估计比MNB的参数估计更稳定。此外,CNB在文本分类任务上通常比MNB表现得更好(通常有相当大的优势)。计算权重的步骤如下:
![N_{y} = \sum_{i=1}^{|T|} N_{yi}](img/da31be9c84ea7617ab534b511701d650.jpg) 是类 ![y](img/0775c03fc710a24df297dedcec515aaf.jpg) 中出现所有特征的计数总和。
伯努利朴素贝叶斯的决策规则基于
![\begin{align}\begin{aligned}\hat{\theta}_{ci} = \frac{\alpha_i + \sum_{j:y_j \neq c} d_{ij}}{\alpha + \sum_{j:y_j \neq c} \sum_{k} d_{kj}}\\w_{ci} = \log \hat{\theta}_{ci}\\w_{ci} = \frac{w_{ci}}{\sum_{j} |w_{cj}|}\end{aligned}\end{align}](img/bayse03.png)
其中对不在类c中的所有记录j求和,d<sub>ij</sub>既是计数也是记录j中i的tf-idf值,α<sub>i</sub>是就像MNB中一样的平滑超参数,同时![\alpha = \sum_{i} \alpha_i](img/bayse04.png)。第二个归一化解决了长记录主导MNB参数估计的问题。分类规则为:
先验平滑因子 ![\alpha \ge 0](img/43fc75930300610d8cb41a8d15899c15.jpg) 应用于在学习样本中没有出现的特征,以防在将来的计算中出现0概率输出。 把 ![\alpha = 1](img/3e0dffeddefe6ba1e809bd9b6276c771.jpg) 被称为拉普拉斯平滑(Lapalce smoothing),而 ![\alpha &lt; 1](img/8fe0d726b364f224c93e31cd3248a1f6.jpg) 被称为利德斯通(Lidstone smoothing)。
![\hat{c} = \arg\min_c \sum_{i} t_i w_{ci}](img/bayse05.png)
## 1.9.3\. 伯努利朴素贝叶斯
即将记录分配给补充匹配度最低的类。
## 1.9.4\. 伯努利朴素贝叶斯
[`BernoulliNB`](https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.BernoulliNB.html#sklearn.naive_bayes.BernoulliNB "sklearn.naive_bayes.BernoulliNB") 实现了用于多重伯努利分布数据的朴素贝叶斯训练和分类算法,即有多个特征,但每个特征 都假设是一个二元 (Bernoulli, boolean) 变量。 因此,这类算法要求样本以二元值特征向量表示;如果样本含有其他类型的数据, 一个 `BernoulliNB` 实例会将其二值化(取决于 `binarize` 参数)。
伯努利朴素贝叶斯的决策规则基于
伯努利朴素贝叶斯的决策规则基于:
![P(x_i \mid y) = P(i \mid y) x_i + (1 - P(i \mid y)) (1 - x_i)](img/375fd0c32c15c4547b00ae36c0ec0a6a.jpg)
......@@ -93,18 +99,17 @@ Number of mislabeled points out of a total 150 points : 6
在文本分类的例子中,词频向量(word occurrence vectors)(而非词数向量(word count vectors))可能用于训练和用于这个分类器。 `BernoulliNB` 可能在一些数据集上可能表现得更好,特别是那些更短的文档。 如果时间允许,建议对两个模型都进行评估。
参考文献:
* C.D. Manning, P. Raghavan and H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press, pp. 234-265.
* A. McCallum and K. Nigam (1998). [A comparison of event models for Naive Bayes text classification.](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1529) Proc. AAAI/ICML-98 Workshop on Learning for Text Categorization, pp. 41-48.
* V. Metsis, I. Androutsopoulos and G. Paliouras (2006). [Spam filtering with Naive Bayes – Which Naive Bayes?](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.61.5542) 3rd Conf. on Email and Anti-Spam (CEAS).
>参考文献:
>* C.D. Manning, P. Raghavan and H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press, pp. 234-265.
>* A. McCallum and K. Nigam (1998). [A comparison of event models for Naive Bayes text classification.](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1529) Proc. AAAI/ICML-98 Workshop on Learning for Text Categorization, pp. 41-48.
>* V. Metsis, I. Androutsopoulos and G. Paliouras (2006). [Spam filtering with Naive Bayes – Which Naive Bayes?](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.61.5542) 3rd Conf. on Email and Anti-Spam (CEAS).
## 1.9.4\. 堆外朴素贝叶斯模型拟合
## 1.9.5\. 堆外朴素贝叶斯模型拟合
朴素贝叶斯模型可以解决整个训练集不能导入内存的大规模分类问题。 为了解决这个问题, [`MultinomialNB`](https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.MultinomialNB.html#sklearn.naive_bayes.MultinomialNB "sklearn.naive_bayes.MultinomialNB"), [`BernoulliNB`](https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.BernoulliNB.html#sklearn.naive_bayes.BernoulliNB "sklearn.naive_bayes.BernoulliNB"), 和 [`GaussianNB`](https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html#sklearn.naive_bayes.GaussianNB "sklearn.naive_bayes.GaussianNB") 实现了 `partial_fit` 方法,可以动态的增加数据,使用方法与其他分类器的一样,使用示例见 [Out-of-core classification of text documents](https://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html#sphx-glr-auto-examples-applications-plot-out-of-core-classification-py) 。所有的朴素贝叶斯分类器都支持样本权重。
`fit` 方法不同,首次调用 `partial_fit` 方法需要传递一个所有期望的类标签的列表。
对于 scikit-learn 中可用方案的概览,另见 [out-of-core learning](scaling_strategies.html#scaling-strategies) 文档。
对于 scikit-learn 中可用方案的概览,另见 [out-of-core learning](docs/66?id=_71-使用外核学习实例进行拓展) 文档。
所有朴素贝叶斯模型调用 `partial_fit` 都会引入一些计算开销。推荐让数据快越大越好,其大小与 RAM 中可用内存大小相同。
\ No newline at end of file
> 注意:所有朴素贝叶斯模型调用 `partial_fit` 都会引入一些计算开销。推荐让数据快越大越好,其大小与 RAM 中可用内存大小相同。
此差异已折叠。
此差异已折叠。
......@@ -297,4 +297,4 @@ Classifier chains (查看 `ClassifierChain`) 是一种集合多个二分类器
Jesse Read, Bernhard Pfahringer, Geoff Holmes, Eibe Frank,
```
“Classifier Chains for Multi-label Classification”, 2009.
\ No newline at end of file
“Classifier Chains for Multi-label Classification”, 2009.
......@@ -25,7 +25,7 @@
#### 7.1.1.2\. 提取特征
2\. 可以是 scikit-learn 支持的的不同 :ref: *特征提取 &lt;feature_extraction&gt;* 方法中的任何相关的方法。然而,当处理那些需要矢量化并且特征或值的集合你预先不知道的时候,就得明确注意了。一个好的例子是文本分类,其中在训练的期间你很可能会发现未知的项。从应用的角度上来看,如果在数据上进行多次通过是合理的,则可以使用有状态的向量化器。否则,可以通过使用无状态特征提取器来提高难度。目前,这样做的首选方法是使用所谓的 [哈希技巧](feature_extraction.html#feature-hashing),在 [`sklearn.feature_extraction.FeatureHasher`](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.FeatureHasher.html#sklearn.feature_extraction.FeatureHasher "sklearn.feature_extraction.FeatureHasher") 中,其中有分类变量的表示为 Python 列表或 [`sklearn.feature_extraction.text.HashingVectorizer`](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html#sklearn.feature_extraction.text.HashingVectorizer "sklearn.feature_extraction.text.HashingVectorizer") 文本文档。
2\. 可以是 scikit-learn 支持的的不同 *特征提取 &lt;feature_extraction&gt;* 方法中的任何相关的方法。然而,当处理那些需要矢量化并且特征或值的集合你预先不知道的时候,就得明确注意了。一个好的例子是文本分类,其中在训练的期间你很可能会发现未知的项。从应用的角度上来看,如果在数据上进行多次通过是合理的,则可以使用有状态的向量化器。否则,可以通过使用无状态特征提取器来提高难度。目前,这样做的首选方法是使用所谓的 [哈希技巧](feature_extraction.html#feature-hashing),在 [`sklearn.feature_extraction.FeatureHasher`](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.FeatureHasher.html#sklearn.feature_extraction.FeatureHasher "sklearn.feature_extraction.FeatureHasher") 中,其中有分类变量的表示为 Python 列表或 [`sklearn.feature_extraction.text.HashingVectorizer`](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html#sklearn.feature_extraction.text.HashingVectorizer "sklearn.feature_extraction.text.HashingVectorizer") 文本文档。
#### 7.1.1.3\. 增量学习
......
此差异已折叠。
......@@ -14,7 +14,8 @@
交叉分解算法能够找到两个矩阵 (X 和 Y) 的基础关系。它们是对在两个空间的 协方差结构进行建模的隐变量方法。它们将尝试在X空间中找到多维方向,该方向能 够解释Y空间中最大多维方差方向。PLS回归特别适用于当预测变量矩阵具有比观测值 更多的变量以及当X值存在多重共线性时。相比之下,在这些情况下,标准回归将失败。
包含在此模块中的类有:[`PLSRegression`](https://scikit-learn.org/stable/modules/generated/sklearn.cross_decomposition.PLSRegression.html#sklearn.cross_decomposition.PLSRegression "sklearn.cross_decomposition.PLSRegression"), [`PLSCanonical`](https://scikit-learn.org/stable/modules/generated/sklearn.cross_decomposition.PLSCanonical.html#sklearn.cross_decomposition.PLSCanonical "sklearn.cross_decomposition.PLSCanonical"), [`CCA`](https://scikit-learn.org/stable/modules/generated/sklearn.cross_decomposition.CCA.html#sklearn.cross_decomposition.CCA "sklearn.cross_decomposition.CCA"), [`PLSSVD`](https://scikit-learn.org/stable/modules/generated/sklearn.cross_decomposition.PLSSVD.html#sklearn.cross_decomposition.PLSSVD "sklearn.cross_decomposition.PLSSVD")
>参考:
>* JA Wegelin [A survey of Partial Least Squares (PLS) methods, with emphasis on the two-block case](https://www.stat.washington.edu/research/reports/2000/tr371.pdf)
示例:
* [Compare cross decomposition methods](https://scikit-learn.org/stable/auto_examples/cross_decomposition/plot_compare_cross_decomposition.html#sphx-glr-auto-examples-cross-decomposition-plot-compare-cross-decomposition-py)
\ No newline at end of file
>示例:
>* [Compare cross decomposition methods](https://scikit-learn.org/stable/auto_examples/cross_decomposition/plot_compare_cross_decomposition.html#sphx-glr-auto-examples-cross-decomposition-plot-compare-cross-decomposition-py)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册