前言
計算機是如何解決問題的?你的小GPS怎么能在無數可能的路線中找到最快的到達目的地的路線,而且只需要幾秒鐘?當你在網上購物時,如何保護你的信用卡號碼不被人截獲? 這些問題的答案,以及其他許多問題的答案,就是算法。我寫這本書是為了為你解開算法的奧秘。我與人合著了教科書《算法導論》。這是一本神奇的書(當然,我是有偏見的),但它在某些方面相當專業。這本書不是算法導論。甚至都不是教科書。它既不廣泛也不深入計算機算法領域,它沒有規定地教授設計計算機算法的技術,它包含為讀者解決一個問題或練習。那么這本書到底是什么呢? 這是一個你可以開始的地方,如果
一些關于計算機算法的書是概念性的,很少有技術細節。有些書充滿了技術上的精確性。有些介于兩者之間。每一種類型的書都有自己的位置。我會把這本書放在中間類別。是的,它有一些數學,而且在某些地方變得相當精確,但我避免深入討論細節(除了可能在書的最后,我無法控制自己)。 我覺得這本書有點像一道開胃菜。假設你去一家意大利餐館點了一份開胃菜,吃完再決定是否點剩下的菜。它來了,你吃了它。也許你不喜歡開胃菜,決定不點別的。也許你喜歡它,但是它讓你覺得很飽,所以你不需要點其他東西。也許你喜歡開胃菜,但它并沒有填飽你的肚子,你期待著這頓飯剩下的部分。把這本書當作開胃菜,我希望能得到后兩種結果中的一種: 要么你讀了這本書,感到滿意,覺得沒必要再深入研究算法的世界; 或者你非常喜歡你在這里讀到的東西,想要了解更多。每一章的結尾都有一個標題為“進一步閱讀”的章節,它將引導你閱讀深入主題的書籍和文章。
你能從這本書中學到什么?
我不能告訴你你將從這本書中學到什么。以下是我想讓你從這本書中學到的東西:
目錄
題目 Algorithms in C:C語言算法實現
關鍵詞
算法設計,C語言,編程
簡介
本書的目的是研究各種重要且有用的算法:解決適合計算機實現的問題的方法。 我們將處理許多不同的應用領域,始終嘗試著重于重要的知識和學習有趣的“基本”算法。 由于涉及的領域和算法眾多,因此我們無法深入研究許多方法。 但是,我們將嘗試在每種算法上花費足夠的時間,以了解其基本特征并尊重其微妙之處。 簡而言之,我們的目標是學習當今計算機上使用的大量最重要的算法,并且足以使用和欣賞它們。
要很好地學習算法,必須實現并運行它。 因此,理解本書中介紹的程序的推薦策略是實施和測試它們,嘗試使用變體,然后對實際問題進行嘗試。 我們將使用C編程語言來討論和實現大多數算法。 但是,由于我們使用的是語言的較小子集,因此我們的程序可以輕松轉換為許多其他現代編程語言。
本書的讀者應該至少有一年的高級和低級語言編程經驗。 另外,雖然在第3章和第4章中對此材料進行了詳細的介紹,但對簡單數據結構(如數組,堆棧,隊列和T恤)上的基本算法進行一些接觸可能會有所幫助,盡管在第3章和第4章中對此材料進行了詳細介紹。 還假定了其他基本計算機科學概念。 (我們將在適當的時候簡要地回顧這些材料,但始終在解決特定問題的上下文中。)我們處理的一些應用領域需要基本演算的知識。 我們還將使用一些非常基本的材料,包括lin-ear代數,幾何和離散數學,但是這些主題的先前知識不是必需的。
目錄
這本書向讀者介紹點估計、置信區間和統計檢驗。基于線性模型的一般理論,本文對以下內容進行了深入的概述:固定效應、隨機效應和混合效應模型的方差分析;在擴展到非線性模型之前,回歸分析也首先出現在具有固定、隨機和混合效應的線性模型中;統計多決策問題,如統計選擇程序(Bechhofer和Gupta)和順序測試;從數理統計的角度設計實驗。大多數分析方法都補充了最小樣本量的公式。這些章節還包含了解答的提示練習。
這本書的第五版繼續講述如何運用概率論來深入了解真實日常的統計問題。這本書是為工程、計算機科學、數學、統計和自然科學的學生編寫的統計學、概率論和統計的入門課程。因此,它假定有基本的微積分知識。
第一章介紹了統計學的簡要介紹,介紹了它的兩個分支:描述統計學和推理統計學,以及這門學科的簡短歷史和一些人,他們的早期工作為今天的工作提供了基礎。
第二章將討論描述性統計的主題。本章展示了描述數據集的圖表和表格,以及用于總結數據集某些關鍵屬性的數量。
為了能夠從數據中得出結論,有必要了解數據的來源。例如,人們常常假定這些數據是來自某個總體的“隨機樣本”。為了確切地理解這意味著什么,以及它的結果對于將樣本數據的性質與整個總體的性質聯系起來有什么意義,有必要對概率有一些了解,這就是第三章的主題。本章介紹了概率實驗的思想,解釋了事件概率的概念,并給出了概率的公理。
我們在第四章繼續研究概率,它處理隨機變量和期望的重要概念,在第五章,考慮一些在應用中經常發生的特殊類型的隨機變量。給出了二項式、泊松、超幾何、正規、均勻、伽瑪、卡方、t和F等隨機變量。
這本教科書通過提供實用的建議,使用直接的例子,并提供相關應用的引人入勝的討論,以一種容易理解的方式介紹了基本的機器學習概念。主要的主題包括貝葉斯分類器,最近鄰分類器,線性和多項式分類器,決策樹,神經網絡,和支持向量機。后面的章節展示了如何通過“推進”的方式結合這些簡單的工具,如何在更復雜的領域中利用它們,以及如何處理各種高級的實際問題。有一章專門介紹流行的遺傳算法。
這個修訂的版本包含關于工業中機器學習的實用應用的關鍵主題的三個全新的章節。這些章節研究了多標簽域,無監督學習和它在深度學習中的使用,以及歸納邏輯編程的邏輯方法。許多章節已經被擴展,并且材料的呈現已經被增強。這本書包含了許多新的練習,許多解決的例子,深入的實驗,和獨立工作的計算機作業。
//link.springer.com/book/10.1007/978-3-319-63913-0#about
作為布爾邏輯的替代
雖然邏輯是理性推理的數學基礎和計算的基本原理,但它僅限于信息既完整又確定的問題。然而,許多現實世界的問題,從金融投資到電子郵件過濾,本質上是不完整或不確定的。概率論和貝葉斯計算共同提供了一個處理不完整和不確定數據的框架。
不完全和不確定數據的決策工具和方法
貝葉斯編程強調概率是布爾邏輯的替代選擇,它涵蓋了為真實世界的應用程序構建概率程序的新方法。本書由設計并實現了一個高效概率推理引擎來解釋貝葉斯程序的團隊編寫,書中提供了許多Python示例,這些示例也可以在一個補充網站上找到,該網站還提供了一個解釋器,允許讀者試驗這種新的編程方法。
原則和建模
只需要一個基本的數學基礎,本書的前兩部分提出了一種新的方法來建立主觀概率模型。作者介紹了貝葉斯編程的原理,并討論了概率建模的良好實踐。大量簡單的例子突出了貝葉斯建模在不同領域的應用。
形式主義和算法
第三部分綜合了已有的貝葉斯推理算法的工作,因為需要一個高效的貝葉斯推理引擎來自動化貝葉斯程序中的概率演算。對于想要了解貝葉斯編程的形式主義、主要的概率模型、貝葉斯推理的通用算法和學習問題的讀者,本文提供了許多參考書目。
常見問題
第四部分連同詞匯表包含了常見問題的答案。作者比較了貝葉斯規劃和可能性理論,討論了貝葉斯推理的計算復雜性,討論了不完全性的不可約性,討論了概率的主觀主義和客觀主義認識論。
貝葉斯計算機的第一步
創建一個完整的貝葉斯計算框架需要新的建模方法、新的推理算法、新的編程語言和新的硬件。本書著重于方法論和算法,描述了實現這一目標的第一步。它鼓勵讀者探索新興領域,例如仿生計算,并開發新的編程語言和硬件架構。
高斯過程(GPs)為核機器的學習提供了一種有原則的、實用的、概率的方法。在過去的十年中,GPs在機器學習社區中得到了越來越多的關注,這本書提供了GPs在機器學習中理論和實踐方面長期需要的系統和統一的處理。該書是全面和獨立的,針對研究人員和學生在機器學習和應用統計學。
這本書處理監督學習問題的回歸和分類,并包括詳細的算法。提出了各種協方差(核)函數,并討論了它們的性質。從貝葉斯和經典的角度討論了模型選擇。討論了許多與其他著名技術的聯系,包括支持向量機、神經網絡、正則化網絡、相關向量機等。討論了包括學習曲線和PAC-Bayesian框架在內的理論問題,并討論了幾種用于大數據集學習的近似方法。這本書包含說明性的例子和練習,和代碼和數據集在網上是可得到的。附錄提供了數學背景和高斯馬爾可夫過程的討論。
在線推薦系統幫助用戶找到電影、工作、餐館——甚至愛情!這是一種將統計數據、人口統計數據和查詢條件相結合以獲得令他們滿意的結果的藝術。學習建立一個推薦系統的正確方法:它可以使你的應用成功或失敗!
對這項技術
推薦系統無處不在,幫助你找到從電影到工作,從餐館到醫院,甚至是愛情的一切。利用行為和人口統計數據,這些系統可以預測用戶在特定時間最感興趣的內容,從而得到高質量、有序、個性化的建議。推薦系統實際上是保持網站內容最新、有用和有趣的必要手段。
關于這本書
實用推薦系統解釋如何推薦系統的工作,并顯示如何創建和應用它們為您的網站。在介紹了基礎知識之后,您將看到如何收集用戶數據并生成個性化的推薦。您將學習如何使用最流行的推薦算法,并在Amazon和Netflix等網站上看到它們的實例。最后,這本書涵蓋了規模問題和其他問題,你會遇到的網站成長。
里面有什么
數據結構和算法的更新、創新方法
這個權威的指南由其領域的專家組成的作者團隊編寫,它甚至解釋了最困難的數學概念,這樣您就可以清楚地理解c++中的數據結構和算法。
權威的作者團隊采用面向對象的設計范式,使用c++作為實現語言,同時還提供基本算法的直覺和分析。
創建健壯的軟件需要使用高效的算法,但是程序員在問題出現之前很少考慮這些算法。這個更新版的算法簡而言之描述了大量現有的算法,用于解決各種各樣的問題,并幫助您選擇和實現適合您需要的正確算法—只需足夠的數學知識就可以讓您理解和分析算法的性能。
本書的重點是應用,而不是理論,它提供了幾種編程語言的高效代碼解決方案,您可以輕松地適應特定的項目。每個主要算法都以設計模式的形式呈現,其中包含幫助您理解為什么以及何時使用該算法的信息。
有了這本書,你將: 解決特定的編碼問題或改進現有解決方案的性能 快速定位與您想要解決的問題相關的算法,并確定為什么使用特定的算法是正確的 通過實現技巧獲得C、c++、Java和Ruby中的算法解決方案 了解一個算法的預期性能,以及它需要在最佳狀態下執行的條件 發現相似的設計決策對不同算法的影響 學習先進的數據結構,提高算法的效率