模型描述和算法
文章目錄
- 導讀
- 算法的定義
- 原型的概念
- 模型的概念
- 建模的必要性
- 算法和模型
- 機器學習中模型的描述
導讀
我們在描述算法的時候,往往也會提到“算法模型”這個概念。模型是什么?算法和模型之間有什么聯系?
算法的定義
如果你在大學學過了數據結構,這句話你應該耳熟能詳:
通俗地講,算法是解決問題的一種方法或一個過程。更嚴格地講,算法是由若干條指令組成的有窮序列,且滿足下述4條性質
-
輸入:0個或者多個外部提供的量作為算法輸入項
-
輸出:算法應當產生至少一個量作為輸出項
-
確定性:組成算法的每條指令是清晰的、沒有歧義的
-
有限性:算法中每條指令的執行次數是有限的,執行每條指令的時間也是有限的
——摘自《計算機算法設計與分析》(第五版),王曉東著
那,模型又是什么?
原型的概念
在說明模型之前必須說說原型是什么。原型,簡單的說,就是最原始的模型。動漫里經常有作者以身邊的誰為原型創作的,打個比方的話,應該就是40原老師筆下的貓娘了。(吐槽:胖次專業戶畫貓娘有什么不對嘛)
當然原型不限于這個。還有其他的比如:
實際生產中經理最關心的實際上也是一種原型,即生產、管理的實際對象。
或者是研究員在解決實際問題的時候,對于新假設的提出有啟發作用的也叫原型。
模型的概念
當我們拿到一個問題之后,如果分析出了原型,我們就能夠進行一定程度的總結,然后忽略部分細節、加強部分計算,最終就能夠將一個實際問題的解法提取成一套數學方程式。
一個很簡單的例子:你想帶你家的幾只貓娘出去玩,可是考慮到在玩上需要多花錢,于是你選擇在路費上盡可能節省。這個問題大家應該熟悉得不能再熟悉了吧,就是線性規劃。把一個實際的問題整理成多條直線的相交問題,這就是建模。
我們知道,現在普遍使用的算法例如深度搜索、哈密頓回路等等經典算法都是經過很長時間的發現、假說、論證、優化的不停循環才產生出來,而這個論證的過程就是將算法抽象為一系列的數學模型,然后計算時間復雜度、空間復雜度,最終在比較中篩選更為優秀的。
也就是說:
模型是一類問題的解題步驟,亦即一類問題的算法。
——摘自慕碼人2483693對模型與算法之間是什么關系一問的回答
建模的必要性
那么,為什么建模呢?
一個實際問題往往涉及很多很多個方面。舉個例子:你們家的小貓娘突然有一天看著像渾身沒勁,往往有無數個原因,被你冷落了、陪你玩累了、有點生病了、發情期到了等等。
但是,這么多因素誰知道是什么情況啊,萬一沒病給整出病了,那不得心疼得要命。所以,你拿出了貓娘觀察記錄小本本,查詢了你們家的貓娘從小以來點點滴滴的反應,高興了、傷心了、痛苦了、冷漠了等等應有盡有。然后針對這些表現,你一項項對比,并得出一個相關系數。找出所有項目中相關系數最大的一項,然后發現你的貓娘就只是玩累了而已。給她鋪條毯子好好睡吧。
這就是建模的好處,能夠從所有的選項中找出相關變量并剔除無關變量,甚至能夠分析相關變量到底如何影響最終結果。
算法和模型
算法和模型往往都是分不開的。算法是一類問題的抽象解答,而模型則是一系列算法的數學表達。
如果問題不是一類問題,就單單類似這只貓接下來要做什么這樣的問題,算法也就失去了存在的必要;同樣的,算法如果也不是一系列算法,就單單類似這只狗吃骨頭的流程這樣的算法,模型也沒有存在的必要。就像是數據結構中的抽象實體類ADT一樣,它的存在就是為了描述一系列相似問題的解法的。
所以,你能夠理解為什么會有推薦算法模型了么?因為一系列的APP都將會根據用戶的使用情況收集偏好并提高用戶體驗,這些APP囊括了生活中的方方面面,包括美食、服飾、手辦、模玩、家具還有電子產品甚至性癖(比方說pixiv)等等。因為類似,這就抽象出來了。
機器學習中模型的描述
正如一開始所說的,算法需要有0個以上的輸入、1個以上的輸出,機器學習中的算法也是一樣的,有著0個以上的數據集輸入,輸出至少一個結果。數據集中包括了大量的具有相似數據結構的信息,可以是事實,也可以是虛擬信息;而輸出則是根據結果的預測、分類等等。就如下圖所示:
這個機器學習的算法并不是一成不變的,同樣也是在不斷的實踐和訓練中逐漸發現最貼近事實、最能概括所有內容的數學模型和算法。
是不是能理解了?
總結
- 上一篇: 智慧生活一“手”开启,贝迪特掌静脉系统可
- 下一篇: 02-链表结构(Linked list)