從業(yè)務視角解析人工智能機器學習領(lǐng)域經(jīng)典算法和使用場景
目前有很多講解機器學習算法模型的文獻資料,但本文不涉及復雜的數(shù)學公式,旨在從業(yè)務的視角出發(fā)深入淺出地解析機器學習的常用經(jīng)典模型原理和使用場景,總結(jié)在不同業(yè)務場景中機器學習起到的作用和一些實際的思考。
回顧人工智能的發(fā)展歷程,機器學習無疑是推動其從理論走向?qū)嵺`的一個重要里程碑,它不僅讓機器學會了從數(shù)據(jù)中提取知識、讓機器有了解決復雜問題的能力,更是重塑了各行各業(yè)的業(yè)務版圖,極大地拓寬了人工智能的應用邊界。
雖然與目前主流的神經(jīng)網(wǎng)絡等深度學習領(lǐng)域算法相比,機器學習在模型效果、所需人力和對復雜任務的處理上比較劣勢,但其由于廣泛的適用性、靈活性和可解釋性,部分算法模型依然有著不可替代的作用。
一、機器學習經(jīng)典五大模型和應用解析
機器學習模型包括無監(jiān)督學習模型和有監(jiān)督學習模型,本文講五個比較經(jīng)典的模型,分別為:樹模型、聚類模型、集成模型、支持向量機和貝葉斯模型,其中樹模型和支持向量機是有監(jiān)督學習模型,聚類模型是無監(jiān)督學習模型,而集成模型和貝葉斯模型根據(jù)具體業(yè)務應用而定。目前應用依然廣泛的是樹模型和集成(隨機森林)模型。
1.1 樹模型
如果說機器學習領(lǐng)域選一個模型代表的話,那就是樹模型,由于深度學習的崛起,其他的模型已被神經(jīng)網(wǎng)絡所取代,但是樹模型的應用至今還特別多,神經(jīng)網(wǎng)絡模型在大多數(shù)情況下的建模效果比較好,但也有很多不適用的場景,比如要在短視頻平臺加實時特效,第一步要找到人臉或者身體所在的位置,比如人的眼睛鼻子嘴巴、手等等,這叫關(guān)鍵點的定位,然后在對應的部位加效果,比如我想變成美國隊長,那就需要先檢測到手,然后加上盾牌。
如果用神經(jīng)網(wǎng)絡去實現(xiàn)它,在手機上跑起來會很慢,無法達到實時性的要求,但是大家使用過都知道,現(xiàn)在短視頻平臺的特效是隨著人物一直在跟著動的,實時性很強,這就是使用樹模型實現(xiàn)的效果。雖然樹模型在泛化能力和處理復雜關(guān)系能力等方面不及神經(jīng)網(wǎng)絡,但它的速度非??欤@是樹模型的第一個優(yōu)勢,也是它還能廣泛應用的一個最大原因。
第二個優(yōu)點是什么呢?當我們用神經(jīng)網(wǎng)絡做建模的時候,任務從前到后的整個流程不可解釋,它就像一個黑盒子,我們只知道達到了一個結(jié)果,它里面有成百上千萬個參數(shù),我們不知道每個參數(shù)的實際意義,過程是怎么實現(xiàn)的不能去觀測。但是在機器學習使用的場景當中,我們對每一個業(yè)務的邏輯和影響結(jié)果好壞的關(guān)鍵因素要分析,以便能更好地提升業(yè)務能力,所以神經(jīng)網(wǎng)絡就不適用于這種場合,但是樹模型的每一個決策過程都是清晰的。舉個例子,我們要從這五個人里面篩選出年齡小于15歲的女性,樹模型會先做年齡判斷,再通過性別做判斷,每一步(或者叫每一個節(jié)點)的決策邏輯非常明顯。
所以綜合起來,樹模型之所以沒有被神經(jīng)網(wǎng)絡所取代最主要的兩大優(yōu)勢就是:
- 速度快,適合實時性要求高的場景
- 模型的決策節(jié)點可解釋
1.2 聚類模型
在上一篇我們講過,機器學習的三大核心任務是分類、回歸和聚類,聚類是對沒有標簽的數(shù)據(jù)進行切分,屬于無監(jiān)督學習。
用一個簡單的demo來理解聚類,可以想象下我們身邊的小團體,大家都把自己范圍內(nèi)的人拉進團體中,在這個范圍當中我們并沒有一個數(shù)據(jù)標簽,如果把每一個人看作是一個點,最開始的那個點屬于什么類別我們不知道,大家都是盲目地從眾,那怎么判斷類別呢?是通過密度的方式,在這個任務當中,我們隨機找一個點為初始點,假如以1為半徑畫圈,但凡圈到的點都是初始點自己的團體,被圈到的下一個點再以1為半徑畫圈,圈到的點同樣屬于這個團體,直到實在找不到一個在半徑1范圍內(nèi)的點了,那剩下的就是其他類別了。
在這個例子中,紅色和藍色部分都以1為半徑圈完了自己的團體,剩下的上面部分是下一個需要被分類的點集:
這樣聚完堆之后就把數(shù)據(jù)分成了三類,在這個demo中可以看出,聚類任務是沒有標簽,只有數(shù)據(jù)的時候也把數(shù)據(jù)做切分。
我剛才提到了半徑,當半徑設置得比較大的時候,比如設置成1.42,我們可以看出在這個任務當中只得到紅色一個類別:
在半徑比較小的時候,比如設置成0.6,就得到了很多類別:
以上演示的方法叫K均值聚類,K是我們需要把數(shù)據(jù)分成的類別數(shù)量。因為聚類模型只有數(shù)據(jù),沒有標簽,模型不能通過輸入和輸出之間的關(guān)系來學習,所以選擇半徑一般只能憑經(jīng)驗或者不斷去嘗試。
在實際應用場景當中,不用人工打標簽確實可以節(jié)省人力成本,但業(yè)務負責的人肯定想知道這么分類依據(jù)是什么,或者在任務當中怎么證明圈出來的點是異常的,聚類模型決策的過程很難展示,所以在處理一個任務時寧愿請人工來打標簽再使用其他的算法模型,首選模型通常都不會是聚類,因為沒有任何實用性的指導價值,它只是把數(shù)據(jù)做一個切分,至于為什么那樣切分和切分的結(jié)果是不是合理都無從知曉,聚類模型只是得到一個結(jié)果而已。
所以從業(yè)務視角總結(jié)聚類模型的優(yōu)勢和劣勢:
- 優(yōu)勢是比較簡單高效,也不用打標簽,節(jié)省人力成本
- 劣勢是:1.對于初始聚類的中心點和半徑需要不斷試驗才能得到滿意的效果;2.模型決策過程不可解釋,對業(yè)務調(diào)節(jié)沒有指導價值
1.3 集成模型
集成模型通過把多個機器學習模型組合在一起,以提高預測的準確性和穩(wěn)定性。通過結(jié)合多個模型的預測結(jié)果,集成學習可以減少單個模型的偏差和方差,并提供更可靠的預測結(jié)果。集成模型就是看不同模型組合成的整體的效果,就跟我們在玩游戲的時候,小A說要去打野,小B說要越塔,小C又說要猥瑣一波,這時候集成模型就不會只聽其中的一個,要兼顧他們的情況進行匯總,比如大家投票少數(shù)服從多數(shù),或者在回歸任務中三者的預測值求平均值來處理,這些組合成的模型有強有弱,但是多個比較弱的模型集成的效果就可以媲美一個強的模型效果,這就是集成模型的意義。
在集成模型中有一種到目前使用較多的模型,就是隨機森林模型,它由多個樹模型組成,其中的每一個樹模型都是分類器,在上一篇機器學習的流程中寫道每個機器學習任務都要經(jīng)過特征提取,隨機森林在每個決策樹構(gòu)建的過程中的”隨機”體現(xiàn)在兩個關(guān)鍵方面:一是在每個樹模型的訓練過程中,從原始訓練數(shù)據(jù)中隨機選擇一部分數(shù)據(jù)點,即通過自助采樣形成不同的數(shù)據(jù)子集;二是在每個樹的每個分裂節(jié)點上,并不是考慮所有可能的特征,而是隨機選擇一部分特征進行預測。
正因為它依賴于多個樹的預測結(jié)果,所以在系統(tǒng)面臨不確定性和外部干擾時,仍然能保持比較好的預測效果,這個叫魯棒性。當然,隨機森林的另一個重要優(yōu)勢得益于樹模型的可解釋性。
1.4 支持向量機
支持向量機的特點是算法的思維方式非常有創(chuàng)造性,我們生活在三維空間中,科幻片中給我們展示更高維度的空間,在空間理論上有一句話:三維世界是四維世界的投影,支持向量機的算法機制就是類似的原理。假如我們現(xiàn)在有紅色點和藍色的點在一個平面上,需要想辦法把紅色點和藍色點區(qū)分出來,為了區(qū)分這兩者我做了一個決策邊界,這個決策邊界是一個非線性的函數(shù),這是在二維平面當中,利用非線性函數(shù)做切分相對比較難,但我們可以找一個映射函數(shù),把二維當中的點映射到三維空間當中,在三維空間中可以通過一個線性的方程區(qū)分出來,這樣任務就變得非常簡單了。所以支持向量機最核心的思想就是,我們的數(shù)據(jù)在一個低緯的環(huán)境當中,如果把數(shù)據(jù)映射到高維框架當中,我們就能得到一個更簡單的特征方程,對于模型來說學習起來會更容易。
當年很多同學學完支持向量機都會被這個理論所折服。在2012和2013年左右,求職者在面試AI方向技術(shù)崗位的時候,基本上要把支持向量機從頭到尾背下來,一般基礎(chǔ)面試部分會要求推導出一個結(jié)論,或者把支持向量機給面試官講明白。為什么面試要考核這方面的知識呢?第一是因為難,第二是因為支持向量機在當時是很先進的算法,它在當年效果非常好,直到后來神經(jīng)網(wǎng)絡的出現(xiàn),支持向量機才永遠地退出了歷史的舞臺。
1.5 貝葉斯模型
貝葉斯算法核心就是我們高數(shù)中的條件概率,咱們都玩過猜輸贏的游戲,假如有一款剪刀石頭布的游戲機,來了十個人都贏了,按照我們傳統(tǒng)的思想,輸贏是有一組參數(shù)來控制的,參數(shù)又是通過它觀測到得數(shù)據(jù)來決定的,那如果觀測到十個人都贏了,我們會認為我在玩的時候也是100%會贏,但如果讓貝葉斯模型去做預測的話,它會想之前人們一直灌輸?shù)摹笆€九輸”這個概念,所以此時他不會認為他100%贏。
在貝葉斯算法當中,多了一個先驗知識,就是還沒往模型里傳數(shù)據(jù)的時候就已經(jīng)有的知識,比如我覺得今天大概十點多下班、明天太陽肯定會升起來的,這都是我的先驗知識,這個先驗條件通過人為加入或者貝葉斯模型提前去學習獲得。
貝葉斯模型作為機器學習的經(jīng)典模型之一,已經(jīng)是幾十年前流行的算法模型,他需要的計算成本低,通常來處理文本任務,但由于它的預測是在先驗條件下完成的,一旦在模型中加入我們?nèi)藶榈南闰灄l件,模型就只能在這個限制條件下去去完成任務,但換一個業(yè)務場景這個先驗條件就不適用,這種局限性限制了它的應用范圍。
二、機器學習的六大應用場景
過去幾年,機器學習已經(jīng)滲透在我們生活的方方面面,在衣食住行、娛樂、醫(yī)療、電商、金融和工程等等領(lǐng)域都發(fā)揮著巨大的作用,接下來我從數(shù)據(jù)分析、數(shù)據(jù)挖掘、特征工程、量化交易和工業(yè)制造領(lǐng)域解析機器學習的應用情況。
2.1 數(shù)據(jù)分析
數(shù)據(jù)分析估計是大家日常聽過和用過最多的領(lǐng)域了,客觀來講,數(shù)據(jù)分析是指通過對數(shù)據(jù)的收集、清洗、處理和統(tǒng)計等,來提取數(shù)據(jù)中的有用的信息或有價值的見解,通過識別模式和趨勢來評估假設,以此來支持決策和解決問題的過程。
我們傳統(tǒng)的數(shù)據(jù)分析方法一般用excel、BI等任何擅長的工具,通過圖表等可視化的指標,比如均值、中位數(shù)、最大值、最小值以及近期的表現(xiàn)、走勢等等來解讀反應的問題或起到的作用,所以傳統(tǒng)數(shù)據(jù)分析方法比較偏統(tǒng)計多一些。在以上事件中大家不難發(fā)現(xiàn),不管找數(shù)據(jù),還是找到指標,或者分析走勢等等,完成這一系列動作的主體都是人,強調(diào)的人的主觀意愿,所以我們可以理解為,傳統(tǒng)的數(shù)據(jù)分析更加強調(diào)怎么去做人為的規(guī)則和決策,這是傳統(tǒng)的數(shù)據(jù)分析的特點。
機器學習對數(shù)據(jù)分析的作用包括數(shù)據(jù)預處理、模式識別、分類聚類、異常檢測等等,它能夠從數(shù)據(jù)中學習出模式和規(guī)律,并用于對數(shù)據(jù)進行預測和分類,決策主體從人變成更加理性的機器。
數(shù)據(jù)預處理是在收集到原始數(shù)據(jù)之后的第一個關(guān)鍵步驟,是在數(shù)據(jù)建模前必須要完成的一件事。數(shù)據(jù)預處理需要對數(shù)據(jù)做各種各樣的變換和操作,包括:抽樣、值替換、類型轉(zhuǎn)換等等,在這里先不一一展開,在之后的文章可以詳細講解。從技術(shù)實現(xiàn)上來講,數(shù)據(jù)預預處理的方法一般都有章可循,大多數(shù)時候的做法差不多,都有固定的模板,每個公司根據(jù)自己的業(yè)務選擇合適的模板。
2.2 數(shù)據(jù)挖掘
如果我們需要處理的數(shù)據(jù)量非常大,數(shù)據(jù)指標很多,這時候靠我們?nèi)藶榈闹饔^經(jīng)驗很難找到比較有價值的信息,咱們?nèi)说拇竽X的計算量是有限的,我們可以把要分析的數(shù)據(jù)交給計算機。一般給計算機哪些數(shù)據(jù)呢?有輸入、輸出,和輸入輸出之間的一個聯(lián)系,比如我們參加一個聚會,實際簽到的人數(shù)是輸出,而聚會的主題風格、特邀嘉賓、時間是不是節(jié)假日等等,這些對于聚會性質(zhì)的描述構(gòu)成這次事件的輸入,如果這次聚會的簽到率非常低,我想知道到底是哪個因素導致了這個問題?但是在找這個因素的時候,我不再通過主觀的經(jīng)驗或感受去分析,而是通過輸入和輸出的聯(lián)系去看,建立聯(lián)系的工具就是模型,建立好的這個聯(lián)系就是我們需要的結(jié)果,我們通過建立好的模型發(fā)現(xiàn)簽到率跟聚會的主題非常相關(guān)的,這是一個主要因素。這個因素是通過模型建立了關(guān)系之后發(fā)現(xiàn)的,并不是我們統(tǒng)計了均值方差中位數(shù)等各個指標去發(fā)現(xiàn)的,把數(shù)據(jù)輸入和輸出之間建立好聯(lián)系,并找到對應的關(guān)系,就個過程叫做數(shù)據(jù)挖掘。
比起傳統(tǒng)的數(shù)據(jù)分析,機器學習更偏重應用在數(shù)據(jù)挖掘領(lǐng)域,數(shù)據(jù)挖掘是從大量數(shù)據(jù)中提取有用信息和模式的過程,而算法是實現(xiàn)這一過程的核心工具,上面舉例中從輸入和輸出建立聯(lián)系的模型就是各個算法構(gòu)建起來的。
我們在建立好模型后輸出結(jié)果,做分類或回歸任務,也就是由輸入到輸出的過程,但是更多時候,我們還需要建立好的模型來推導哪個因素起了關(guān)鍵作用,這就涉及到對模型的解釋,這是數(shù)據(jù)挖掘很重要的一個作用。在工業(yè)領(lǐng)域,我們可以通過很多生產(chǎn)指標對一個流水線的產(chǎn)品或零件來檢測合不合格,但是沒辦法找出不合格的主要原因,利用數(shù)據(jù)挖掘就可以推斷出不合格是哪個環(huán)節(jié)導致的,以便接下來更好地對那個環(huán)節(jié)進行改善。
2.2 特征工程
為了解釋什么叫特征工程,先給大家看一些實際的例子,我們一般都會在電腦上安裝安全防護軟件,當我們訪問網(wǎng)頁、下載東西或者看視頻時都會發(fā)送HTTP請求,而當我們?yōu)g覽的這個地址有安全隱患時,安全軟件會提示我們。假如現(xiàn)在需要基于用戶的HTTP請求來找出這個用戶的異常行為,做異常流量的挖掘。在這個任務當中,我們首先需要建模,其次需要做分類任務,看用戶的行為是正常還是異常。
以下是我們拿到的原始數(shù)據(jù),想知道這些數(shù)據(jù)字段的含義,就需要網(wǎng)絡安全的知識。
在這段數(shù)據(jù)中包含了訪問時間、用戶端和訪問端的IP地址和端口號、發(fā)出請求中帶的參數(shù)、DI解析等等,這些也是服務器上記錄的日志數(shù)據(jù),這些原始數(shù)據(jù)是無法通過計算得出具體的指標的,而特征工程就是把數(shù)據(jù)轉(zhuǎn)化成可計算的指標,什么叫可計算的指標呢?比如日期有年月日,我們不能對日期做諸如矩陣乘法類似的數(shù)值計算,因為它是一個確定了的日期,但是不管拿到的原始數(shù)據(jù)多復雜和非結(jié)構(gòu)化,我們都能夠盡可能多地挖掘出有用的信息,比如我們能知道它屬于春夏秋冬的哪個季節(jié)等等,這些特征都可以用離散的變量來表示,比如可以用1、2、3、4分別代表春夏秋冬,除此之外我們還能夠根據(jù)日期得出是工作日還是休息日、是一個月的上旬還是下旬、是不是周五或者節(jié)假日前一天等等,以此得出哪個時間段發(fā)生異常的概率比較多,就可以推斷出時間與用戶異常行為的關(guān)系。
以上日期的例子中我們能選出一堆的特征,同樣我們可以對其他的字段提取特征,比如對于IP地址,我們可以看這個IP地址在歷史數(shù)據(jù)當中被訪問了多少次?發(fā)出了多少個請求?這個IP跟多少個不同的IP有交互?其中交互最多的是哪個等等,端口號、url同理。
到這我們可以總結(jié)出特征工程的概念,它是一個將原始數(shù)據(jù)轉(zhuǎn)換成更有利于表示潛在問題的特征的過程,從而提高機器學習模型在預測不可見數(shù)據(jù)時的準確性,當我們拿到了一個原始的輸入數(shù)據(jù)之后,我們需要盡可能把數(shù)據(jù)特征做得更豐富一些。
在實際情況當中,提取特征需要很多成員一起去絞盡腦汁地想,最后再匯總,通常模型和算法大家都在幾個固定的框架里面找,但當我們處理數(shù)據(jù)的時候就需要很多業(yè)務知識,就像上面的例子,當我們做網(wǎng)絡安全有關(guān)的業(yè)務時,就需要深入了解網(wǎng)絡安全的知識,我們首先要知道這些字段的含義才能提取特征,所以很多數(shù)據(jù)挖掘任務的難點并不是算法和模型,而是怎樣在原始輸入數(shù)據(jù)中找出需要的特征,接下來才能套用算法和模型。在實際應用當中,相較于改進算法和模型調(diào)參,多提取特征對于業(yè)務的幫助來說是性價比很高的方式,科學家們投入大量的時間精力去研究算法,最終使得模型的效果提升百分之零點幾,但是項目成員多找出些特征就可以在短時間內(nèi)取得很不錯的效果,成本低見效快。
特征決定了結(jié)果的上限,算法只能決定如何逼近這個上限,無論后續(xù)做什么,特征工程都是最核心的一步,而且套路難固定,基本全靠業(yè)務分析。在2012年之前,計算機視覺、自然語言處理等方面的特征提取靠的是機器學習,但是效果差強人意,因為靠人為地提取特征太有限,在深度學習崛起后,圖像文本語音的特征一般都靠深度學習來提取。
2.3 量化交易
量化交易是時間序列預測,它的預測跟數(shù)據(jù)挖掘不一樣,比如接下來是漲還是跌?漲跌的可能性分別有多大?預測下一個點的實際值是什么等等,通常我們在預測序列的時候不僅預測下一個點,還需要預測未來連續(xù)一段時間的趨勢,因為看走勢的下一時刻是漲還是跌可能不太重要,要看它連續(xù)的一個時間段總體是漲還是跌,這個就涉及到時間序列。
但是時間序列比較難預測,如果有一個股票的走勢圖,現(xiàn)在只有1號到19號的真實數(shù)據(jù),接下來要預測是20號,算法可以基于1號到19號的歷史數(shù)據(jù)去預測20號的數(shù)據(jù),但接下來要預測21號的數(shù)據(jù)跟20號的數(shù)據(jù)關(guān)系非常大,會基于前面1號到20號的數(shù)據(jù)序列來預測,那22號的是基于前面1到21號的來預測。大家會發(fā)現(xiàn),預測20號的數(shù)據(jù)是根據(jù)實際值,但是預測21號的數(shù)據(jù)要計算之前包括20號的數(shù)據(jù),但問題是,20號的數(shù)據(jù)準確性我們未知,21號的數(shù)據(jù)準確性也未知,我們預測未來時間的序列是否合格都未知。
所以機器學習在時間序列當中很難去應用,尤其是量化交易。而且漲跌有時候并不服從某一個規(guī)律,很多時候都是突發(fā)現(xiàn)象,比如國家突然發(fā)布一個政策,相關(guān)的股都會受到很大的波動,這就是一個突發(fā)事件,但是模型不可能預知國家什么時候發(fā)布哪個政策,所以在機器學習領(lǐng)域要基于現(xiàn)在預測未來,基于未來再預測未來是很難的事。
如果數(shù)據(jù)的分布是固定的,比如學生都是早上起床,晚上睡覺,形成這樣的固定模式,機器學習就能找到并學習規(guī)律,但是如果未來在用這個模型的時候我們的數(shù)據(jù)分布變了,它效果就不行了,量化交易就是這樣。同樣,AI也不能解決跨域的問題啊,在一個場景中訓練的模型效果如果換一個場景就不適用了。
2.4 工業(yè)制造等領(lǐng)域
大量的工業(yè)(制造業(yè))企業(yè)現(xiàn)在面臨數(shù)字化轉(zhuǎn)型,機器學習早已賦能制造業(yè),在新能源、汽車等領(lǐng)域都有應用。在新能源汽車領(lǐng)域,以前按照合作經(jīng)驗或者習慣來篩選電池原料等供應商,當輸入各個供應商原材料,再讓算法模型輸出產(chǎn)品的合格率,用數(shù)據(jù)來衡量就可以節(jié)省很多人為因素。
除此之外在其他工業(yè)制造行業(yè)也有大量的應用,比如在汽車行業(yè)利用機器學習建模碰撞檢測,從而尋找合適的車型設計指標;在化工企業(yè)利用機器學習建模進行安全識別,來實時監(jiān)控安全問題;在車間流水線上進行智能識別、缺陷檢測等,替代大量人工操作等。機器學習在風控領(lǐng)域一般對信用風險進行建模,比如互聯(lián)網(wǎng)金融風險建模、利用大數(shù)據(jù)對個人信貸建模進行評分,還有對市場進行定價建模等,在這里不多贅述。
本文由 @AI產(chǎn)品薇薇 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發(fā)揮!