1. 程式人生 > >Machine Learning (1) Naive Bayes

Machine Learning (1) Naive Bayes

最近在看Udacity上關於Machine Learning的初級課程,學習並記錄一下相關的知識點。

1.1 Naive Bayes

第一部分講了樸素貝葉斯的基本原理,以及如何使用Python sklearn建立樸素貝葉斯分類器。

Naive Bayes methods are a set of supervised learning algorithms based on applying Bayes’ theorem with the “naive” assumption of independence between every pair of features.

樸素貝葉斯方法是一組基於貝葉斯原理的監督學習方法,這類方法假設樣本特徵之間是相互獨立的。給定一個類變數 y

和與之相關的一組特徵向量,從 x1xn,則貝葉斯定理定義瞭如下關係:

P(yx1,,xn)=P(y)P(x1,xny)P(x1,,xn)

使用樸素貝葉斯的獨立性假設可以得到

P(xi|y,x1,,xi1,xi+1,,xn)=P(xi|y),

對於所有的 i,上述關係可以簡化為

P(yx1,,xn)=P(y)ni=1P(xiy)P(x1,,xn)

由於輸入給定的條件下 P(x1,,xn) 是常數,我們可以使用下面的分類規則:

P(yx1,,xn)P(y)i=1nP(xiy) y^=argmaxyP(y)
i=1n
P(xiy),

我們可以使用最大後驗估計(Maximum A Posteriori estimation, MAP)方法來估計 P(y)P(xiy),前者是訓練集中類別 y 的相對頻率。

不同樸素貝葉斯分類器之間的差別主要在於,對 P(xiy) 的分佈的假設。

儘管假設過於簡單,樸素貝葉斯分類器在許多實際問題中的處理效果卻非常好,比如文字分類和垃圾郵件檢測,這類分類器需要少量的訓練資料來估計引數。(樸素貝葉斯分類器工作效果好的原因以及在什麼型別的資料上效果比較好,針對這些問題的理論解釋可以參考文末給出的文獻。)

相比其他更復雜的方法,樸素貝葉斯方法學習和分類的運算速度都非常快。類別條件下特徵分佈的解耦意味著每個特徵的分佈可以獨立地估計為一維分佈,這反過來也有助於減輕維數災難引起的問題。

另一面,雖然樸素貝葉斯是一個不錯的分類器,但是對類概率的估計往往並不準確,所以不必過於在意 predict_proba 輸出的概率值。

References:
H. Zhang (2004). The optimality of Naive Bayes. Proc. FLAIRS.

1.2 Gaussian Naive Bayes

樸素貝葉斯分類器最常用的分佈假設是正態分佈假設,下面使用 sklearn.naive_bayes 中的 GaussianNB 構建高斯樸素貝葉斯分類器。特徵的條件似然函式假定服從正態分佈:

P(xiy)=12πσ2yexp(xiμy)22σ2y

引數 σy and μy 使用極大似然法進行估計。

下面是使用Python的sklearn包構建高斯樸素貝葉斯分類器的小例子:

>>> from sklearn import datasets
>>> iris = datasets.load_iris()  # 使用樣例資料
>>> from sklearn.naive_bayes import GaussianNB  # 匯入模組
>>> gnb = GaussianNB()  # 初始化分類器
>>> gnb.fit(iris.data, iris.target)  # 使用訓練資料進行模型訓練
>>> y_pred = gnb.predict(iris.data)  # 對測試資料進行預測
>>> print("Number of mislabeled points out of a total %d points : %d"
...       % (iris.data.shape[0],(iris.target != y_pred).sum()))
Number of mislabeled points out of a total 150 points : 6

相關推薦

Machine Learning (1) Naive Bayes

最近在看Udacity上關於Machine Learning的初級課程,學習並記錄一下相關的知識點。 1.1 Naive Bayes 第一部分講了樸素貝葉斯的基本原理,以及如何使用Python sklearn建立樸素貝葉斯分類器。 Naive

【學習筆記】Pattern Recognition&Machine Learning [1.2] Probability Theory(2) 基於高斯分佈和貝葉斯理論的曲線擬合

    高斯分佈不必贅述,這裡記錄個有意思的東西,即從高斯分佈和貝葉斯理論出發看曲線擬合(即選擇引數w)。     首先假設我們使用多項式擬合曲線,根據泰勒展開的方法,我們可以用有限項多項式在一定精度內擬合任何曲線。  &nb

【學習筆記】Pattern Recognition&Machine Learning [1.2] Probability Theory(1)貝葉斯理論

    這節講了概率論中的一些基本概念,這裡記錄一下對貝葉斯理論的理解。     首先簡單描述一下貝葉斯理論。     對於一個隨機事件,我們首先給出先驗分佈,不妨設為p(w)

