原创 Trie樹的構建和應用

Trie樹又叫“字典樹”,是一種在字符串計算中極爲常見的數據結構。在介紹Trie樹的具體結構之前,我們首先要搞明白的就是Trie樹究竟是用來解決哪一類問題的,爲什麼這類問題可以用Trie樹高效的解決。 我們爲什麼用Trie樹 1.

原创 lintcode - Reach a Number

題目描述:我簡單將題目用漢語描述一下。說初始位置在0,給定一個目標值target(target是一個整數),現在讓你每次走一步,每次走的步長和已經走的步數相等(第一次走1,第二次走2,。。。),每次可以向左或者向右走(也就是加正數

原创 SVM解釋:四、線性不可分的情況

之前的博客介紹了在數據爲線性可分的情況下,如何用SVM對數據集訓練,從而得到一個線性分類器,也就是超平面WX+b=0WX+b=0 . 但是我已經強調過多次,線性可分的情況有相當的侷限,所以SVM的終極目標還是要解決數據線性不可分的

原创 矩陣的分解:滿秩分解和奇異值分解

本文主要介紹矩陣的兩種經典的分解算法:滿秩分解和奇異值分解。這兩塊內容非常基礎,同時卻又非常重要,在機器學習,模式識別,人工智能等領域有着非常廣泛的應用。 滿秩分解 定義與性質 定義1 滿秩分解:對於m×nm×n 的矩陣AA ,假

原创 概率檢索模型

概率檢索模型是當前信息檢索領域效果最好的模型之一,它基於對已有反饋結果的分析,根據貝葉斯原理爲當前查詢排序。 我在之前的博客 樸素貝葉斯分類 中介紹瞭如何用樸素貝葉斯算法對數據進行分類,其實概率檢索模型的基本原理與樸素貝葉斯分類是

原创 樸素貝葉斯分類

之前,我探討過“決策樹歸納”的分類方法(詳見:決策樹歸納),本文我將介紹另一中比決策樹更加簡單的,用概率方法分類的技術——“樸素貝葉斯分類”。 貝葉斯定理 貝葉斯定理是概率論中非常簡單基礎的定理,其解決的核心點在於根據已有信息,對

原创 Apriori算法解析

背景介紹 維克多邁爾在《大數據時代》中,提出了大數據時代跟傳統的信息時代相比,最本質的三個思維變革:1. 要全體數據,而不僅是樣本;2. 要混雜,而不要效率偏低的精確;3. 要相關關係,而不是因果關係。這第三條說的就是數據挖掘中,

原创 B樹與B+樹

B樹是爲實現高效的磁盤存取而設計的多叉平衡搜索樹。這個概念在文件系統,數據庫系統中非常重要。當然,有關於B樹的產生,發展,結構等等方面的介紹已經非常詳細,所以本文只是介紹有關於B樹和B+樹最核心的知識點,也算是我本人的學習筆記。至

原创 淺談PageRank

1996年,兩位還在斯坦福大學攻讀計算機理學博士學位的研究生,開始了一項研究:如何對互聯網上“成萬上億”的網頁進行排序。在當時看來,這只是發生在斯坦福的一個普通課題研究而已,然而包括其研究者在內,都沒有意識到,這項研究最後的成果,

原创 裝袋,AdaBoost和隨機森林

裝袋,AdaBoost和隨機森林都屬於組合分類方法的例子,用於改善單個分類模型的學習效果。 我們知道,在很多情況下,面對大量複雜的訓練元組,如果只使用一種分類模型構造分類器,很可能對於某些元組是有“硬傷”的,預測結果很不準確。所以

原创 並查集(Union-Find)算法詳解

並查集(Union-Find)是解決動態連通性問題的一類非常高效的數據結構。本文中,我將盡我所能用最簡單,最清晰的邏輯展示出並查集的構造過程,同時還將對其中的關鍵步驟給出相應的Python代碼。 動態連通性 可以想象一張地圖上有很

原创 決策樹歸納

分類與監督學習 現實中,我們經常會遇到這樣的問題:銀行收到用戶的信用卡申請表。當然,這是一張帶有用戶豐富信息的申請表,比如年齡,學歷,收入,信用記錄等等。那麼銀行的工作人員如何根據這些信息判別這個用戶是否是誠信的,是否應該通過他的

原创 聚類分析: k-means算法

k-means算法 聚類分析是數據分析中,非常重要的一類課題。他的作用是將大量的無標籤數據通過計算,自動爲其標註標籤。衆所周知,這一點是區別於數據分類技術的。而現實的場景中,無標籤的數據顯然多於有標籤數據,因此,我在這裏也是先說聚

原创 Kd-tree原理與實現

數據應用當中,最近鄰查詢是非常重要的功能。不論是信息檢索,推薦系統,還是數據庫查詢,最近鄰查詢(Nearst Neighbor Search)可謂無處不在。它要實現的是幫助我們找到數據中和查詢最接近的一個或多個數據條目(前者叫NN

原创 Python--matplotlib繪圖

用Python繪製圖表在工作中是一項非常有用的技能,雖然說強大的matlab基本可以滿足我們所有的繪圖需求,但是在有些情況下,使用Python繪圖,讓圖表直接可以直接隨着Python程序的運行而產生。那這種便捷,也是非常有價值的。