樸素貝葉斯我試圖理解爲什麼樸素貝葉斯分類與特徵數量線性縮放,相較於同樣的想法,而不幼稚的假設。我瞭解它how the classifier works和what's so "naive"。我不清楚爲什麼天真的假設給我們線性縮放,而解除這個假設是指數的。我正在尋找一個示例,演示了線性複雜度下的「天真」設置下的算法示例,以及沒有這種假設的同一個示例將展示指數複雜性。沒有天真地
沒有天真地
回答
的這裏的問題在於以下,你必須估計量
P(x1, x2, x3, ..., xn | y)
。當你承擔「的naiveness」(功能獨立)你
P(x1, x2, x3, ..., xn | y) = P(x1 | y)P(x2 | y) ... P(xn | y)
,你可以獨立估計每個P(xi | y)
。以自然的方式,這種方式擴展線性,因爲如果添加另一個k
功能,你需要估計另一k
概率,每個使用一些非常簡單的技術(如使用給定功能計數目標)。現在
,沒有的naiveness你沒有任何分解。因此,你必須跟蹤的形式
P(x1=v1, x2=v2, ..., xn=vn | y)
的所有概率爲vi
每個可能的值。在簡單的情況下,vi
僅僅是「真」或「假」(事件發生與否),這已經給你2^n
概率估計(「真」與「假」的一系列n
布爾變量的每個可能的分配) 。因此,您的算法複雜度呈指數級增長。然而,這裏最大的問題通常是不計算一個 - 而是缺乏數據的。由於有2^n
概率估計你需要超過2^n
數據點有任何估計所有可能的事件。在現實生活中,您將不會遇到大小爲10,000,000,000,000點的數據集......並且這是針對具有這種方法的40個特徵所需的(獨特的!)點數。
糖果選擇
在孟買的郊區,住着一位老奶奶,其定量的人生觀已經爲她贏得了綽號統計老太。她獨自住在一棟巨大的豪宅裏,她練習完善的統計分析,避開了大衆媒體和所謂專家兜售的毫無希望的有缺陷的偏見。
在她生日的每一年,她的全家都會拜訪她並留在豪宅。兒子,女兒,他們的配偶,她的孫子女。這將是一個每年很大的狂歡,有很多的吹捧。但奶奶最喜歡的是和她的孫子們見面並與他們一起玩耍。她總共有十個孫子,他們都在10歲左右,她會親切地稱他們爲「隨機變量」。
每年,奶奶都會爲每個孩子贈送糖果。奶奶有一個裝滿十種不同糖果的大盒子。她會給每個孩子一顆糖果,因爲她不想破壞他們的牙齒。但是,當她非常喜歡孩子時,她花費很大力氣決定向哪個孩子展示哪種糖果,以便最大限度地提高他們的總體幸福感(最大可能性估計,就像她所稱的那樣)。
但這對奶奶來說不是一件容易的事。她知道每種糖果都有讓孩子快樂的一定概率。對於不同的糖果類型和不同的孩子,這種可能性是不同的。 Rakesh喜歡紅色糖果而不是綠色糖果,而Sheila喜歡橙色糖果。
10個孩子的每一個對10顆糖果都有不同的偏好。
此外,他們的偏好在很大程度上取決於對奶奶未知的外部因素(隱藏變量)。
如果Sameer在通向大廈的路上看到一座藍色建築物,他會想要一顆藍色糖果,而Sandeep總是希望那天的糖果與他襯衫的顏色相匹配。但最大的挑戰是他們的快樂取決於其他孩子得到的糖果!如果羅漢得到了紅色糖果,那麼尼雅提也會想要一顆紅色糖果,而其他任何東西都會讓她哭泣到她母親的懷抱裏(條件依賴)。 Sakshi總是想要大多數孩子得到的東西(正相關),而如果沒有人得到他收到的那種糖果,Tanmay會是最快樂的(負相關)。奶奶早就斷定她的孫子完全相互依賴。
對於奶奶來說,計算上糖果選擇權是一項重大任務。有條件太多要考慮,她不能簡化計算。每年在她的生日之前,她都會花費數天時間,通過爲所有孩子一起列舉所有糖果配置(這是一項指數級昂貴的任務),從而找出糖果的最佳分配。她變老了,任務越來越難。她以前會覺得自己會死的,然後纔算出最佳選擇的糖果,這會讓她的孩子一下子變得最快樂。
但發生了一件有趣的事情。隨着歲月的流逝和孩子的成長,他們終於從十幾歲變成了獨立的成年人。他們的選擇越來越不依賴對方,並且更容易找出每個人最喜歡的糖果(他們都喜歡糖果和奶奶)。
奶奶很快就認識到這一點,她興致勃勃地開始稱他們爲「獨立隨機變量」。對她來說,找出糖果的最佳選擇要容易得多 - 她每次只需要考慮一個孩子,併爲每個孩子分配一個幸福概率給該孩子的10種糖果類型。然後,她會爲那個孩子選擇幸福概率最高的糖果,而不用擔心她將分配給其他孩子的東西。這是一件非常容易的事情,奶奶終於能夠把它做好。
那一年,孩子們終於同時開心了,奶奶在她的100歲生日聚會上玩得很開心。那天后幾個月,奶奶去世了,她的臉上露出了微笑,手中還抓着一本謝爾登羅斯。
外賣:在統計建模,具有互相依賴的隨機變量使得它真的很難找出每個最大化組的累積概率變量值的最優分配。
您需要枚舉所有可能的配置(在變量的數量呈指數增加)。但是,如果變量是獨立的,則可以很容易地挑選出使每個變量的概率最大化的單獨賦值,然後組合各個賦值以獲得整個集合的配置。
在樸素貝葉斯,你做出的假設變量是獨立的(即使它們實際上不是)。這簡化了你的計算,事實證明,在許多情況下,它實際上給出的估計值與你從一個考慮到變量之間的條件依賴性的更多(計算上)昂貴的模型中獲得的估計值相當。
我沒有在這個答案中包括任何數學,但希望這使得它更容易掌握樸素貝葉斯背後的概念,並有信心地接近數學。 (維基百科頁面是一個很好的開始:樸素貝葉斯)。
爲什麼是 「幼稚」?
樸素貝葉斯分類器假定X | YX | Y通常在XX的任何組件之間以零協方差分佈。由於這對於任何實際問題都是完全不合理的假設,所以我們稱之爲天真。
樸素貝葉斯將做出以下假設:
如果你喜歡醬菜,你喜歡冰淇淋,樸素貝葉斯將承擔獨立性,給你一個泡菜冰淇淋,認爲你會喜歡它。
這可能不是真的。
對於數學例子中看到:https://www.analyticsvidhya.com/blog/2015/09/naive-bayes-explained/
- 1. 滑動窗口算法有沒有非天真的方法?
- 2. 天真的天氣預報
- 3. 配置錯誤天真。 Luarocks可能沒有正確配置
- 4. 沒有真正動
- 5. 有沒有人真的有今天的Facebook圖表見解api工作?
- 6. NER天真算法
- 7. 爲什麼沒有真正的==真:
- 8. 有沒有一種可靠的方法來將天真的UTC時間戳轉換爲JavaScript的本地時間?
- 9. 有沒有人成功地與redmine集成聊天?
- 10. UIFont.monospacedDigitSystemFontOfSize()沒有真正等寬?
- 11. Browserify沒有「真實」文件
- 12. 塊沒有真正執行?
- 13. mergeDuplicates =「真」,沒有在多選模式很好地工作
- 14. 像谷歌地圖的庫,但沒有真正
- 15. 基本本地化並沒有真正編程困惑
- 16. 天真的分類器matlab
- 17. scipy.optimize.fmin的天真並行化
- 18. .NET JIT編譯天真
- 19. django.utils.timezone返回天真日期?
- 20. express.js:天真技術諮詢
- 21. 春天:沒有autowire bean
- 22. Fullcalendar沒有渲染天
- 23. 春天junits沒有在Eclipse
- 24. 沒有午夜的一天
- 25. 天平沒有顯示
- 26. 爲messageSource沒有被春天
- 27. jDateChooser沒有顯示天數
- 28. 春天沒有的getBean(..)
- 29. org.JSON.JSONException:天氣沒有值
- 30. Node.js沒有Socket.IO聊天
有道理,但爲什麼我們堅持與估計2^n個獨立的概率的問題呢?什麼阻止我們將簡單的單一模型放在一些線性(甚至有限)參數的聯合分佈上(比如我們會採用一種概率方法來回歸問題)? – dkv
當然,你可以做很多參數化的技巧,但是你正在創建關於你的發行版的**假設。而在「純粹」的概率方法中 - 你不會。你把你的觀察分佈「按原樣」(例如二項式),只是估計參數。例如,如果將線性模型用於估計,則假定有很多變量,並且它與樸素貝葉斯假設獨立性所做的沒有定性差異。當然這是一個有效的方法 - 簡單地說它不再是「純粹的概率論推理」 – lejlot
@lejlot我想澄清我的理解:可以說我有一個訓練數據集'x_1 = 1,y_1 = 0,z = 1',如果我的測試數據是'x_3 = 0,y_3 = 1',那麼x 2 = 0,y_2 = 0,z = 1',這意味着'P(z = 1 | x = 1,y = 0)= 1/,那意味着'P(z = 1 | x = 0,y = 1)= 0'? –