來源:秦路 時間:2017-02-09 10:53:03 作者:
少年,你渴望力量么?
這才是真正的力量,年輕人!
這是Swami Chandrasekaran所繪制的一張地圖。名字叫MetroMap to Data Scientist(數(shù)據(jù)科學家之路),別稱怎么死都不知道的。
數(shù)據(jù)科學家是近年火爆興起的職位,它是數(shù)據(jù)分析師的后續(xù)進階,融合了統(tǒng)計、業(yè)務(wù)、編程、機器學習、數(shù)據(jù)工程的復(fù)合型職位。
該地圖一共十條路線,分別是基礎(chǔ)原理、統(tǒng)計學、編程能力、機器學習、文本挖掘/自然語言處理、數(shù)據(jù)可視化、大數(shù)據(jù)、數(shù)據(jù)獲取、數(shù)據(jù)清理、常用工具。條條路線都不是人走的。因為網(wǎng)上只有英文版,我將其翻譯成中文,并對內(nèi)容作一些解釋和補充。
該指南主要涉及硬技能,數(shù)據(jù)科學家的另外一個核心業(yè)務(wù)能力,這里沒有涉及,它并不代表不重要。
——————
Fundamentals原理
算是多學科的交叉基礎(chǔ),屬于數(shù)據(jù)科學家的必備素質(zhì)。
Matrices &Linear Algebra
矩陣和線性代數(shù)
矩陣(Matrix)是一個按照長方陣列排列的復(fù)數(shù)或?qū)崝?shù)集合。涉及到的機器學習應(yīng)用有SVD、PCA、最小二乘法、共軛梯度法等。
線性代數(shù)是研究向量、向量空間、線性變換等內(nèi)容的數(shù)學分支。向量是線性代數(shù)最基本的內(nèi)容。中學時,數(shù)學書告訴我們向量是空間(通常是二維的坐標系)中的一個箭頭,它有方向和數(shù)值。在數(shù)據(jù)科學家眼中,向量是有序的數(shù)字列表。線性代數(shù)是圍繞向量加法和乘法展開的。
矩陣和線性代數(shù)有什么關(guān)系呢?當向量進行線性變換時,這種變換可以想象成幾何意義上的線性擠壓和拉扯,而矩陣則是描述這種變換的信息,由變換后的基向量決定。
矩陣和線性代數(shù)是一體的,矩陣是描述線性代數(shù)的參數(shù)。它們構(gòu)成了機器學習的龐大基石。
Hash Functions,Binary Tree,O(n)
哈希函數(shù),二叉樹,時間復(fù)雜度
哈希函數(shù)也叫散列函數(shù),它能將任意的數(shù)據(jù)作為輸入,然后輸出固定長度的數(shù)據(jù),這個數(shù)據(jù)叫哈希值也叫散列值,用h表示,此時h就輸入數(shù)據(jù)的指紋。
哈希函數(shù)有一個基本特性,如果兩個哈希值不相同,那么它的輸入也肯定不相同。反過來,如果兩個哈希值是相同的,那么輸入值可能相同,也可能不相同,故無法通過哈希值來判斷輸入。
哈希函數(shù)常用在數(shù)據(jù)結(jié)構(gòu)、密碼學中。
二叉樹是計算機科學的一個概念,它是一種樹形結(jié)構(gòu)。在這個結(jié)構(gòu)中,每個節(jié)點最多有兩個子樹(左子樹和右子樹),子樹次序不能顛倒。二叉樹又有多種形態(tài)。
二叉樹是樹這類數(shù)據(jù)結(jié)構(gòu)的第一種樹,后續(xù)還有紅黑樹等,很多語言的set,map都是用二叉樹寫的。
時間復(fù)雜度是編程中的一個概念,它描述了執(zhí)行算法需要的時間。不同算法有不同的時間復(fù)雜度,例如快排、冒泡等。
簡便的計算方法是看有幾個for循環(huán),一個是O(n),兩個是O(n^2),三個是O(n^3)。當復(fù)雜度是n^3+n^2時,則取最大的量級n^3即可。
與之相對應(yīng)的還有空間復(fù)雜度,它代表的是算法占用的內(nèi)存空間。算法通常要在時間和內(nèi)存中取得一個平衡,既內(nèi)存換時間,或者時間換內(nèi)存。
Relational Algebra
關(guān)系代數(shù)
它是一種抽象的查詢語言?;镜拇鷶?shù)運算有選擇、投影、集合并、集合差、笛卡爾積和更名。
關(guān)系型數(shù)據(jù)庫就是以關(guān)系代數(shù)為基礎(chǔ)。在SQL語言中都能找到關(guān)系代數(shù)相應(yīng)的計算。
Inner、Outer、Cross、Theta Join
內(nèi)連接、外連接、交叉連接、θ連接
這是關(guān)系模型中的概念,也是數(shù)據(jù)庫的查詢基礎(chǔ)。
內(nèi)連接,只連接匹配的行,又叫等值連接。
外連接,連接左右兩表所有行,不論它們是否匹配。
交叉連接是對兩個數(shù)據(jù)集所有行進行笛卡爾積運算,比如一幅撲克牌,其中有A集,是13個牌的點數(shù)集合,集合B則是4個花色的集合,集合A和集合B的交叉鏈接就是4*13共52個。
θ連接使用where子句引入連接條件,θ連接可以視作交叉連接的一個特殊情況。where 可以是等值,也可以是非等值如大于小于。
不同數(shù)據(jù)庫的join方式會有差異。
CAP Theorem
CAP定理
指的是在一個分布式系統(tǒng)中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區(qū)容錯性),三者不可得兼。
一致性(C):在分布式系統(tǒng)中的所有數(shù)據(jù)備份,在同一時刻是否同樣的值。(等同于所有節(jié)點訪問同一份最新的數(shù)據(jù)副本)
可用性(A):在集群中一部分節(jié)點故障后,集群整體是否還能響應(yīng)客戶端的讀寫請求。(對數(shù)據(jù)更新具備高可用性)
分區(qū)容錯性(P):以實際效果而言,分區(qū)相當于對通信的時限要求。系統(tǒng)如果不能在時限內(nèi)達成數(shù)據(jù)一致性,就意味著發(fā)生了分區(qū)的情況,必須就當前操作在C和A之間做出選擇。
數(shù)據(jù)系統(tǒng)設(shè)計必須在三個性能方便做出取舍,不同的數(shù)據(jù)庫,CAP傾向性不同。
tabular data
列表數(shù)據(jù)
即二維的表格數(shù)據(jù),關(guān)系型數(shù)據(jù)庫的基礎(chǔ)。
DataFrames &Series
Pandas數(shù)據(jù)結(jié)構(gòu)
Series是一個一維數(shù)據(jù)對象,由一組NumPy的array和一組與之相關(guān)的索引組成。Python字典和數(shù)組都能轉(zhuǎn)換成數(shù)組。Series以0為開始,步長為1作為索引。
x = Series([1,2,3,4,5])x0 11 22 33 44 5
DataFrames是一個表格型的數(shù)據(jù),是Series的多維表現(xiàn)。DataFrames即有行索引也有列索引,可以看作Series組成的字典。
Sharding
分片
分片不是一種特定的功能或者工具,而是技術(shù)細節(jié)上的抽象處理,是水平拓展的解決方法。一般數(shù)據(jù)庫遇到性能瓶頸,采用的是Scale Up,即向上增加性能的方法,但單個機器總有上限,于是水平拓展應(yīng)運而生。
分片是從分區(qū)(Partition)的思想而來,分區(qū)通常針對表和索引,而分片可以跨域數(shù)據(jù)庫和物理假期。比如我們將中國劃分南北方,南方用戶放在一個服務(wù)器上,北方用戶放在另一個服務(wù)器上。
實際形式上,每一個分片都包含數(shù)據(jù)庫的一部分,可以是多個表的內(nèi)容也可以是多個實例的內(nèi)容。當需要查詢時,則去需要查詢內(nèi)容所在的分片服務(wù)器上查詢。它是集群,但不同于Hadoop的MR。
如果能夠保證數(shù)據(jù)量很難超過現(xiàn)有數(shù)據(jù)庫服務(wù)器的物理承載量,那么只需利用MySQL5.1提供的分區(qū)(Partition)功能來改善數(shù)據(jù)庫性能即可;否則,還是考慮應(yīng)用Sharding理念。另外一個流傳甚廣的觀點是:我們的數(shù)據(jù)也許沒有那么大,Hadoop不是必需的,用sharding即可。
OLAP
聯(lián)機分析處理(Online Analytical Processing)
它是數(shù)據(jù)倉庫系統(tǒng)主要的應(yīng)用,主要用于復(fù)雜的分析操作。
針對數(shù)據(jù)分析人員,數(shù)據(jù)是多維數(shù)據(jù)。查詢均是涉及到多表的復(fù)雜關(guān)聯(lián)查詢,為了支持數(shù)據(jù)業(yè)務(wù)系統(tǒng)的搭建,OLAP可以想象成一個多維度的立方體,以維度(Dimension)和度量(Measure)為基本概念。我們用到的多維分析就是OLAP的具象化應(yīng)用。
OLAP更偏向于傳統(tǒng)企業(yè),互聯(lián)網(wǎng)企業(yè)會靈活變動一些。另外還有一個OLTP的概念。
Multidimensional Data Model
多維數(shù)據(jù)模型。
它是OLAP處理生成后的數(shù)據(jù)立方體。它提供了最直觀觀察數(shù)據(jù)的方法。
涉及鉆取,上卷,切片,切塊,旋轉(zhuǎn)等操作,就是把上面的立方體變變變啦。
ETL
ETL是抽?。╡xtract)、轉(zhuǎn)換(transform)、加載(load)的過程。常用在數(shù)據(jù)倉庫。
整個流程是從數(shù)據(jù)源抽取數(shù)據(jù),結(jié)果數(shù)據(jù)清洗和轉(zhuǎn)換,最終將數(shù)據(jù)以特定模型加載到數(shù)據(jù)倉庫中去。
ETL是一個古老的概念,在以前SQL數(shù)據(jù)倉庫時代和OLAP伴隨而生,在現(xiàn)在日新月異的技術(shù)生態(tài)圈,會逐步演進到Hadoop相關(guān)的技術(shù)了。
Reporting vs BI vs Analytics
報表與商業(yè)智能與分析
這是BI的三個組成部分。Reporting是數(shù)據(jù)報表。利用表格和圖表呈現(xiàn)數(shù)據(jù)。報表通常是動態(tài)多樣的。數(shù)個報表的集合統(tǒng)稱為Dashboard。
BI是商業(yè)智能,是對企業(yè)的數(shù)據(jù)進行有效整合,通過數(shù)據(jù)報表快速作出決策。
Analytics是數(shù)據(jù)分析,基于數(shù)據(jù)報表作出分析。包括趨勢的波動,維度的對比等。
JSON &XML
JSON是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,也易于機器解析和生成。
JSON的語法規(guī)則是:
{ }保存對象;
[ ]保存數(shù)組;
數(shù)據(jù)由逗號分隔;
數(shù)據(jù)在鍵值對中;
下面范例就是一組JSON值
{ "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }}
XML是可拓展標記語言,被設(shè)計用來傳輸和存儲數(shù)據(jù),與之對應(yīng)的HTML則是顯示數(shù)據(jù)。XML和HTML服務(wù)于不同目的,XML是不作為的。
GeorgeJohnReminder
Don't forget the meeting!上面的范例,純粹就是用來傳輸?shù)囊欢涡畔?,沒有任何意義。
NoSQL
泛指非關(guān)系型的數(shù)據(jù)庫,意為Not Only SQL。
NoSQL是隨著大數(shù)據(jù)時代發(fā)展起來的,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在高并發(fā)大規(guī)模多數(shù)據(jù)類型的環(huán)境下力不從心,而NoSQL就是為了解決這些問題而產(chǎn)生的。
NoSQL主要分為四大類:
鍵值KeyValue數(shù)據(jù)庫
這類數(shù)據(jù)庫會使用哈希表,哈希表中有一個特定的鍵指向一個特定的值,KeyValue的特點是去中心化,不涉及業(yè)務(wù)關(guān)系。代表Redis。
列數(shù)據(jù)庫
這類數(shù)據(jù)庫用于分布式海量存儲,和KeyValue的區(qū)別在于這里的Key指向的是列。橫向拓展性好,適合大數(shù)據(jù)量高IO。代表HBase,Cassandra
文檔型數(shù)據(jù)庫
屬于KeyValue數(shù)據(jù)庫的升級版,允許嵌套鍵值。文檔是處理信息的基本單位,一個文檔等于一個關(guān)系數(shù)據(jù)庫的一條記錄。
因為文檔的自由性,文檔型數(shù)據(jù)庫適合復(fù)雜、松散、無結(jié)構(gòu)或半結(jié)構(gòu)化的數(shù)據(jù)模型,和JSON類似,叫做BSON(MongoDB的存儲格式)。代表MongoDB
圖形數(shù)據(jù)庫
基于圖論算法的數(shù)據(jù)庫,將數(shù)據(jù)集以圖形元素(點、線、面)建立起來。這種數(shù)據(jù)庫常應(yīng)用在社交網(wǎng)絡(luò)關(guān)系鏈,N度關(guān)系等。代表Neo4j
Regex
正則表達式(Regular Expression)
正則表通常被用來檢索、替換那些符合某個模式(規(guī)則)的字符串。通過特定字符的組合,對字符串進行邏輯過濾。例如注冊賬號時檢查對方郵件格式對不對啊,手機號格式對不對啊。
學起來靠記,記了也會忘,每次用得查,查了還得檢驗。網(wǎng)上記憶口訣一堆圖表,相關(guān)網(wǎng)站也不少,仁者見仁了。
Vendor Landscape
不懂,供應(yīng)商風景?
Env Setup
環(huán)境安裝
想了半天,Env應(yīng)該是環(huán)境安裝的意思,IDE啊,GUI啊等等全部安裝上去,再調(diào)各種路徑啥的。針對數(shù)據(jù)科學家,Anaconda + Rstudio用的比較多。
——————
Statistics 統(tǒng)計
統(tǒng)計是數(shù)據(jù)科學家的核心能力之一,機器學習就是基于統(tǒng)計學原理的,我不算精通這一塊,許多內(nèi)容都是網(wǎng)絡(luò)教科書式的語言。都掌握后再重寫一遍。
Pick a Dataset(UCI Repo)
找數(shù)據(jù)(UCI數(shù)據(jù)集)
UCI數(shù)據(jù)庫是加州大學歐文分校(University of CaliforniaIrvine)提出的用于機器學習的數(shù)據(jù)庫,這個數(shù)據(jù)庫目前共有335個數(shù)據(jù)集,其數(shù)目還在不斷增加,可以拿來玩機器學習。網(wǎng)上搜的到。另外的數(shù)據(jù)來源是Kaggle競賽等。
最經(jīng)典的數(shù)據(jù)莫過于Iris了。
Deive Statistics(mean, median, range, SD, Var)
描述性統(tǒng)計(均值,中位數(shù),極差,標準差,方差)
均值也叫平均數(shù),是統(tǒng)計學中的概念。小學學習的算數(shù)平均數(shù)是其中的一種均值,除此以外還有眾數(shù)和中位數(shù)。
中位數(shù)可以避免極端值,在數(shù)據(jù)呈現(xiàn)偏態(tài)的情況下會使用。
極差就是最大值減最小值。
標準差,也叫做均方差?,F(xiàn)實意義是表述各數(shù)據(jù)偏離真實值的情況,反映的是一組數(shù)據(jù)的離散程度。平均數(shù)相同的兩組數(shù)據(jù),如[1,9]和[4,6],平均數(shù)相同,標準差不一樣,前者的離散程度更大。
方差,是標準差的平方。方差和標準差的量綱是一致的。在實際使用過程中,標準差需要比方差多一步開平方的運算,但它在描述現(xiàn)實意義上更貼切,各有優(yōu)劣。
Exploratory Data Analysis
獲得一組數(shù)據(jù)集時,通常分析師需要掌握數(shù)據(jù)的大體情況,此時就要用到探索性數(shù)據(jù)分析。
主要是兩類:
圖形法,通過直方圖、箱線圖、莖葉圖、散點圖快速匯總描述數(shù)據(jù)。
數(shù)值法:觀察數(shù)據(jù)的分布形態(tài),包括中位數(shù)、極值、均值等,觀察多變量之間的關(guān)系。
探索性數(shù)據(jù)分析不會涉及到復(fù)雜運算,而是通過簡單的方式對數(shù)據(jù)有一個大概的了解,然后才去深入挖掘數(shù)據(jù)價值,在Python和R中,都有相關(guān)的summary函數(shù)。
Histograms
直方圖
它又稱質(zhì)量分布圖,是一種表示數(shù)據(jù)分布的統(tǒng)計報告圖。
近似圖表中的條形圖,不過直方圖的條形是連續(xù)排列,沒有間隔、因為分組數(shù)據(jù)具有連續(xù)性,不能放開。
正常的直方圖是中間高、兩邊低、左右近似對稱。而異常型的直方圖種類過多,不同的異常代表不同的可能情況。
Percentiles &Outliers
百分位數(shù)和極值
它們是描述性統(tǒng)計的元素。
百分位數(shù)指將一組數(shù)據(jù)從小到大排序,并計算相遇的累積百分值,某一百分位所對應(yīng)數(shù)據(jù)的值就稱為這一百分位的百分位數(shù)。比如1~100的數(shù)組中,25代表25分位,60代表60分位。
我們常將百分位數(shù)均勻四等分:第25百分位數(shù),叫做第一四分位數(shù);第50百分位數(shù),稱第二四分位數(shù),也叫中位數(shù);第75百分位數(shù),叫做第三四分位數(shù)。通過四分位數(shù)能夠簡單快速的衡量一組數(shù)據(jù)的分布。它們構(gòu)成了箱線圖的指標。
極值是最大值和最小值,也是第一百分位數(shù)和第一百百分位數(shù)。
百分位數(shù)和極值可以用來描繪箱線圖。
Probability Theory
概率論,統(tǒng)計學的核心之一,主要研究隨機現(xiàn)象發(fā)生的可能性。
Bayes Theorem
貝葉斯定理
它關(guān)于隨機事件A和B的條件概率的定理。
現(xiàn)實世界有很多通過某些信息推斷出其他信息的推理和決策,比如看到天暗了、蜻蜓低飛了,那么就表示有可能下雨。這組關(guān)系被稱為條件概率:用P(A|B)表示在B發(fā)生的情況下A發(fā)生的可能性。
貝葉斯公式:P(B|A) = P(A|B)*P(B) / P(A)
現(xiàn)實生活中最經(jīng)典的例子就是疾病檢測,如果某種疾病的發(fā)病率為千分之一?,F(xiàn)在有一種試紙,它在患者得病的情況下,有99%的準確判斷患者得病,在患者沒有得病的情況下,有5%的可能誤判患者得病?,F(xiàn)在試紙說一個患者得了病,那么患者真的得病的概率是多少?
從我們的直覺看,是不是患者得病的概率很大,有80%?90%?實際上,患者得病的概率只有1.9%。關(guān)鍵在哪里?一個是疾病的發(fā)病率過低,一個是5%的誤判率太高,導(dǎo)致大多數(shù)沒有得病的人被誤判。這就是貝葉斯定理的作用,用數(shù)學,而不是直覺做判斷。
最經(jīng)典的應(yīng)用莫過于垃圾郵件的過濾。
Random Variables
隨機變量
表示隨機試驗各種結(jié)果的實際值。比如天氣下雨的降水量,比如某一時間段商城的客流量。
隨機變量是規(guī)律的反應(yīng),扔一枚硬幣,既有可能正面、也有可能反面,兩者的概率都是50%。扔骰子,結(jié)果是1~6之間的任何一個,概率也是六分之一。雖然做一次試驗,結(jié)果肯定是不確定性的,但是概率是一定的。隨機變量是概率的基石。
Cumul Dist Fn(CDF)
累計分布函數(shù)(Cumulative Distribution Function)
它是概率密度函數(shù)的積分,能夠完整描述一個實數(shù)隨機變量X的概率分布。直觀看,累積分布函數(shù)是概率密度函數(shù)曲線下的面積。
上圖陰影部分就是一個標準的累積分布函數(shù)F(x),給定任意值x,計算小于x的概率為多大。實際工作中不會涉及CDF的計算,都是計算機負責的。記得在我大學考試,也是專門查表的。
現(xiàn)實生活中,我們描述的很多概率都是累積分布函數(shù),我們說考試90分以上的概率有95%,實際是90分~100分所有的概率求和為95%。
Continuos Distributions(Normal, Poisson, Gaussian)
連續(xù)分布(正態(tài)、泊松、高斯)
分布有兩種,離散分布和連續(xù)分布。連續(xù)分布是隨機變量在區(qū)間內(nèi)能夠取任意數(shù)值。
正態(tài)分布是統(tǒng)計學中最重要的分布之一,它的形狀呈鐘型,兩頭低,中間高,左右對稱。
正態(tài)分布有兩個參數(shù),期望μ和標準差σ:μ反應(yīng)了正態(tài)分布的集中趨勢位置,σ反應(yīng)了離散程度,σ越大,曲線越扁平,σ越小,曲線越窄高。
自然屆中大量的現(xiàn)象都按正態(tài)形式分布,標準正態(tài)分布則是正態(tài)分布的一種,平均數(shù)為0,標準差為1。應(yīng)用中,都會將正態(tài)分布先轉(zhuǎn)換成標準正態(tài)分布進行計算。很多統(tǒng)計學方法,都會要求數(shù)據(jù)符合正態(tài)分布才能計算。
泊松分布是離散概率分布。適合描述某個隨機事件在單位時間/距離/面積等出現(xiàn)的次數(shù)。當n出現(xiàn)的次數(shù)足夠多時,泊松分布可以看作正態(tài)分布。
高斯分布就是正態(tài)分布。
Skewness
偏度
它是數(shù)據(jù)分布傾斜方向和程度的度量,當數(shù)據(jù)非對稱時,需要用到偏度。
正態(tài)分布的偏度為0,當偏度為負時,數(shù)據(jù)分布往左偏離,叫做負偏離,也稱左偏態(tài)。反之叫右偏態(tài)。
ANOVA
方差分析
用于多個變量的顯著性檢驗?;舅枷胧牵和ㄟ^分析研究不同來源的變異對總變異的貢獻大小,從而確定可控因素對研究結(jié)果影響力的大小。
方差分析屬于回歸分析的特例。方差分析用于檢驗所有變量的顯著性,而回歸分析通常針對單個變量的。
Prob Den Fn(PDF)
概率密度函數(shù)
PDF是用來描述連續(xù)型隨機變量的輸出值。概率密度函數(shù)應(yīng)該和分布函數(shù)一起看:
藍色曲線是概率密度函數(shù),陰影部分是累積分布函數(shù)。我們用概率密度函數(shù)在某一區(qū)間上的積分來刻畫隨機變量落在這個區(qū)間中的概率。概率等于區(qū)間乘概率密度,累積分布等于所有概率的累加。
概率密度函數(shù):f(x) = P(X=x)
累積分布函數(shù):F(x) = P(X<=x)
概率密度函數(shù)是累積分布函數(shù)的導(dǎo)數(shù),現(xiàn)有分布函數(shù),才有密度函數(shù)。累積分布函數(shù)即可以離散也可以連續(xù),而密度函數(shù)是用在連續(xù)分布中的。
Central Limit THeorem
中心極限定理
它是概率論中最重要的一類定理。
自然屆中很多隨機變量都服從正態(tài)分布,中心極限定理就是理解和解釋這些隨機變量的。我們有一個總體樣本,從中取樣本量為n的樣本,這個樣本有一個均值,當我們重復(fù)取了m次時,對應(yīng)有m個均值,如果我們把數(shù)據(jù)分布畫出來,得到的結(jié)果近似正態(tài)分布。
這就是中心極限定理,它神奇的地方就在于不管總體是什么分布。我們很多推導(dǎo)都是基于中心極限定理的。
Monte Carlo Method
蒙特卡羅方法
它是使用隨機數(shù)來解決計算問題的方法。
蒙特卡羅是一個大賭場,以它命名,含義近似于隨機。我們有時候會因為各種限制而無法使用確定性的方法,此時我們只能隨機模擬,用通過概率實驗所求的概率來估計我們感興趣的一個量。最知名的例子有布豐投針試驗。
18世紀,布豐提出以下問題:設(shè)我們有一個以平行且等距木紋鋪成的地板,木紋間距為a,現(xiàn)在隨意拋一支長度l比木紋之間距離a小的針,求針和其中一條木紋相交的概率。布豐計算出來了概率為p = 2l/πa。
為了計算圓周率,人們紛紛投針,以實際的試驗結(jié)果來計算。
下圖則是計算機模擬的結(jié)果
這就是蒙特卡羅方法的實際應(yīng)用。它的理論依據(jù)是大數(shù)定理和中心極限定理。
Hypothesis Testing
假設(shè)檢驗
它是根據(jù)一定的假設(shè)條件由樣本推斷總體的方法。
首先根據(jù)實際問題作出一個假設(shè),記作H0,相反的假設(shè)稱為備擇假設(shè)。它的核心思想是小概率反證法,如果這個假設(shè)發(fā)生的概率太小以至于不可能發(fā)生,結(jié)果它發(fā)生了,那么我們認為假設(shè)是不成立的。
假設(shè)檢驗是需要容忍的,因為樣本會存在波動,這個波動范圍不會太嚴格,在這個范圍內(nèi)出現(xiàn)的事件我們都能接受。但是我們都這么容忍了,還是出現(xiàn)了違背原假設(shè)的小概率事件,那么說明原假設(shè)有問題。不能容忍的范圍即拒絕域,在拒絕域發(fā)生的概率我們都認為它是小概率事件。
假設(shè)檢驗容易犯兩類錯誤,第一類錯誤是真實情況為h0成立,但判斷h0不成立,犯了“以真為假”的錯誤。第二類錯誤是h0實際不成立,但判斷它成立,犯了“以假為真”的錯誤。
假設(shè)檢驗有U檢驗、T檢驗、F檢驗等方法。
p-Value
P值
它是進行假設(shè)檢驗判定的一個參數(shù)。當原假設(shè)為真時樣本觀察結(jié)果(或更極端結(jié)果)出現(xiàn)的概率。P值很小,說明原假設(shè)發(fā)生的概率很小,但它確實發(fā)生了,那么我們就有理由拒絕原假設(shè)。
至于P值的選擇根據(jù)具體情況,一般是1%,5%幾個檔次。
然而,P值在統(tǒng)計學上爭議很大,P值是否是接受原假設(shè)的標準,都是統(tǒng)計學各種流派混合后的觀點。P值從來沒有被證明可以用來接收某個假設(shè)(所以我上文的說明并不嚴謹),它只是僅供參考?,F(xiàn)在統(tǒng)計學家們也開始倡導(dǎo):應(yīng)該給出置信區(qū)間和統(tǒng)計功效,實際的行動判讀還是留給人吧。
Chi2 Test
卡方檢驗
Chi讀作卡。通常用作獨立性檢驗和擬合優(yōu)度檢驗。
卡方檢驗基于卡方分布。檢驗的假設(shè)是觀察頻數(shù)與期望頻數(shù)沒有差別。
獨立性檢驗:卡方分布的一個重要應(yīng)用是基于樣本數(shù)據(jù)判斷兩個變量的獨立性。獨立性檢驗使用列聯(lián)表格式,因此也被稱為列聯(lián)表檢驗。原假設(shè)中,列變量與行變量獨立,通過每個單元格的期望頻數(shù)檢驗統(tǒng)計量。
擬合優(yōu)度檢驗:它依據(jù)總體分布狀況,計算出分類變量中各類別的期望頻數(shù),與分布的觀察頻數(shù)進行對比,判斷期望頻數(shù)與觀察頻數(shù)是否有顯著差異。目的是判斷假設(shè)的概率分布模型是否能用作研究總體的模型。
獨立性檢驗是擬合優(yōu)度檢驗的推廣。
Estimation
估計
統(tǒng)計學里面估計分為參數(shù)估計和非參數(shù)估計。
參數(shù)估計是用樣本指標估計總體指標,這個指標可以是期望、方差、相關(guān)系數(shù)等,指標的正式名稱就是參數(shù)。當估計的是這些參數(shù)的值時,叫做點估計。當估計的是一個區(qū)間,即總體指標在某范圍內(nèi)的可能時,叫做區(qū)間估計,簡單認為是人們常說的有多少把握保證某值在某個范圍內(nèi)。
參數(shù)估計需要先明確對樣本的分布形態(tài)與模型的具體形式做假設(shè)。常見的估計方法有極大似然估計法、最小二乘法、貝葉斯估計法等。
非參數(shù)估計則是不做假設(shè),直接利用樣本數(shù)據(jù)去做逼近,找出相應(yīng)的模型。
Confid Int(CI)
置信區(qū)間
它是參數(shù)檢驗中對某個樣本的總體參數(shù)的區(qū)間估計。它描述的是這個參數(shù)有一定概率落在測量結(jié)果的范圍程度。這個概率叫做置信水平。
以網(wǎng)上例子來說,如果在一次大選中某人的支持率為55%,而置信水平0.95以上的置信區(qū)間是(50%,60%),那么他的真實支持率有95%的概率落在和50~60的支持率之間。我們也可以很容易的推得,當置信區(qū)間越大,置信水平也一定越大,落在40~70%支持率的可能性就有99.99%了。當然,越大的置信區(qū)間,它在現(xiàn)實的決策價值也越低。
置信區(qū)間經(jīng)常見于抽樣調(diào)研,AB測試等。
MLE
極大似然估計
它是建立在極大似然原理的基礎(chǔ)上。
如果試驗如有若干個可能的結(jié)果A,B,C…。若在僅僅作一次試驗中,結(jié)果A出現(xiàn),則一般認為試驗條件對A出現(xiàn)有利,也即A出現(xiàn)的概率很大。
此時我們需要找出某個參數(shù),參數(shù)能使這個樣本出現(xiàn)的概率最大,我們當然不會再去選擇其他小概率的樣本,所以干脆就把這個參數(shù)作為估計的真實值。
Kernel Density Estimate
核密度估計
它是概率論中估計未知的密度函數(shù),屬于非參數(shù)檢驗。
一般的概率問題,我們都會假定數(shù)據(jù)分布滿足狀態(tài),是基于假定的判別。這種叫參數(shù)檢驗。如果如果數(shù)據(jù)與假定存在很大的差異,那么這些方法就不好用,于是便有了非參數(shù)檢驗。核密度估計就是非參數(shù)檢驗,它不需要假定數(shù)據(jù)滿足那種分布。
Regression
回歸
回歸,指研究一組隨機變量(Y1 ,Y2 ,…,Yi)和另一組(X1,X2,…,Xk)變量之間關(guān)系的統(tǒng)計分析方法,又稱多重回歸分析。通常Y1,Y2,…,Yi是因變量,X1、X2,…,Xk是自變量。
回歸分析常用來探討變量之間的關(guān)系,在有限情況下,也能推斷相關(guān)性和因果性。而在機器學習領(lǐng)域中,它被用來預(yù)測,也能用來篩選特征。
回歸包括線性回歸、非線性回歸、邏輯回歸等。上圖就是線性回歸。
Convariance
協(xié)方差
用于衡量兩個變量的總體誤差,方差是協(xié)方差的一種特殊情況,即兩個變量相同。
協(xié)方差用數(shù)據(jù)期望值E計算:cov(x,y) = E[XY]-E[X][Y]。
如果XY互相獨立,則cov(x,y)=0.此時E[XY] = E[X][Y]。
Correlation
相關(guān)性
即變量之間的關(guān)聯(lián)性,相關(guān)性只涉及數(shù)學層面,即一個變量變化,另外一個變量會不會變化,但是兩個變量的因果性不做研究。
相關(guān)關(guān)系是一種非確定性的關(guān)系,即無法通過一個變量精確地確定另外一個變量,比如我們都認為,一個人身高越高體重越重,但是不能真的通過身高去確定人的體重。
Pearson Coeff
皮爾遜相關(guān)系數(shù)
它是度量兩個變量線性相關(guān)的系數(shù),用r表示,其值介于-1與1之間。1表示完全正相關(guān),0表示完全無關(guān),-1表示完全負相關(guān)。
Causation
因果性
和相關(guān)性是一堆好基友。相關(guān)性代表數(shù)學上的關(guān)系,但并不代表具有因果性。
夏天,吃冷飲的人數(shù)和淹死的人數(shù)都呈現(xiàn)正相關(guān)。難道是吃冷飲導(dǎo)致了淹死?不是的,是因為天熱,天熱吃冷飲的人多了,游泳的人也多了。
《大數(shù)據(jù)時代》曾經(jīng)強調(diào),我們應(yīng)該重視相關(guān)性而不是因果性,這是存疑的,因為對數(shù)據(jù)科學家來說,對業(yè)務(wù)因果性的了解往往勝于相關(guān)性,比如你預(yù)測一個人是否會得癌癥,你不能拿是否做過放療作為特征,因為放療已經(jīng)是癌癥的果,必然是非常強相關(guān),但是對預(yù)測沒有任何幫助,只是測試數(shù)據(jù)上好看而已。
Least2 fit
最小二乘法
它是線性回歸的一種用于機器學習中的優(yōu)化技術(shù)。
最小二乘的基本思想是:最優(yōu)擬合直線應(yīng)該是使各點到回歸直線的距離和最小的直線,即平方和最小。它是基于歐式距離的。
Eculidean Distance
歐氏距離
指在m維空間中兩個點之間的真實距離。小學時求的坐標軸軸上兩個點的直線距離就是二維空間的歐式距離。很多算法都是基于歐式距離求解的。
二維:
——————
Programming 編程
數(shù)據(jù)科學家是需要一定的編程能力,雖然不需要程序員那么精通,注重的是解決的能力,而不是工程化的能力。作者從內(nèi)容看更推崇R,我個人是推崇Python的。
Python Basics
Python基礎(chǔ)知識。
人生苦短,我用Python。
Python的基礎(chǔ)內(nèi)容比R豐富的多,近幾年,Python有作為第一數(shù)據(jù)科學語言的趨勢?;A(chǔ)內(nèi)容就不多復(fù)述了。
Working in Excel
Excel干活
掌握常用函數(shù),懂得數(shù)據(jù)分析庫,會Power系列加分。VBA這種就不用學了。
R Setup, RStudio R
安裝R和RStudio
R是一門統(tǒng)計學語言。下列的內(nèi)容,都是R語言相關(guān)。
R Basics
R的基礎(chǔ),不多作陳述了。
Varibles
變量
變量是計算機語言中的抽象概念,可以理解成我們計算的結(jié)果或者值,不同計算語言的變量性質(zhì)不一樣。主要理解R和Python的變量就行。大數(shù)據(jù)那塊可能還會涉及到Java和Scala。
R 用 <- 給變量賦值,=也能用,但不建議。
Vectors
向量
向量是一維數(shù)組,可以存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組。R里面使用函數(shù)c( )創(chuàng)建向量。
v <- c(1,2,3,4)
向量中的數(shù)據(jù)必須擁有相同的數(shù)據(jù)類型,無法混雜。
Matrices
矩陣
矩陣是一個二維數(shù)組,和向量一樣,每個元素必須擁有相同的數(shù)據(jù)類型。當維度超過2時,我們更建議使用數(shù)組
m <- matrix(1:20,nrow=5,ncol=4)
Arrays
數(shù)組
數(shù)組與矩陣類似,但是維度可以大于2,數(shù)據(jù)類型必須一樣。
a <- array(1:20,c(4,5))
Factors
因子
因子是R中的有序變量和類別變量。
類別變量也叫做名義變量,它沒有順序之分,比如男女,雖然編碼中可能男為1,女為2,但不具備數(shù)值計算含義。有序變量則表示一種順序關(guān)系,少年、青年、老年則是一種有序變量。
f <- factor(c("type1","type2","type1))
在factor函數(shù)中加入?yún)?shù)ordered = True,就表示為有序型變量了。
Lists
列表
它是R最復(fù)雜的數(shù)據(jù)類型,它可以是上述數(shù)據(jù)結(jié)構(gòu)的組合。
l <- list(names = v,m,a,f )
上述例子就包含了向量、矩陣、數(shù)組、因子。我們可以使用雙重方括號[[ ]]選取列表中的元素。R中的下標不從0開始,所以list[[1]] 選取的是v。
Data Frames
數(shù)據(jù)框
在R和Python中為常用的數(shù)據(jù)結(jié)構(gòu)。
R語言中為data.frame,Python中為Pandas的DataFrame。這里以R語言舉例。
數(shù)據(jù)框可以包含不同數(shù)據(jù)類型的列,它是比矩陣更廣泛的概念,也是R中最常用的數(shù)據(jù)結(jié)構(gòu)。每一列的數(shù)據(jù)類型必須唯一。
x <- data.frame(col1,col2,col3)
Reading CSV Data
讀取CSV
這一塊比較坑的地方是中文,R語言對中文編碼的支持比較麻煩。
Reading Raw Data
讀取原始數(shù)據(jù)
不清楚這和CSV的區(qū)別。
Subsetting Data
構(gòu)建數(shù)據(jù)集
R提供了常用函數(shù)方便我們構(gòu)建數(shù)據(jù)集(反正來去都那幾個英文)。
數(shù)據(jù)集合并使用merge函數(shù)。
添加數(shù)據(jù)行使用rbind函數(shù)。
dataframe選取子集用[ row,column]。
刪除變量可以通過 <- Null。
復(fù)雜查詢則使用subset函數(shù)。
如果已經(jīng)習慣SQL函數(shù),可以載入library(sqldf)后用sqldf函數(shù)。
Manipulate Data Frames
操作數(shù)據(jù)框
除了上面的構(gòu)建數(shù)據(jù)集的技巧,如果我們需要更復(fù)雜的操作,加工某些數(shù)據(jù),如求變量和、計算方差等,則要用到R語言的其他函數(shù)。
R本身提供了abs(x),sort(x),mean(x),cos(x)等常用的統(tǒng)計方法,如何應(yīng)用在數(shù)據(jù)框呢?我們使用apply函數(shù),可將任意一個函數(shù)應(yīng)用在矩陣、數(shù)組、數(shù)據(jù)框中。
apply(dataframe,margin,fun)
Functions
函數(shù)
R語言自帶了豐富的統(tǒng)計函數(shù),可以通過官方/第三方文檔查詢,R也可以自建函數(shù)。
myfunction <- function(arg1,arg2,……){ statements return(object)}
函數(shù)中的對象只在函數(shù)內(nèi)部使用。如果要調(diào)試函數(shù),可以使用warning( ),messagr( ),stop( )等糾錯。
Factor Analysis
因子分析
我不知道這塊的編程基礎(chǔ)內(nèi)容為什么要加入因子分析。R語言的因子分析函數(shù)是factanal()
Install Pkgs
調(diào)包俠
R的包非常豐富(Python更是),可以通過cran下載,包括爬蟲、解析、各專業(yè)領(lǐng)域等。函數(shù)library可以顯示有哪些包,可能直接加入包。RStudio則提供了與包相關(guān)的豐富查詢界面。
——————
Machine Learning機器學習
數(shù)據(jù)科學的終極應(yīng)用,現(xiàn)在已經(jīng)是深度學習了。這條路也叫從調(diào)包到科學調(diào)參。這里的算法屬于經(jīng)典算法,但是向GBDT、XGBoost、RF等近幾年競賽中大發(fā)異彩的算法沒有涉及,應(yīng)該是寫得比較早的原因。
What is ML?
機器學習是啥子喲
機器學習,區(qū)別于數(shù)據(jù)挖掘,機器學習的算法基于統(tǒng)計學和概率論,根據(jù)已有數(shù)據(jù)不斷自動學習找到最優(yōu)解。數(shù)據(jù)挖掘能包含機器學習的算法,但是協(xié)同過濾,關(guān)聯(lián)規(guī)則不是機器學習,在機器學習的教程上看不到,但是在數(shù)據(jù)挖掘書本能看到。
Numerical Var
數(shù)值變量
機器學習中主要是兩類變量,數(shù)值變量和分量變量。
數(shù)值變量具有計算意義,可用加減乘除。數(shù)據(jù)類型有int、float等。
在很多模型中,連續(xù)性的數(shù)值變量不會直接使用,為了模型的泛化能力會將其轉(zhuǎn)換為分類變量。
Categorical Var
分類變量
分類變量可以用非數(shù)值表示,它是離散變量。
有時候為了方便和節(jié)省存儲空間,也會用數(shù)值表示,比如1代表男,0代表女。但它們沒有計算意義。在輸入模型的過程中,會將其轉(zhuǎn)變?yōu)閱∽兞俊?/p>
Supervised Learning
監(jiān)督學習
機器學習主要分為監(jiān)督學習和非監(jiān)督學習。
監(jiān)督學習是從給定的訓(xùn)練集中學習出一個超級函數(shù)Y=F(X),我們也稱之為模型。當新數(shù)據(jù)放入到模型的時候,它能輸出我們需要的結(jié)果達到分類或者預(yù)測的目的。結(jié)果Y叫做目標,X叫做特征。當有新數(shù)據(jù)進入,能夠產(chǎn)生新的準確的結(jié)果。
既然從訓(xùn)練集中生成模型,那么訓(xùn)練集的結(jié)果Y應(yīng)該是已知的,知道輸入X和輸出Y,模型才會建立,這個過程叫做監(jiān)督學習。如果輸出值是離散的,是分類,如果輸出值是連續(xù)的,是預(yù)測。
監(jiān)督學習常見于KNN、線性回歸、樸素貝葉斯、隨機森林等。
Unsupervied Learning
非監(jiān)督學習
無監(jiān)督學習和監(jiān)督學習,監(jiān)督學習是知道結(jié)果Y,無監(jiān)督學習是不知道Y,僅通過已有的X,來找出隱藏的結(jié)構(gòu)。
無監(jiān)督學習常見于聚類、隱馬爾可夫模型等。
Concepts, Inputs &Attributes
概念、輸入和特征
機器學習包括輸入空間、輸出空間、和特征空間三類。特征選擇的目的是篩選出結(jié)果有影響的數(shù)據(jù)。
Traning &Test Data
訓(xùn)練集和測試集
機器學習的模型是構(gòu)建在數(shù)據(jù)集上的,我們會采用隨機抽樣或者分層抽樣的將數(shù)據(jù)分成大小兩個部分,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預(yù)報,通過小樣本的預(yù)測結(jié)果和真實結(jié)果做對比,來判斷模型優(yōu)劣。這個叫做交叉驗證。
交叉驗證能夠提高模型的穩(wěn)定性,但不是完全保險的,依舊有過擬合的風險。
通常用80%的數(shù)據(jù)構(gòu)建訓(xùn)練集,20%的數(shù)據(jù)構(gòu)建測試集
Classifier
分類
監(jiān)督學習中,如果輸出是離散變量,算法稱為分類。
輸出的離散變量如果是二元的,則是二元分類,比如判斷是不是垃圾郵件{是,否},很多分類問題都是二元分類。與之相對的是多元分類。
Prediction
預(yù)測
監(jiān)督學習中,如果輸出是連續(xù)變量,算法稱為預(yù)測。
預(yù)測即可以是數(shù)值型,比如未來的銷量,也可以是介于[0,1]間的概率問題。
有些算法適合分類、有些則是預(yù)測,也有算法可以兩者都能做到。
Lift
Lift曲線
它是衡量模型性能的一種最常用的度量,它考慮的是模型的準確性。它核心的思想是以結(jié)果作導(dǎo)向,用了模型得到的正類數(shù)量比不用模型的效果提升了多少?
比如某一次活動營銷,1000個用戶會有200個響應(yīng),響應(yīng)率是20%。用了模型后,我通過算法,講用戶分群,挑出了最有可能響應(yīng)的用戶200個,測試后的結(jié)果是有100個,此時的響應(yīng)率變成了50%。此時的Lift值為5。
上圖就是按Lift值畫出曲線的范例??v坐標是lift值,橫坐標是挑選的的閥值。閥值越低,說明挑選的越嚴格,按上文的例子理解,挑選的就是最有可能響應(yīng)的用戶。當沒有閥值時,lift就為0了。閥值通常是根據(jù)預(yù)測分數(shù)排序的。
還有一種常用的叫ROC曲線。
Overfitting
過擬合
過擬合是機器學習中常碰到的一類問題。主要體現(xiàn)在模型在訓(xùn)練數(shù)據(jù)集上變現(xiàn)優(yōu)秀,而在真實數(shù)據(jù)集上表現(xiàn)欠佳。造成的原因是為了在訓(xùn)練集上獲得出色的表現(xiàn),使得模型的構(gòu)造如此精細復(fù)雜,規(guī)則如此嚴格,以至于任何與樣本數(shù)據(jù)稍有不同的文檔它全都認為不屬于這個類別。
上圖,黑色的線條是正常模型,綠色的線條是過擬合模型。
不同的機器學習算法,是否容易擬合的程度也不僅相同。通常采用加大樣本數(shù)據(jù)量、減少共線性、增加特征泛化能力的方法解決過擬合。
與之相反的是欠擬合。
Bias &Variance
偏差和方差
偏差和方差除了統(tǒng)計學概念外,它們也是解釋算法泛化能力的一種重要工具。
算法在不同訓(xùn)練集上得到的結(jié)果不同,我們用偏差度量算法的期望預(yù)測和真實結(jié)果的偏離程度,這代表算法本身的擬合能力,方差則度量了算法受數(shù)據(jù)波動造成的影響。
偏差越小、越能夠擬合數(shù)據(jù),方差越小、越能夠扛數(shù)據(jù)波動。
Trees &Classification
樹分類
樹分類是需要通過多級判別才能確定模式所屬類別的一種分類方法。多級判別過程可以用樹狀結(jié)構(gòu)表示,所以稱為樹分類器。最經(jīng)典的便是決策樹算法。
Classification Rate
分類正確率
為了驗證模型的好壞,即最終判斷結(jié)果的對錯,我們引入了分類正確率。
分類正確率即可以判斷二分類任務(wù),也適用于多分類任務(wù)。我們定義分類錯誤的樣本數(shù)占總樣本的比率為錯誤率,精確度則是正確的樣本數(shù)比率。兩者相加為1。
為了更好的判斷模型,主要是業(yè)務(wù)需要,我們還加入了查準率(precision),查全率(recall),查準率是預(yù)測為真的數(shù)據(jù)中有多少是真的。查全率是真的數(shù)據(jù)中有多少數(shù)據(jù)被預(yù)測對了。
這個有點繞,主要是為了業(yè)務(wù)判斷,假如我們的預(yù)測是病人是否患了某個致死疾病,假設(shè)得病為真,我們顯然希望把全部都得病的患者找出來,那么此時查全率(得病的患者有多少被準確預(yù)測出來)比查準率(預(yù)測得病的患者有多少真的得病了)更重要,因為這個會死人,那么肯定是選擇有殺錯無放過。此時更追求查全率。
算法競賽就是基于上述指標評分的。
Decision Tress
決策樹
它是基本的分類和回歸方法??梢岳斫獬蒊f-Then的規(guī)則集,每一條路徑都互斥且完備。決策樹分為內(nèi)部節(jié)點和葉節(jié)點,內(nèi)部節(jié)點就是If-Then的規(guī)則,葉節(jié)點就是分類結(jié)果。
決策樹主流有ID3、C4.5(C5.0也有了)、CART算法。
因為決策樹形成的結(jié)構(gòu)是根據(jù)樹形遞歸產(chǎn)生,它對訓(xùn)練數(shù)據(jù)表現(xiàn)良好,但是會產(chǎn)生過擬合現(xiàn)象。為了避免這一現(xiàn)象,會進行減枝。剪紙通過損失函數(shù)或代價函數(shù)實現(xiàn)。
決策樹的優(yōu)點是:高校簡單、可解釋性強、在大型數(shù)據(jù)庫有良好表現(xiàn)、適合高維數(shù)據(jù)。
缺點是:容易過擬合、并且分類結(jié)果會傾向擁有更多數(shù)值的特征(基于信息增益)。
隨機森林算法是基于決策樹的。
Boosting
提升方法
屬于集成學習的一種。提升方法Boosting一般是通過多個弱分類器組成一個強分類器,提高分類性能。簡而言之是三個臭皮匠頂一個諸葛亮。
通過對訓(xùn)練集訓(xùn)練出一個基學習器,然后根據(jù)基學習器的分類表現(xiàn)跳轉(zhuǎn)和優(yōu)化,分類錯誤的樣本將會獲得更多關(guān)注,以此重復(fù)迭代,最終產(chǎn)生的多個基分類器進行加強結(jié)合得出一個強分類器。
主流方法是AdaBoost,以基分類器做線性組合,每一輪提高前幾輪被錯誤分類的權(quán)值。
Naive Bayes Classifiers
樸素貝葉斯分類
它基于貝葉斯定理的分類方法。樸素貝葉斯法的使用條件是各條件互相獨立。這里引入經(jīng)典的貝葉斯定理:
在算法中,我們的B就是分類結(jié)果Target,A就是特征。意思是在特征已經(jīng)發(fā)生的情況下,發(fā)生B的概率是多少?
概率估計方法有極大似然估計和貝葉斯估計,極大似然估計容易產(chǎn)生概率值為0的情況。
優(yōu)點是對缺失數(shù)據(jù)不太敏感,算法也比較簡單。缺點是條件互相獨立在實際工作中不太成立。
K-Nearest Neighbour
K近鄰分類。
K近鄰分類的特點是通過訓(xùn)練數(shù)據(jù)對特征向量空間進行劃分。當有新的數(shù)據(jù)輸入時,尋找距離它最近的K個實例,如果K個實例多數(shù)屬于某類,那么就把新數(shù)據(jù)也算作某類。
特征空間中,每個訓(xùn)練數(shù)據(jù)都是一個點,距離該點比其他點更近的所有點將組成一個子空間,叫做單元Cell,這時候,每個點都屬于一個單元,單元將是點的分類。
k值的選擇將會影響分類結(jié)果,k值越小,模型越復(fù)雜,容易過擬合,不抗干擾。K值越大,模型將越簡單,分類的準確度會下降。上圖是K=1時的子空間劃分,下圖是K=5時的子空間劃分,從顏色很直觀的看到影響。
K近鄰的這類基于距離的算法,訓(xùn)練的時間復(fù)雜度低,為O(n),適用范圍范圍廣。但是時間復(fù)雜度低是通過空間復(fù)雜度換來的,所以需要大量的計算資源和內(nèi)存。另外樣本不平衡問題解決不了。
Logistic Regression
邏輯斯諦回歸,簡稱邏輯回歸。
邏輯回歸屬于對數(shù)線性模型,雖然叫回歸,本質(zhì)卻是分類模型。如果我們要用線性模型做分類任務(wù),則找到sigmoid函數(shù)將分類目標Y和回歸的預(yù)測值聯(lián)系起來,當預(yù)測值大于0,判斷正例,小于0為反例,等于0任意判別,這個方法叫邏輯回歸模型。
模型參數(shù)通過極大似然法求得。邏輯回歸的優(yōu)點是快速和簡單,缺點是高維數(shù)據(jù)支持不好,容易錢擬合。
Ranking
排序,PageRank
這里應(yīng)該泛指Google的PageRank算法。
PageRank的核心思想有2點:
如果一個網(wǎng)頁被很多其他網(wǎng)頁鏈接到的話說明這個網(wǎng)頁比較重要,也就是pagerank值會相對較高;
如果一個pagerank值很高的網(wǎng)頁鏈接到一個其他的網(wǎng)頁,那么被鏈接到的網(wǎng)頁的pagerank值會相應(yīng)地因此而提高。
PageRank并不是唯一的排名算法,而是最為廣泛使用的一種。其他算法還有:Hilltop 算法、ExpertRank、HITS、TrustRank。
Linear Regression
線性回歸
線性回歸是機器學習的入門級別算法,它通過學習得到一個線性組合來進行預(yù)測。
一般寫成F(x) = wx +b,我們通過均方誤差獲得w和b,均方誤差是基于歐式距離的求解,就是最小二乘法啦。找到一條線,所有數(shù)據(jù)到這條線的歐式距離之和最小。
線性回歸容易優(yōu)化,模型簡單,缺點是不支持非線性。
Perceptron
感知機
它是二類分類的線性分類模型。
它通過一個wx+b的超平面S劃分特征空間。為了找出這個超平面,我們利用損失函數(shù)極小化求出。超平面的解不是唯一的,采取不同初值或誤分類點將會造成不同結(jié)果。
Hierarchical Clustering
層次聚類
層次聚類指在不同層次對數(shù)據(jù)集進行劃分,從而形成樹形的聚類結(jié)構(gòu)。
它將樣本看作一個初始聚類簇,每次運算找出最近的簇進行合并,該過程不斷合并,直到滿足預(yù)設(shè)的簇的個數(shù)。
上圖就是所有樣本重復(fù)執(zhí)行最終K=1時的結(jié)果。橫軸是聚類簇之間的距離,當距離=5時,我們有兩個聚類簇,當距離=3時,我們有四個聚類簇。
K-means Clusterning
K聚類
全稱K均值聚類,無監(jiān)督學習的經(jīng)典算法。物以類聚人以群分的典型代表。
K聚類需要將原始數(shù)據(jù)無量綱化,然后設(shè)置聚類點迭代求解。K聚類的核心是針對劃分出的群簇使其最小化平方誤差。直觀說,就是讓樣本緊密圍繞群簇均值。
設(shè)置多少個聚類點多少有點主觀的意思,這也是K聚類唯一的參數(shù),考察的是外部指標,即你聚類本身是想分出幾類,通過對結(jié)果的觀察以及E值判斷。
K聚類不適合多維特征,一般3~4維即可,維度太多會缺乏解釋性,RFM模型是其經(jīng)典應(yīng)用。因為物以類聚,所以對偏離均值點的異常值非常敏感。
Neural Networks
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是一種模仿生物神經(jīng)系統(tǒng)的算法,神經(jīng)網(wǎng)絡(luò)算法以神經(jīng)元作為最基礎(chǔ)的單位,神經(jīng)元通過將輸入數(shù)據(jù)轉(zhuǎn)換為0或1的閥值,達到激活與否的目的,但是0和1不連續(xù)不光滑,對于連續(xù)性數(shù)據(jù),往往用sigmoid函數(shù)轉(zhuǎn)換成[0,1] 間的范圍。
將這些神經(jīng)單元以層次結(jié)構(gòu)連接起來,就成了神經(jīng)網(wǎng)絡(luò)。因為這個特性,神經(jīng)網(wǎng)絡(luò)有許多的參數(shù),可不具備可解釋性。多層神經(jīng)網(wǎng)絡(luò),它的輸入層和輸出層之間的層級叫做隱層,就是天曉得它代表什么含義。
神經(jīng)網(wǎng)絡(luò)的層數(shù)一般是固定的,但我們也能將網(wǎng)絡(luò)層數(shù)作為學習的目標之一,找到最適合的層數(shù)。
另外,層數(shù)越多,參數(shù)越多的神經(jīng)網(wǎng)絡(luò)復(fù)雜度越高,深度學習就是典型的層數(shù)很多的神經(jīng)網(wǎng)絡(luò)。常見的有CNN、DNN、RNN等算法。
Sentiment Analysis
情感分析
比較前沿的一個領(lǐng)域。包括情感詞的正面負面分類,標注語料,情感詞的提取等。
情感分析可以通過情感關(guān)鍵詞庫計算,比如匯總開心、悲傷、難過的詞匯,計算情感值,再加入表示情感強烈程度的維度,如1~5的數(shù)值進行打分。用戶對商品評論的分析就是一個常見的情感分析:這手機太TM破了,就是5分憤怒。
然而情感詞典需要維護,構(gòu)建成本較高,我們也可以用機器學習的方法將其看待為分類問題。講關(guān)鍵詞特征向量化,常用詞袋模型(bag-of-words )以及連續(xù)分布詞向量模型(word Embedding),特征化后,往往用CNN、RNN或者SVM算法。
Collaborative Fitering
協(xié)同過濾
簡稱CF算法。協(xié)同過濾不屬于機器學習領(lǐng)域,所以你在機器學習的書上看不到,它屬于數(shù)據(jù)挖掘。
協(xié)同過濾的核心是一種社會工程的思想:人們更傾向于向口味比較類似的朋友那里獲得推薦。協(xié)同過濾主要分為兩類,基于用戶的user-based CF以及基于物體的item-based CF。雖然協(xié)同過濾不是機器學習,但它也會用到SVD矩陣分解計算相似性。
優(yōu)點是簡單,你并不需要基于內(nèi)容做內(nèi)容分析和打標簽,推薦有新穎性,可以發(fā)掘用戶的潛在興趣點。
協(xié)同過濾的缺點是無法解決冷啟動問題,新用戶沒行為數(shù)據(jù),也沒有好友關(guān)系,你是最不到推薦的;推薦會收到稀疏性的約束,你的行為越多,才會越準;隨著數(shù)據(jù)量的增大,算法會收到性能的約束,并且難以拓展。
協(xié)同過濾可以和其他算法混合,來提高效果。這也是推薦系統(tǒng)的主流做法。
Tagging
標簽/標注
這里稍微有歧義、如果是標簽,間接理解為用戶畫像,涉及到標簽系統(tǒng)。用戶的男女、性別、出生地皆是標簽,越豐富的標簽,越能在特征工程中為我們所用。
如果是分類標簽/標注,則是數(shù)據(jù)標注。有監(jiān)督學習需要訓(xùn)練集有明確的結(jié)果Y,很多數(shù)據(jù)集需要人工添加上結(jié)果。比如圖像識別,你需要標注圖像屬于什么分類,是貓是狗、是男是女等。在語音識別,則需要標注它對應(yīng)的中文含義,如果涉及到方言,則還需要將方言標注為普通話。
數(shù)據(jù)標注是個苦力活。
——————
個人水平一般,內(nèi)容解讀不算好,可能部分內(nèi)容有錯誤,歡迎指正。
該指南拆分成了三篇,本文系第一篇,寫的是基礎(chǔ)原理、統(tǒng)計學、編程能力和機器學習。
注:本文作者秦路,版權(quán)著作權(quán)屬原創(chuàng)者所有,編輯:Fynlch(王培),數(shù)據(jù)觀微信公眾號(ID:cbdioreview) ,欲了解更多大數(shù)據(jù)行業(yè)相關(guān)資訊,可搜索數(shù)據(jù)觀(中國大數(shù)據(jù)產(chǎn)業(yè)觀察網(wǎng)www.21jieyan.cn)進入查看。
責任編輯:王培