<p>?</p><p/><h1>人工智能之核心基礎(chǔ) 機(jī)器學(xué)習(xí)</h1><p/><p>第六章 樸素貝葉斯</p><p class="image-package"><img class="uploaded-img" src="https://upload-images.jianshu.io/upload_images/30827302-81d9ee87e781b413.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="auto" height="auto"/></p>
<p><strong>6.1 貝葉斯定理基礎(chǔ)</strong></p><p><strong>?? 核心公式:用已知反推未知</strong></p><blockquote><p><strong>貝葉斯定理</strong>告訴我們:在看到某些證據(jù)后,如何更新對(duì)某件事發(fā)生的<strong>信念(概率)</strong>。</p></blockquote><p>公式如下:</p><p/><ul><li><p>??:<strong>后驗(yàn)概率</strong>?—— 看到數(shù)據(jù)??后,類別??的概率(我們要預(yù)測(cè)的!)</p></li><li><p>??:<strong>似然</strong>?—— 如果是類別?,出現(xiàn)數(shù)據(jù)??的可能性</p></li><li><p>??:<strong>先驗(yàn)概率</strong>?—— 類別??本身出現(xiàn)的頻率(比如垃圾郵件占30%)</p></li><li><p>??:<strong>證據(jù)</strong>?—— 數(shù)據(jù)??出現(xiàn)的總概率(對(duì)所有類別都一樣,可忽略)</p></li></ul><blockquote><p>??<strong>目標(biāo)</strong>:對(duì)每個(gè)類別??計(jì)算?,選<strong>概率最大</strong>的那個(gè)!</p></blockquote>
<p><strong>?? 舉個(gè)生活例子:疾病檢測(cè)</strong></p><ul><li><p>? 先驗(yàn):人群中得病概率?</p></li><li><p>? 檢測(cè)準(zhǔn)確率:得病者檢出陽(yáng)性?</p></li><li><p>? 假陽(yáng)性率:健康人誤檢?</p></li></ul><p>問(wèn):<strong>你檢測(cè)陽(yáng)性,真得病的概率是多少?</strong></p><p>用貝葉斯:</p><p/><p>?? 即使檢測(cè)陽(yáng)性,真實(shí)得病概率也不高!這就是<strong>先驗(yàn)</strong>的重要性。</p>
<p><strong>6.2 樸素貝葉斯的“樸素”假設(shè)</strong></p><p><strong>?? 核心假設(shè):</strong></p><p>給定類別?,所有特征??<strong>相互獨(dú)立</strong>!</p><p>即:</p><p/><blockquote><p>? 這個(gè)假設(shè)在現(xiàn)實(shí)中<strong>幾乎不成立</strong>(比如“免費(fèi)”和“贏錢”在垃圾郵件中常一起出現(xiàn))但神奇的是——<strong>即使假設(shè)錯(cuò)誤,樸素貝葉斯依然效果很好!</strong></p></blockquote><p>??<strong>為什么能work?</strong></p><ul><li><p>? 分類只需比較相對(duì)大小,不需要精確概率</p></li><li><p>? 對(duì)噪聲和無(wú)關(guān)特征魯棒</p></li><li><p>? 訓(xùn)練快、參數(shù)少,不易過(guò)擬合</p></li></ul>
<p><strong>6.3 常見(jiàn)樸素貝葉斯模型</strong></p><p>根據(jù)<strong>特征類型</strong>不同,選擇不同概率分布:</p><p/><p/><p><strong>?? 舉例說(shuō)明</strong></p><ul><li><p>??<strong>郵件內(nèi)容</strong>:“免費(fèi) 免費(fèi) 贏錢”</p></li><ul><li><p>? 多項(xiàng)式NB:統(tǒng)計(jì)詞頻 → “免費(fèi)”:2, “贏錢”:1</p></li><li><p>? 伯努利NB:只看是否出現(xiàn) → “免費(fèi)”:1, “贏錢”:1</p></li></ul></ul><blockquote><p>???<strong>文本分類首選:多項(xiàng)式NB</strong>(保留詞頻信息)</p></blockquote>
<p><strong>6.4 樸素貝葉斯的優(yōu)缺點(diǎn)與適用場(chǎng)景</strong></p><p><strong>? 優(yōu)點(diǎn)</strong></p><p/><p/><p><strong>? 缺點(diǎn)</strong></p><p/><p/><blockquote><p>???<strong>解決零概率</strong>:<strong>拉普拉斯平滑</strong>(Laplace Smoothing)給每個(gè)計(jì)數(shù)加1,避免0概率</p></blockquote>
<p><strong>?? 最佳適用場(chǎng)景</strong></p><ul><li><p>? ??<strong>文本分類</strong>(垃圾郵件、情感分析、新聞分類)</p></li><li><p>? ??<strong>實(shí)時(shí)預(yù)測(cè)</strong>(因推理速度極快)</p></li><li><p>? ??<strong>高維稀疏數(shù)據(jù)</strong>(如詞袋模型)</p></li><li><p>? ? 不適合:需要精確概率、特征高度相關(guān)、連續(xù)特征非高斯分布</p></li></ul><blockquote><p>???<strong>行業(yè)事實(shí)</strong>:盡管深度學(xué)習(xí)流行,<strong>樸素貝葉斯仍是工業(yè)界文本分類的baseline首選</strong>!</p></blockquote>
<p><strong>6.5 實(shí)戰(zhàn)案例 + 代碼實(shí)現(xiàn)</strong></p><p><strong>案例1:垃圾郵件過(guò)濾(多項(xiàng)式NB)</strong></p><pre>from?sklearn.datasets?import?fetch_20newsgroupsfrom?sklearn.feature_extraction.text?import?CountVectorizer,?TfidfTransformerfrom?sklearn.naive_bayes?import?MultinomialNBfrom?sklearn.pipeline?import?Pipelinefrom?sklearn.metrics?import?classification_report#?構(gòu)造垃圾郵件?vs?正常郵件數(shù)據(jù)(簡(jiǎn)化版)emails?=?[????"Free?money?now!!!",?????"Win?a?million?dollars!",?????"Hey,?how?are?you?",?????"Meeting?tomorrow?at?3pm",????"Claim?your?prize?today!",????"Can?we?reschedule?the?call?"]labels?=?[1,?1,?0,?0,?1,?0]??#?1=垃圾,?0=正常#?創(chuàng)建管道:詞袋?→?TF-IDF?→?多項(xiàng)式NBtext_clf?=?Pipeline([????('vect',?CountVectorizer()),??????????#?生成詞頻????('tfidf',?TfidfTransformer()),????????#?轉(zhuǎn)TF-IDF????('clf',?MultinomialNB(alpha=1.0))?????#?alpha=拉普拉斯平滑參數(shù)])#?訓(xùn)練text_clf.fit(emails,?labels)#?預(yù)測(cè)新郵件new_emails?=?["Congratulations!?You?won?free?cash!",?"Let's?have?lunch"]preds?=?text_clf.predict(new_emails)for?email,?pred?inzip(new_emails,?preds):????print(f"'{email}'?→?{'垃圾郵件'?if?pred?==?1?else?'正常郵件'}")</pre><p>輸出:</p><pre>'Congratulations!?You?won?free?cash!'?→?垃圾郵件'Let's?have?lunch'?→?正常郵件</pre>
<p><strong>案例2:電影評(píng)論情感分析(正面/負(fù)面)</strong></p><pre>from?sklearn.feature_extraction.text?import?TfidfVectorizerfrom?sklearn.naive_bayes?import?MultinomialNBfrom?sklearn.model_selection?import?train_test_splitfrom?sklearn.metrics?import?accuracy_score#?模擬數(shù)據(jù)reviews?=?[????"This?movie?is?amazing!",?????"I?love?the?acting",?????"Terrible?film,?waste?of?time",????"Boring?and?slow",????"Great?story?and?visuals",????"Awful?dialogue"]sentiments?=?[1,?1,?0,?0,?1,?0]??#?1=正面,?0=負(fù)面#?劃分?jǐn)?shù)據(jù)X_train,?X_test,?y_train,?y_test?=?train_test_split(????reviews,?sentiments,?test_size=0.3,?random_state=42)#?向量化?+?訓(xùn)練vectorizer?=?TfidfVectorizer()X_train_vec?=?vectorizer.fit_transform(X_train)X_test_vec?=?vectorizer.transform(X_test)nb?=?MultinomialNB(alpha=0.5)nb.fit(X_train_vec,?y_train)#?評(píng)估y_pred?=?nb.predict(X_test_vec)print("準(zhǔn)確率:",?accuracy_score(y_test,?y_pred))#?查看預(yù)測(cè)概率proba?=?nb.predict_proba(X_test_vec)for?i,?text?inenumerate(X_test):????print(f"'{text}'?→?正面概率:?{proba[i][1]:.2f}")</pre>
<p><strong>案例3:高斯NB —— 鳶尾花分類(連續(xù)特征)</strong></p><pre>from?sklearn.naive_bayes?import?GaussianNBfrom?sklearn.datasets?import?load_irisfrom?sklearn.model_selection?import?train_test_splitX,?y?=?load_iris(return_X_y=True)X_train,?X_test,?y_train,?y_test?=?train_test_split(X,?y,?test_size=0.3,?random_state=42)gnb?=?GaussianNB()gnb.fit(X_train,?y_train)print("準(zhǔn)確率:",?gnb.score(X_test,?y_test))</pre>
<p><strong>?? 本章總結(jié)</strong></p><ul><li><p>??<strong>樸素貝葉斯 = 貝葉斯定理 + 特征獨(dú)立假設(shè)</strong></p></li><li><p>??<strong>文本分類用多項(xiàng)式NB,連續(xù)數(shù)據(jù)用高斯NB</strong></p></li><li><p>??<strong>訓(xùn)練快、內(nèi)存小、對(duì)小數(shù)據(jù)友好</strong></p></li><li><p>??<strong>雖“樸素”,但在文本任務(wù)中常勝!</strong></p></li></ul><blockquote><p>???<strong>建議</strong>:下次做文本分類項(xiàng)目,<strong>先跑一個(gè)樸素貝葉斯作為baseline</strong>!它可能比你想象的更強(qiáng),而且?guī)仔写a就能搞定!</p></blockquote>
<h1>資料關(guān)注</h1><p>公眾號(hào):咚咚王gitee:https://gitee.com/wy18585051844/ai_learning</p><p class="image-package"><img class="uploaded-img" src="https://upload-images.jianshu.io/upload_images/30827302-269a85233e128101.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="auto" height="auto"/></p><p>《Python編程:從入門到實(shí)踐》《利用Python進(jìn)行數(shù)據(jù)分析》《算法導(dǎo)論中文第三版》《概率論與數(shù)理統(tǒng)計(jì)(第四版) (盛驟) 》《程序員的數(shù)學(xué)》《線性代數(shù)應(yīng)該這樣學(xué)第3版》《微積分和數(shù)學(xué)分析引論》《(西瓜書)周志華-機(jī)器學(xué)習(xí)》《TensorFlow機(jī)器學(xué)習(xí)實(shí)戰(zhàn)指南》《Sklearn與TensorFlow機(jī)器學(xué)習(xí)實(shí)用指南》《模式識(shí)別(第四版)》《深度學(xué)習(xí) deep learning》伊恩·古德費(fèi)洛著 花書《Python深度學(xué)習(xí)第二版(中文版)【純文本】 (登封大數(shù)據(jù) (Francois Choliet)) (Z-Library)》《深入淺出神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)+(邁克爾·尼爾森(Michael+Nielsen)》《自然語(yǔ)言處理綜論 第2版》《Natural-Language-Processing-with-PyTorch》《計(jì)算機(jī)視覺(jué)-算法與應(yīng)用(中文版)》《Learning OpenCV 4》《AIGC:智能創(chuàng)作時(shí)代》杜雨+&+張孜銘《AIGC原理與實(shí)踐:零基礎(chǔ)學(xué)大語(yǔ)言模型、擴(kuò)散模型和多模態(tài)模型》《從零構(gòu)建大語(yǔ)言模型(中文版)》《實(shí)戰(zhàn)AI大模型》《AI 3.0》</p><p>?</p><p/><p/><p/><p/>