Machine Learning(1)

機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效能。 機器學習步驟:define a set of

Machine Learning 1-線性迴歸演算法分析

AI人工智慧時代,機器學習,深度學習作為其核心,本文主要介紹機器學習的基礎演算法,以詳細線介紹 線性迴歸演算法 及其 數學原理 探究,做到知其然知其所以然,打好理論基礎。 目錄 機器學習及人工智慧 機器學習分類 有監督學習 無監督學習 線性迴歸演

Machine Learning --- 1 --- 什麼是機器學習?

Machine-Learning:機器學習 本文導航 什麼是機器學習? 資料集和結構 可用的資料集都有哪些 資料存放的格式和處理工具 常用的資料集資料的結構組成 什麼是資料的特徵工程 資料的特徵抽取 ——什麼是機器學習? ——資料

機器學習---樸素貝葉斯分類器(Machine Learning Naive Bayes Classifier)

垃圾郵件 垃圾 bubuko 自己 整理 href 極值 multi 帶來 樸素貝葉斯分類器是一組簡單快速的分類算法。網上已經有很多文章介紹,比如這篇寫得比較好:https://blog.csdn.net/sinat_36246371/article/details/601

Machine Learning——octave的操作(1)——DAY2

mil 畫出 基礎上 isp res 增加 rand nbsp span 1.PS1(‘>>’); ——不顯示版本 2.輸出: a=pi; format long format short(4位) disp(sprintf(‘%0.2f’,a)) 3.矩陣的輸入

Machine Learning - week 1

坐標 如何選擇 dia ner lin spa wikipedia img 一半 Matrix 定義及基本運算 Transposing To "transpose" a matrix, swap the rows and columns. We put a "T" i

學習 Machine Learning Mastery With Python (1

測試套件 實際應用 十分 機器學習 小數 機器學習算法 很多 結果 分鐘 1 介紹 1.1 機器學習的錯誤的想法 一定要對python 編程和python語法非常了解 深入學習scikit learn使用的機器學習算法的理論和參數 避免或者不能接觸實際項目中的其他部分。

機器學習筆記1 - Hello World In Machine Learning

之間 項目 圍棋 gpu 強勁 大量數據 特殊 轉換成 [1] 前言 Alpha Go在16年以4:1的戰績打敗了李世石,17年又以3:0的戰績戰勝了中國圍棋天才柯潔,這真是科技界振奮人心的進步。伴隨著媒體的大量宣傳,此事變成了婦孺皆知的大事件。大家又開始激烈的討論機器人什

Note for Coursera《Machine Learning1(1) | What is machine learning?

sed xpl some pro form computer from com init What is Machine Learning? Two definitions of Machine Learning are offered. Arthur Samuel des

machine learning 之 Neural Network 1

特征 中間 pan 單例 tor 思想 learning AC 每一個 整理自Andrew Ng的machine learning課程week 4. 目錄: 為什麽要用神經網絡 神經網絡的模型表示 1 神經網絡的模型表示 2 實例1 實例2 多分類問題 1、為

利用KNIME建立Spark Machine learning 模型 1:開發環境搭建

大數據分析 KNIME Machine Learning Spark 建模 1、Knime Analytics 安裝從官方網站下載合適的版本 https://www.knime.com/downloads 將下載的安裝包在安裝路徑解壓 https://www.knime.com/insta

機器學習實戰(Machine Learning in Action)學習筆記————04.樸素貝葉斯分類(bayes

機器學習實戰(Machine Learning in Action)學習筆記————04.樸素貝葉斯分類(bayes)關鍵字:樸素貝葉斯、python、原始碼解析作者:米倉山下時間:2018-10-25機器學習實戰(Machine Learning in Action,@author: Peter Harri

coursera Machine Learning: Programming Exercise 1

2. Linear regression with one variable (一個變數的線性迴歸) 2.1 Plotting the data data = load('ex1data1.txt'); % read comma separated data X = data(:,

sp3.1 Structuring Machine Learning Projects

分析與改進專案瓶頸:很多時候可能不知道下一步怎麼改善系統,錯誤的方法浪費大量時間 有這麼多策略 怎麼試   思維清晰知道要調整哪個引數 這些引數就像按鈕一樣啊 正交法:讓各種功能按鈕能夠分開 比如開車時候速度和方向 一個按鈕結合了其他按鈕

機器學習 Machine Learning 深度學習 Deep Learning 資料 Chapter 1

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Machine Learning A-Z(1

Data preprocessing 資料獲取地址: https://www.superdatascience.com/下載資料集/ import numpy as np import matplotlib.pyplot as plt import panda