AI產品經理要了解的算法有哪些?
“算法”源自波斯學者al-Khwarizmi名字的拉丁化。他于9世紀在巴格達撰寫了著作《印度數字計算》一書,該書向西方引入了印度教的數字,以及相應的計算數字的新方法,即算法。
中世紀拉丁語“algorismus”指的是用印度數字進行四個基本數學運算——加法,減法,乘法和除法的程序和捷徑。后來,術語“算法”被人們用作表示任何逐步的邏輯過程,并成為計算邏輯的核心。
算法的歷史可以分為三個階段:
- 在古代,算法可以認為是程序化、規則化儀式的過程,通過該過程實現特定的目標和傳遞規則;
- 在中世紀,算法是輔助數學運算的過程;
- 在現代,算法是邏輯過程,由機器和數字計算機完全機械化和自動化。
算法就是計算或者解決問題的步驟。想用計算機解決特定的問題,就要遵循相應的算法。這里所說的特定問題多種多樣,比如:“將隨意排列的數字按從小到大的順序重新排列”、“尋找出發點到目的地的最短路徑”等等。
現在算法已經廣泛應用到了我們生活當中,在瀏覽淘寶的時候,推薦的商品,就應用到了協同推薦算法,我和老王都買了a, b這兩個商品,并且老王還買了c。那么,有比較大的概率我也會喜歡c商品。推薦算法認為,當你喜歡一個物品時,你會傾向于也喜歡同類型的其他物品。于是,當用戶翻牌了其中一首歌,與它相似的那一堆歌曲很快就會亮起來然后被放進推薦中。
通用算法有哪些
算法時代已經到來,算法帶來的變化就發生在我們身邊:滴滴打車使用算法來連接司機和乘客;美團用算法連接了商家和客戶和物流,并通過規劃最優路徑將食物直接“投遞”到手中。
智能算法正在顛覆整個行業。但是,這種改變才剛剛開始,未來十年將有可能看到所有行業都受到算法的影響。算法可以更快做出更明智的決策,并且降低風險,這就是算法的意義。
解決不同的問題需要用到不同的算法,或者是幾種算法配合使用。熟悉并了解各類算法,對AI產品經理在設計產品的時候可以起到輔助決策。
下面我們一起來看看都有哪些算法:
1. 決策樹
決策樹是一種樹形結構,其中每個內部節點表示一個屬性上的測試,每個分支代表一個測試輸出,每個葉節點代表一種類別。常見的決策樹算法有C4.5、ID3和CART。
決策樹的目的是用于分類預測,即各個節點需要選取輸入樣本的特征,進行規則判定,最終決定樣本歸屬到哪一棵子樹。決策樹是一種簡單常用的分類器,通過訓練好的決策樹可以實現對未知的數據進行高效分類。
2. 隨機森林
隨機森林是最流行也最強大的機器學習算法之一,它是一種集成機器學習算法。隨機森林就是通過集成學習的思想將多棵樹集成的一種算法,它的基本單元是決策樹,上面我們講過啥是決策樹,而它的本質屬于機器學習的一大分支——集成學習方法。
隨機森林的名稱中有兩個關鍵詞,一個是“隨機”,一個就是“森林”?!吧帧蔽覀兒芎美斫?,一棵叫做樹,那么成百上千棵就可以叫做森林了,這樣的比喻還是很貼切的,其實這也是隨機森林的主要思想——集成思想的體現。
隨機森林的主要作用是降低模型的復雜度,解決模型的過擬合問題。
3. Logistic 回歸
Logistic 回歸是機器學習從統計學領域借鑒過來的另一種技術。其主要思想是:根據現有數據對分類邊界線(Decision Boundary)建立回歸公式,以此進行分類,它是二分類問題的首選方法。
像線性回歸一樣,Logistic 回歸的目的也是找到每個輸入變量的權重系數值。但不同的是,Logistic 回歸的輸出預測結果是通過一個叫作「logistic 函數」的非線性函數變換而來的。
4. K 最近鄰算法
K 最近鄰(KNN)算法是非常簡單而有效的,KNN 的模型表示就是整個訓練數據集,這很簡單吧?
對新數據點的預測結果是通過在整個訓練集上搜索與該數據點最相似的 K 個實例(近鄰),并且總結這 K 個實例的輸出變量而得出的。對于回歸問題來說,預測結果可能就是輸出變量的均值;而對于分類問題來說,預測結果可能是眾數(或最常見的)的類的值。
最近鄰算法的思想很簡單,“距離”相近的事物總會具有更多的共性。例如:預測一個人的飲食風格只是根據與他相近的人來預測的,而并沒有說明這個人的年齡、收入是如何影響他的飲食風格的。
5. 排序算法
在我們生活的這個世界中到處都是被排序過的。站隊的時候會按照身高排序,考試的名次需要按照分數排序,如何快速高效排序,有多種算法,經典的排序算法有插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序。其中插入排序是一種最簡單直觀的排序算法,它的工作原理是通過構建有序序列,對于未排序數據,在已排序序列中從后向前掃描,找到相應位置并插入。
如下圖所示:
把這些算法按照穩定性來分可以分為:
- 穩定的排序算法:冒泡排序、插入排序、歸并排序和基數排序;
- 不是穩定的排序算法:選擇排序、快速排序、希爾排序、堆排序。
排序算法有很多演示視頻大家可以搜來看看,這里不一一講解了。
6. 查找算法
查找是在大量的信息中尋找一個特定的信息元素,在計算機應用中,查找是常用的基本運算,例如編譯程序中符號表的查找。
最為經典的算法有順序查找算法、二分查找算法、插值查找算法、斐波那契查找算法、樹表查找算法、分塊查找算法、哈希查找等。
要了解哈希查找就要先了解哈希函數,要了解哈希函數就要先了解哈希表,哈希表,亦稱散列表,是通過函數映射的方式將關鍵字和存儲位置建立聯系,進而實現快速查找。哈希函數的規則是通過某種轉換關系,使關鍵字適度的分散到指定大小的的順序結構中,越分散,則以后查找的時間復雜度越小,空間復雜度越高。
哈希查找的思路很簡單,如果所有的鍵都是整數,那么就可以使用一個簡單的無序數組來實現:將鍵作為索引,值即為其對應的值,這樣就可以快速訪問任意鍵的值。這是對于簡單的鍵的情況,我們將其擴展到可以處理更加復雜的類型的鍵?,F在的以圖搜圖的關鍵算法就是應用了哈希查找算法。
7. 貪心算法
所謂貪心算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的局部最優解。
貪心算法的基本思路是首先建立數學模型來描述問題,把求解的問題分成若干個子問題。然后對每一子問題求解,得到子問題的局部最優解,最后把子問題的解局部最優解合成原來解問題的一個解。因為用貪心算法只能通過解局部最優解的策略來達到全局最優解,因此,一定要注意判斷問題是否適合采用貪心算法策略,找到的解是否一定是問題的最優解。
8. 動態規劃
動態規劃(Dynamic Programming)是一種把原問題分解為相對簡單的子問題以求解的方法,為了避免多次解決重復的子問題,子問題的結果都被保存,直到整個問題得以解決。
動態規劃的思考過程可以總結為:
- 大事化?。阂粋€較大的問題,通過找到與子問題的重疊,把復雜的問題劃分為多個小問題,也稱為狀態轉移;
- 小事化了:小問題的解決通常是通過初始化,直接計算結果得到。
9. 圖論算法
圖論起源于一個著名的數學問題——柯尼斯堡(Konigsberg)問題,即七橋問題。1738 年,瑞典數學家Eular 解決了這個問題,他也成為了圖論的創始人。
如今圖論是數學的一個分支,它以圖為研究對象。圖論中的圖是由若干給定的點及連接兩點的線所構成的圖形,這種圖形通常用來描述某些事物之間的某種特定關系,用點代表事物,用連接兩點的線表示相應兩個事物間具有這種關系。圖論算法是用來求解實際問題的一種方法,在數學建模的求解過程中經常應用。
在計算機科學領域有著各種各樣的圖論算法,如:
- 深度優先遍歷,廣度優先遍歷
- 單源最短路,多源最短路
- 最小生成樹
- 最大流
- 拓撲排序,強連通分量
- 最小生成樹
10. 樸素貝葉斯
樸素貝葉斯是一種簡單而強大的預測建模算法。
該模型由兩類可直接從訓練數據中計算出來的概率組成:
- 數據屬于每一類的概率;
- 給定每個 x 值,數據從屬于每個類的條件概率。一旦這兩個概率被計算出來,就可以使用貝葉斯定理,用概率模型對新數據進行預測。當你的數據是實值的時候,通常假設數據符合高斯分布(鐘形曲線),這樣你就可以很容易地估計這些概率。
11. 邏輯回歸
邏輯回歸是一種用于解決監督學習問題的學習算法,進行邏輯回歸的目的,是使訓練數據的標簽值與預測出來的值之間的誤差最小化。邏輯回歸廣泛應用于機器學習中,其中清洗臟數據最為廣泛,在數據行業有一個笑話是,數據科學中80%的工作是數據清洗,另外20%是抱怨數據清洗。
邏輯回歸具有實現簡單,分類時計算量非常小,速度很快,存儲資源低;便利的觀測樣本概率分數;計算代價不高,易于理解和實現等優點。
12. 線性回歸
在統計學和機器學習領域,線性回歸可能是最廣為人知也最易理解的算法之一。
預測建模主要關注的是在犧牲可解釋性的情況下,盡可能最小化模型誤差或做出最準確的預測。我們將借鑒、重用來自許多其它領域的算法(包括統計學)來實現這些目標。
線上回歸有兩個主要用處:預測 (prediction)與因果分析 (causal analysis)。
- 預測指的是用已觀察的變數來預測依變項;
- 因果分析則是將自變項當作是依變項發生的原因。
13. SVM支持向量機
支持向量機(support vector machine)是一種分類算法,通過尋求結構化風險最小來提高學習機泛化能力,實現經驗風險和置信范圍的最小化,從而達到在統計樣本量較少的情況下,亦能獲得良好統計規律的目的。
通俗來講,它是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器,即支持向量機的學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。
14. 人工神經網絡
人工神經網絡是在現代神經科學的基礎上提出和發展起來的一種旨在反映人腦結構及功能的抽象數學模型。它具有人腦功能基本特性:學習、記憶和歸納。人工神經網絡是機器學習的一個龐大的分支,有幾百種不同的算法。
重要的人工神經網絡算法包括:感知器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網絡,自組織映射(Self-Organizing Map, SOM)。學習矢量量化(Learning Vector Quantization, LVQ)
15. K-Means聚類
k-means算法是非監督聚類最常用的一種方法,因其算法簡單和很好的適用于大樣本數據,廣泛應用于不同領域,K-means聚類算法用來查找那些包含沒有明確標記數據的組。這可以用于確定商業假設,存在什么類型的分組或為復雜的數據集確定未知組。一旦該算法已運行并定義分組,任何新數據可以很容易地分配到正確的組。
16. 協同過濾算法
協同過濾,從字面上理解,包括協同和過濾兩個操作。所謂協同就是利用群體的行為來做決策(推薦),生物上有協同進化的說法,通過協同的作用,讓群體逐步進化到更佳的狀態。
對于推薦系統來說,通過用戶的持續協同作用,最終給用戶的推薦會越來越準。而過濾,就是從可行的決策(推薦)方案(標的物)中將用戶喜歡的方案(標的物)找(過濾)出來。
具體來說,協同過濾的思路是通過群體的行為來找到某種相似性(用戶之間的相似性或者標的物之間的相似性),通過該相似性來為用戶做決策和推薦。只不過協同過濾算法依賴用戶的行為來為用戶做推薦,如果用戶行為少(比如新上線的產品或者用戶規模不大的產品),這時就很難發揮協同過濾算法的優勢和價值,甚至根本無法為用戶做推薦。這時可以采用基于內容的推薦算法作為補充。
17. 分層聚類
分層聚類,又稱層次聚類、系統聚類,顧名思義是指聚類過程是按照一定層次進行的。比如當前有8個裁判對于300個選手進行打分,試圖想對8個裁判進行聚類,以挖掘出裁判的打分偏好風格類別情況,此時則需要進行分層聚類。
18. 密度聚類算法
DBSCAN 是一種基于密度的聚類算法,它類似于均值漂移,但具有一些顯著的優點。其主要原理是只要鄰近區域的密度(對象或數據點的數目)超過某個閾值,就繼續聚類,該算法擅于解決不規則形狀的聚類問題,廣泛應用于空間信息處理,SGC,GCHL,DBSCAN算法、OPTICS算法、DENCLUE算法。
19. 高斯聚類模型
高斯混合模型,顧名思義,多個高斯分布的結合組成的概率分布模型,簡稱為GMM。
關于高斯分布模型的基本理論。GMM的歸納偏好為數據服從 Gaussian Distribution ,換句話說,數據可以看作是從數個 Gaussian Distribution 中生成出來的。所以在這個假設前提下,再反推已知一堆數據,必須還得知道這些數據有幾個部分(類)組成吧,知道這個基本參數,才能正確的進行聚類吧。
20. EM算法
EM算法常用在有隱變量的參數的求解,比如混合高斯模型(Gaussian Mixture Model)。EM算法是可以收斂的,但是可能會陷于局部最小值,所以我們一般需要多次去初始值,選擇最后的那個作為我們的結果。
21. Adaboost
AdaBoost 是第一個為二分類問題開發的真正成功的 Boosting 算法。它是人們入門理解 Boosting 的最佳起點。當下的 Boosting 方法建立在 AdaBoost 基礎之上,最著名的就是隨機梯度提升機。
22. Boosting
Boosting 是一種試圖利用大量弱分類器創建一個強分類器的集成技術。要實現 Boosting 方法,首先你需要利用訓練數據構建一個模型,然后創建第二個模型(它企圖修正第一個模型的誤差)。直到最后模型能夠對訓練集進行完美地預測或加入的模型數量已達上限,我們才停止加入新的模型。
當有多個算法都可以解決同一個問題時,我們該如何選擇呢?在選擇算法上,考量的標準不一樣。
消耗算力小:簡單的算法對人來說易于理解,也容易被寫成程序,而在運行過程中不需要耗費太多空間資源的算法,就十分適用于內存小的計算機。
時效性強:對于實時響應的程序我們一般來說我們最為重視的是算法的運行時間,即時效,也是從輸入數據到輸出結果這個過程所花費的時間。
總結
在一般人眼中,算法是一種深奧枯燥難以理解的東西。但是在AI產品經理眼中,算法是一把把好用的工具,可以幫助產品經理搭建出一個個完美的杰作。對算法的了解程度不必太深,比較產品經理不是碼代碼的,但是了解算法的原理及應用場景,必不可少。
本文也只是一個大綱,真正弄懂算法還需深入研究一番。
#相關閱讀#
作者:老張,宜信集團保險事業部智能保險產品負責人,運營軍師聯盟創始人之一,《運營實戰手冊》作者之一。
本文由 @老張 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協議。
能不能再介紹或者舉例每種算法分別應用在什么樣的功能上?
這個可以有
我也很想知道舉例一下每種算法分別應用在什么功能上,例如熱度算法,一般用牛頓冷卻定律去做熱度推薦功能