
機器學習研究如何讓計算機不需要明確的程序也能具備學習能力。(—— Arthur Samuel,1959)
一個計算機程序在完成了任務T之后,獲得經(jīng)驗E,其表現(xiàn)效果為P,如 果任務T的性能表現(xiàn),也就是用以衡量的P,隨著E的增加而增加,可以 稱其為學習。(——Tom Mitchell,1977)
雖然機器學習的研究來源于人工智能領(lǐng)域,但是機器學習的方法卻應用于數(shù) 據(jù)科學領(lǐng)域,因此我們將機器學習看作是一種數(shù)學建模更合適。 機器學習的本質(zhì)就是借助數(shù)學模型理解數(shù)據(jù)。當我們給模型裝上可以適應觀 測數(shù)據(jù)的可調(diào)參數(shù)時,“學習” 就開始了;此時的程序被認為具有從數(shù)據(jù) 中 “學習” 的能力。一旦模型可以擬合舊的觀測數(shù)據(jù),那么它們就可以預 測并解釋新的觀測數(shù)據(jù)。
第一步:獲取數(shù)據(jù)
既然我們機器學習是借助數(shù)學模型理解數(shù)學,那么最重要的原材料就是數(shù)據(jù)了。獲取數(shù)據(jù)通常指的是獲取原始數(shù)據(jù),當然這里可以是一 手數(shù)據(jù),也可以是二手數(shù)據(jù),關(guān)鍵看機器學習的學習任務?!?數(shù)據(jù)決定機器學習結(jié)果的上限,而算法只是盡可能的逼近這個上限”,可見數(shù)據(jù)在機器學習中的作用。 那么一般而言對于數(shù)據(jù)我們有 哪些要求呢?
(1)數(shù)據(jù)要具有代表性,數(shù)據(jù)需要包含盡可能多的信息,數(shù)據(jù)也需要同學習任務有關(guān)聯(lián)性。
(2)對于監(jiān)督學習中的分類問題,數(shù)據(jù)偏斜不能過于嚴重,不同類別的數(shù)據(jù)數(shù)量不要有數(shù)個數(shù)量級的差距。
(3)需要評估數(shù)據(jù)樣本的量級,估算模型學習對內(nèi)存的消耗。如果數(shù)據(jù)量太大可以考慮減少訓練樣本、降維或者使用分布式機器學習系統(tǒng)。
第二步:獲取一個任務
這一步可以同第一步互換順序,根據(jù)實際業(yè)務需求,可能會先拿到任務,再尋找合適的數(shù)據(jù)。 在獲取任務之后,需要將任務問題抽象成數(shù)學問題,明確我們可以獲得什么樣的數(shù)據(jù),學習的目標是一個什么類型的問題,然后劃歸為 其中的某類問題,比如分類問題、回歸問題、聚類問題、降維問題等。
第三步:根據(jù)數(shù)據(jù)和算法進行學習
這一部分包含了數(shù)據(jù)清洗、數(shù)據(jù)預處理、特征工程三大板塊的內(nèi)容。我們依次來做展開~
數(shù)據(jù)清洗一般根據(jù)具體學習任務或者模型需求而有不同的操作方法,因而難以歸納統(tǒng)一的方法和步驟,但是根據(jù)數(shù)據(jù)不同可以給出下面 常用的數(shù)據(jù)清洗方法。
(1)缺失值處理:大多數(shù)情況下,缺失值需要手工填入( 即手工清理)。當然,某些缺失值可以從本數(shù)據(jù)源或其它數(shù)據(jù)源推導出來,這就可以用平均值、 最大值、最小值或更為復雜的概率估計代替缺失的值,從而達到清理的目的。
(2)異常值檢測及處理:用統(tǒng)計分析的方法識別可能的錯誤值或異常值,如偏差分析、識別不遵守分布的值,通過 常識性規(guī)則、業(yè)務特定規(guī)則等檢查數(shù)據(jù)值。
(3)重復值檢測及消除方法:數(shù)據(jù)中屬性值相同的記錄被認為是重復記錄,通過判斷記錄間的屬性值是否相等來檢測記錄是否相等,相等的記錄合并為一條記錄(即 合并/清除)。合并/清除是消重的基本方法。
這里數(shù)據(jù)預處理不單單是處理我們不一致、錯誤或者異常的數(shù)據(jù),更重要的是保證數(shù)據(jù)能正常傳入模型中進行學習,并達到預期的效果。 預處理的方法涉及很多內(nèi)容,比如歸一化、標準化、連續(xù)數(shù)值型變量分箱、有序分類變量One-Hot編碼、字符型變量數(shù)值化等等。
特征工程
特征工程包括從原始數(shù)據(jù)中特征構(gòu)建、特征提取、特征選擇。特征工程做的好能發(fā)揮原始數(shù)據(jù)的最大效力,往往能夠使得算法的效果和 性能得到顯著的提升,有時能使簡單的模型的效果比復雜的模型效果好。數(shù)據(jù)挖掘的大部分時間就花在特征工程上面,是機器學習非常 基礎(chǔ)而又必備的步驟。
第四步:模型評估
使用機器學習進行判斷/預測的效果,如果不能接近/超過人類, 那就沒有任何意義。 如果人臉識別不能達到幾乎100%準確,根本不可能使用人臉識別 代替人工檢查,所以追求模型預測準確是機器學習的核心目標。
運算速度 能夠同時處理大量數(shù)據(jù),可以在超短時間內(nèi)極速學習,是機器學習 的重要優(yōu)勢,如果機器學習的判斷速度不能接近/超越人類,那計 算機判斷的優(yōu)越性就幾乎不存在了。
模型效果與運算速度往往是此消彼長的,在模型效果不錯的情況下 保障運算速度較快,是機器學習中重要的一環(huán)。
可解釋性
機器學習是一門技術(shù),是一門有門檻的技術(shù),所以大眾注定不太 可能短時間內(nèi)熟悉它,但是技術(shù)人員肩負著要向老板,客戶,同 事,甚至親朋好友解釋機器學習在做什么的職責。 比如說,在“是否分發(fā)信用卡”的問題中,如果算法判斷“這個 人有違約風險,不發(fā)信用卡”,那客戶很可能找上門來要個解釋, 這個時候,你能告訴他說“因為算法判斷你不通過”嗎? 在解釋性需求很強的領(lǐng)域,我們就需要可解釋的算法。
服務于業(yè)務
而所有的一切,都是為了服務于業(yè)務。 只有模型效果優(yōu)秀,運算速度快,還帶有一部分可解釋性的算法才是 最優(yōu)秀的算法。
說到交叉驗證就不得不提到模型的「泛化能力」,而泛化能力涉及了「訓練誤差」和「測試誤差」兩個概念。 訓練誤差與測試誤差
我們在進行學習算法前,通常會將一個樣本集分成訓練集(training set)和測試集(testing set),其中訓練集用于模型的學習或訓練, 而后測試集通常用于評估訓練好的模型對于數(shù)據(jù)的預測性能評估。
(1)訓練誤差(training error)代表模型在訓練集上的錯分樣本比率。
(2)測試誤差(empirical error)是模型在測試集上的錯分樣本比率。
1.泛化能力
訓練誤差的大小,用來判斷給定問題是不是一個容易學習的的問題。測試誤差則反映了模型對未知數(shù)據(jù)的預測能力,測試誤差小的學習 方法具有很好的預測能力,如果得到的訓練集和測試集的數(shù)據(jù)沒有交集,通常將此預測能力稱為泛化能力(generalization ability)。
2.那么什么是交叉驗證呢?
在業(yè)務當中,我們的訓練數(shù)據(jù)往往是已有的歷史數(shù)據(jù),但我們的測試數(shù)據(jù) 卻是新進入系統(tǒng)的一系列還沒有標簽的未知數(shù)據(jù)。我們的確追求模型的效 果,但我們追求的是模型在未知數(shù)據(jù)集上的效果,在陌生數(shù)據(jù)集上表現(xiàn)優(yōu) 秀的能力被稱為泛化能力,即我們追求的是模型的泛化能力。 我們認為,如果模型在一套訓練集和數(shù)據(jù)集上表現(xiàn)優(yōu)秀,那說明不了問題, 只有在眾多不同的訓練集和測試集上都表現(xiàn)優(yōu)秀,模型才是一個穩(wěn)定的模 型,模型才具有真正意義上的泛化能力。為此,機器學習領(lǐng)域有著發(fā)揮神 奇作用的技能:「交叉驗證」,來幫助我們認識模型。 數(shù)據(jù)集 測試集 驗證集
3.交叉驗證的常用方法
交叉驗證方法有很多,其中最常用的是k折交叉驗證。我們知道訓練集和測試集的劃分會干擾模型的結(jié)果,因此用交叉驗證n次的 結(jié)果求出的均值,是對模型效果的一個更好的度量。
1.混淆矩陣
混淆矩陣是二分類問題的多維衡量指標體系,在樣本不平衡時極其有用。在混淆矩陣中,我們將少數(shù)類認為是正例,多數(shù)類認為是負 例。在決策樹,隨機森林這些普通的分類算法里,即是說少數(shù)類是1,多數(shù)類是0。普通的混淆矩陣,一般使用{0,1}來表示。混淆矩陣 正如其名,十分容易讓人混淆,在許多教材中,混淆矩陣中各種各樣的名稱和定義讓大家難以理解難以記憶。這里為大家找出了一種 簡化的方式來顯示標準二分類的混淆矩陣,如圖所示:
2.模型整體效果:準確率
準確率Accuracy 就是所有預測正確的所有樣本除以總樣本,通常來說越接近1越好。
3.捕捉少數(shù)類的藝術(shù):精確度,召回率和F1 score
精確度Precision,又叫查準率。表示所有被我們預測為是少數(shù)類的樣本中,真正的少數(shù)類所占的比例。精確度越低,則代表我們誤傷 了過多的多數(shù)類。精確度是“將多數(shù)類判錯后所需付出成本”的衡量。 通常做了樣本平衡之后,精確度是下降的。因為很明顯,樣本平衡之后,有更多的多數(shù)類被我們誤傷了。精確度可以幫助我們判斷, 是否每一次對少數(shù)類的預測都精確,所以又被稱為“查準率”。在現(xiàn)實的樣本不平衡例子中,當每一次將多數(shù)類判斷錯誤的成本非常 高昂的時候(比如大眾召回車輛的例子),我們會追求高精確度。精確度越低,我們對多數(shù)類的判斷就會越錯誤。當然了,如果我們 的目標是不計一切代價捕獲少數(shù)類,那我們并不在意精確度。
捕捉少數(shù)類的藝術(shù):精確度,召回率和F1 score 召回率Recall,又被稱為敏感度(sensitivity),真正率,查全率。表示所有真實為1的樣本中,被我們預測正確的樣本所占的比例。召 回率越高,代表我們盡量捕捉出了越多的少數(shù)類,召回率越低,代表我們沒有捕捉出足夠的少數(shù)類。 召回率可以幫助我們判斷,我們是否捕捉除了全部的少數(shù)類,所以又叫做查全率。 如果我們希望不計一切代價,找出少數(shù)類(比如找出潛在犯罪者的例子),那我們就會追求高召回率,相反如果我們的目標不是盡量 捕獲少數(shù)類,那我們就不需要在意召回率。 注意召回率和精確度的分子是相同的(都是11),只是分母不同。而召回率和精確度是此消彼長的,兩者之間的平衡代表了捕捉少數(shù) 類的需求和盡量不要誤傷多數(shù)類的需求的平衡。究竟要偏向于哪一方,取決于我們的業(yè)務需求:究竟是誤傷多數(shù)類的成本更高,還是 無法捕捉少數(shù)類的代價更高。
4.捕捉少數(shù)類的藝術(shù):精確度,召回率和F1 score
為了同時兼顧精確度和召回率,我們創(chuàng)造了兩者的調(diào)和平均數(shù)作為考量兩者平衡的綜合性指標,稱之為F1 measure。兩個數(shù)之間的 調(diào)和平均傾向于靠近兩個數(shù)中比較小的那一個數(shù),因此我們追求盡量高的F1 measure,能夠保證我們的精確度和召回率都比較高。F1 measure在[0,1]之間分布,越接近1越好。
1.有監(jiān)督學習
指對數(shù)據(jù)的若干特征與若干標簽(類型)之間的關(guān) 聯(lián)性進行建模的過程;只要模型被確定,就可以應 用到新的未知數(shù)據(jù)上。這類學習過程可以進一步分 為「分類」(classification)任務和「回歸」( regression)任務。在分類任務中,標簽都是離散 值;而在回歸任務中,標簽都是連續(xù)值。
2.無監(jiān)督學習
指對不帶任何標簽的數(shù)據(jù)特征進行建模,通常被看 成是一種 “讓數(shù)據(jù)自己介紹自己” 的過程。這類 模型包括「聚類」(clustering)任務和「降維」 (dimensionality reduction)任務。聚類算法可 以講數(shù)據(jù)分成不同的組別,而降維算法追求用更簡 潔的方式表現(xiàn)數(shù)據(jù)。
3.半監(jiān)督學習
另外,還有一種半監(jiān)督學習(semi-supervised learning)方法, 介于有監(jiān)督學習和無監(jiān)督學習 之間。通??梢栽跀?shù)據(jù)不完整時使用。
4.強化學習
強化學習不同于監(jiān)督學習,它將學習看作是試探評 價過程,以 "試錯" 的方式進行學習,并與環(huán)境進 行交互已獲得獎懲指導行為,以其作為評價。此時 系統(tǒng)靠自身的狀態(tài)和動作進行學習,從而改進行動 方案以適應環(huán)境。
1.KNN算法
一則小故事
在一個酒吧里,吧臺上擺著十杯幾乎一樣的紅酒,老板跟你打趣說想不想來 玩?zhèn)€游戲,贏了免費喝酒,輸了付3倍酒錢,那么贏的概率是多少?
你是個愛冒險的人,果斷說玩!
老板接著道:你眼前的這十杯紅酒,每杯略不相同,前五杯屬于「赤霞珠」 后五杯屬于「黑皮諾」?,F(xiàn)在,我重新倒一杯酒,你只需要正確地告訴我它 屬于哪一類。
聽完你有點心虛:根本不懂酒啊,光靠看和嘗根本區(qū)分辨不出來,不過想起 自己是搞機器學習的,不由多了幾分底氣爽快地答應了老板!
你沒有急著品酒而是問了老板每杯酒的一些具體信息:酒精濃度、顏色深度等,以及一份紙筆。老板一邊倒一杯新酒,你邊 瘋狂打草稿。
很快,你告訴老板這杯新酒應該是「赤霞珠」
老板瞪大了眼下巴也差點驚掉,從來沒有人一口酒都不嘗就能答對,無數(shù)人都是 反復嘗來嘗去,最后以猶豫不定猜錯而結(jié)束。
你神秘地笑了笑,老板信守承諾讓你開懷暢飲。微醺之時,老板終于忍不住湊向
你打探是怎么做到的。
你炫耀道:無他,但機器學習熟爾。
老板:……
2.KNN——算法原理概述
k-近鄰算法的本質(zhì)是通過距離判斷兩個樣本是否相似,如果距離夠近就認為他們足夠相似屬于同一類別。 當然只對比一個樣本是不夠的,誤差會很大,我們需要找到離其最近的k個樣本,并將這些樣本稱之為「近鄰」(nearest neighbor)。 對這k個近鄰,查看它們的都屬于何種類別(這些類別我們稱作「標簽」(labels))。 然后根據(jù)“少數(shù)服從多數(shù),一點算一票”原則進行判斷,數(shù)量最多的的標簽類別就是新樣本的標簽類別。其中涉及到的原理是“越 相近越相似”,這也是KNN的基本假設(shè)。
上面有紅色和紫色兩個類別,離黃色點最近的3個點都是紅點,所以紅點和紫色類別的投票數(shù)是3:0,紅色取勝,所以黃色點屬于紅 色,也就是新的一杯屬于「赤霞珠」。
3.決策樹算法
決策樹(Decision Tree)是一種實現(xiàn)分治策略的層次數(shù)據(jù)結(jié)構(gòu), 可以用于分類和回歸。我們主要討論分類的決策樹。 分類決策樹模型表示一種基于特征對實例進行分類的樹形結(jié)構(gòu) (包括二叉樹和多叉樹)。 決策樹由節(jié)點(node)和有向邊(directed edge)組成,樹 中包含三種結(jié)點:
(1)根節(jié)點(root node):包含樣本全集。沒有入邊,但有零 條或多條出邊;
(2)內(nèi)部節(jié)點(internal node):對應于屬性測試條件,恰有 一條入邊,和兩條或多條出邊;
(3)葉節(jié)點(leaf node)或終節(jié)點(terminal node):對應 于決策結(jié)果,恰有一條入邊,但沒有出邊。
4.決策樹——算法原理概述
決策樹學習本質(zhì)上是從訓練數(shù)據(jù)集中歸納出一組分類規(guī)則,也稱為 "樹歸納"。對于給定的訓練數(shù)據(jù)集,存在許多對它無錯編碼的樹。 而為了簡單起見,我們感興趣的是從中選出 "最小" 的樹,這里的樹的大小用樹的結(jié)點數(shù)和決策節(jié)點的復雜性度量。從另一個角度看, 決策樹學習是由訓練數(shù)據(jù)集估計條件概率模型。基于特征空間劃分的類的條件概率模型有無數(shù)個,我們選擇的模型應該是不僅能對訓練數(shù)據(jù)有很好的擬合,而且對未知數(shù)據(jù)也有很好的預測。
但是,因為從所有可能的決策樹中選取最優(yōu)決策樹是NP完全問題,所以我們必須使用基于啟發(fā)式的局部搜索過程,在合理的時間內(nèi)得 到合理的樹。 樹的學習算法是 “貪心算法”,從包含全部訓練數(shù)據(jù)的根開始,每一步都選擇最佳劃分。依賴于所選擇的屬性是數(shù)值屬性還是離散屬 性,每次將數(shù)據(jù)劃分為兩個或n個子集,然后使用對應的子集遞歸地進行劃分,知道所有訓練數(shù)據(jù)子集被基本正確分類,或者沒有合適的特征為止,此時,創(chuàng)建一個樹葉結(jié)點并標記它,這就生成了一顆決策樹。
綜上,決策樹學習算法包含特征選擇、決策樹的生成與決策樹的剪枝。其中,特征選擇運用的算法主要包括 “信息熵增益”、“信息 增益比”、“基尼系數(shù)”,分別對應不同的樹生成算法ID3、C4.5、CART。
聚類算法
KNN、決策樹都是比較常用的機器學習算法,它們雖然有著不同的功能,但卻都屬于「有監(jiān)督學習」的一部分,即是說,模型在訓練 的時候,既需要特征矩陣X,也需要真是標簽Y。機器學習當中,還有相當一部分算法屬于「無監(jiān)督學習」,無監(jiān)督的算法在訓練的時 候只需要特征矩陣X,不需要標簽。無監(jiān)督學習的代表算法有聚類算法、降維算法。
點擊CDA題庫鏈接,獲取免費版CDA題庫入口,??荚図樌?,快速拿證!
更多考試介紹及備考福利請點擊:CDA 認證考試中心官網(wǎng)
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
DSGE 模型中的 Et:理性預期算子的內(nèi)涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10CDA 數(shù)據(jù)分析師:商業(yè)數(shù)據(jù)分析實踐的落地者與價值創(chuàng)造者 商業(yè)數(shù)據(jù)分析的價值,最終要在 “實踐” 中體現(xiàn) —— 脫離業(yè)務場景的分 ...
2025-09-10機器學習解決實際問題的核心關(guān)鍵:從業(yè)務到落地的全流程解析 在人工智能技術(shù)落地的浪潮中,機器學習作為核心工具,已廣泛應用于 ...
2025-09-09SPSS 編碼狀態(tài)區(qū)域中 Unicode 的功能與價值解析 在 SPSS(Statistical Product and Service Solutions,統(tǒng)計產(chǎn)品與服務解決方案 ...
2025-09-09