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