数据产品必备技术知识:机器学习及常见算法,看这一篇就够了
大家都知道,產品經理需要懂技術,很多面試官都偏好有技術背景的同學,畢竟產品經理經常要和開發同學相愛相殺。當然也不是一定要求能夠精通,但是至少不要讓這塊成為溝通的障礙,懂點技術,實際工作中也能少被開發同學“忽悠”,講道理時不會畏手畏腳,更有底氣。
對于數據產品,不僅要懂技術,還要懂更多的技術。
比如說產品都要懂:什么是程序?程序如何組裝成功能?服務端客戶端數據交互是咋樣的?數據庫是啥?里面的表、關系結構、字段、字段類型是啥?常見的技術名詞如接口、同步異步、重構等等又是指啥?
除了這些,數據產品還要懂數據相關的技術,比如說數據倉庫,機器學習數據挖掘,大數據框架或者常用的數據開發工具hadoop、hive、spark等等這些。所以,從某些角度而言,數據產品比其他產品門檻要更高點。
數據倉庫已經寫了一篇(雖然還沒寫完),數據產品必備技術知識:數據倉庫入門,看這一篇就就夠了,后面會寫個進階版。
這一篇主要梳理機器學習及常見算法。
一、什么是機器學習
機器學習有下面幾種定義:
機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特別是如何在經驗學習中改善具體算法的性能。機器學習是對能通過經驗自動改進的計算機算法的研究。
機器學習是用數據或以往的經驗,以此優化計算機程序的性能標準。
上述來自維基百科,有點晦澀。
機器學習是一種通過利用數據,訓練出模型,然后使用模型預測的一種方法。
其實這個過程,一個成語就可概括:舉一反三。
此處以高考為例,高考的題目在上考場前我們未必做過,但在高中三年我們做過很多很多題目,懂解題方法,因此考場上面對陌生問題也可以算出答案。
機器學習的思路也類似:我們能不能利用一些訓練數據(已經做過的題),使機器能夠利用它們(解題方法)分析未知數據(高考的題目)?
事實上,機器學習的一個主要目的,就是把人類思考歸納經驗的過程,轉化為計算機通過對數據的處理計算得出模型的過程。
二、機器學習術語
- 訓練:數據通過機器學習算法進行處理,這個過程在機器學習中叫做“訓練”。
- 模型:處理的結果可以被我們用來對新的數據進行預測,這個結果一般稱之為“模型”。
- 預測:對新數據的預測過程在機器學習中叫做“預測”。
- 特征:即數據的屬性,通過數據的這些特征可以代表數據的特點。
- 標簽:對數據的預測結果。
特征和標簽,結合下面的內容更好了解。
三、機器學習常見算法
先說算法,其實算法是個很大的概念,除了機器學習算法,還有很多非機器學習算法,如編程里解決排序的快排、堆排、冒泡,也是算法。只是機器學習太火了,一提算法,多想到的是機器學習算法。
1. 決策樹
決策樹,一種預測模型,代表的是對象屬性與對象值之間的一種映射關系。
一般來講通過學習樣本得到一個決策樹,這個決策樹能夠對新的數據給出正確的分類。
這里舉一個簡單的例子:比如說,樣本數據為用戶的行為信息,同時已知每個用戶的分類信息,假設分類為流失用戶、非流失用戶。
然后我根據多個樣本數據訓練出的多種多樣的模型,下面畫了一個簡單的決策模型,其中事件可以是:是否有過訂單,被贊次數超過5次等等這種(事件不是啥專有名詞哈,我這里是為了偷懶不去舉例,而用它代替)。
此外,為了驗證哪個模型更準,可以再用一組新的樣本數據作為測試數據,套入模型,看看模型跑出的分類和實際分類誤差多少,從此來衡量模型的準確性。
這里引入一下訓練樣本和測試樣本,很多訓練過程都是這樣處理的,樣本數據劃分為訓練樣本和測試樣本,訓練樣本用來生成模型,測試樣本用來驗證準確性。
同時這里面的用戶的行為事件就是“特征”,分類(是否為流失用戶)就是“標簽”。
回顧一下:
- 特征:即數據的屬性,通過數據的這些特征可以代表數據的特點。
- 標簽:對數據的預測結果。
至于模型是怎么訓練生成的,具體算法啥樣,就不介紹了(其實是我也寫不清楚)。
決策樹在實際工作中基本應用于給人群分類,最好的應用場景是要把人群分類,并找到不同類別人群的不同特征,比如上面的例子,就可以做個流失模型,通過用戶的行為來提前找到哪些人有流失風險,并通過專門優惠等手段挽留。也可以發現哪些關鍵節點導致了流失,在這些節點上加一些運營策略來減少流失。
為了防止上圖誤導大家,找了其他的決策樹模型示例。
2. 回歸算法
統計學來講,利用統計方法來建立一個表示變量之間相互關系的方程,這樣的統計方法被稱為回歸分析。
回歸算法就可以理解是研究不同變量相關關系的一個機器學習算法。多說一句,其實很多機器學習算法都是來自統計學。
回歸算法有兩個重要的子類:線性回歸和邏輯回歸。
線性回歸
這里從簡單線性回歸入手介紹,也就是我舉得例子只是研究兩個樣本變量之間的線性關系。
假設我們來研究考試成績和復習時間的關系,數據如下:
我想找出考試成績和復習時間的規律,怎么找呢?
這里就是擬合出一條直線,所以這條直線需要“穿過”所有的點,并且與各個點的距離盡可能的小。
解釋一下,簡單的線性回歸一般是使用“最小二乘法”來求解,最小二乘法的思想:假設我們擬合出的直線代表數據的真實值,而觀測到的數據代表擁有誤差的值。為了盡可能減小誤差的影響,需要求解一條直線使所有誤差的平方和最小。
假設擬合出的這條直線的函數如下:
學習成績 = a * 復習時間 + b
a、b都是直線的參數。獲得這些參數以后,我就可以計算出學生的成績。
這個結果可能和實際有些偏離,由于這條直線綜合考慮了大部分的情況,因此從“統計”意義上來說,這是一個最合理的預測。但是如果數據越多,模型就越能夠考慮到越多的情況,由此對于新情況的預測效果可能就越好。所以其實機器學習準不準,很大程度看你喂的數據夠不夠多。
邏輯回歸
邏輯回歸是一種與線性回歸非常類似的算法,屬于分類算法。
邏輯回歸只是對線性回歸的計算結果加上了個函數進行處理,將數值結果轉化為了0到1之間的概率,根據這個概率可以做預測,例如概率大于0.5,則腫瘤是否是惡性的等等。從直觀上來說,邏輯回歸是畫出了一條分類線,見下圖(也有劃出非線性分類線的邏輯回歸)。
假設我們有一組腫瘤患者的數據,這些患者的腫瘤中有些是良性的(圖中的藍色點),有些是惡性的(圖中的紅色點)。這里腫瘤的紅藍色可以被稱作數據的 “標簽”。同時每個數據包括兩個“特征”:患者的年齡與腫瘤的大小。我們將這兩個特征與標簽映射到這個二維空間上,形成了我上圖的數據。
當我有一個綠色的點時,該判斷這個腫瘤是惡性的還是良性的呢?根據紅藍點我們訓練出了一個邏輯回歸模型,也就是圖中的分類線。這時,根據綠點出現在分類線的左側,因此我們判斷它的標簽應該是紅色,也就是說屬于惡性腫瘤。
3. 神經網絡
神經網絡算法是80年代機器學習界非常流行的算法,不過在90年代中途衰落。現在,攜著“深度學習”之勢,神經網絡重裝歸來,重新成為最強大的機器學習算法之一。
神經網絡的學習機理就是分解與整合。
在這個網絡中,分成輸入層、隱藏層和輸出層。
輸入層負責接收信號,隱藏層負責對數據的分解與處理,最后的結果被整合到輸出層。
比方說,一個正方形,分解為四個折線進入視覺處理的下一層中。四個神經元分別處理一個折線(每個處理單元事實上就是一個邏輯回歸模型,邏輯回歸模型接收上層的輸入,把模型的預測結果作為輸出傳輸到下一個層次)。
每個折線再繼續被分解為兩條直線,然后處理,再將每條直線再被分解為黑白兩個面處理。
整個過程就是一個復雜的圖像變成了大量的細節進入神經元,神經元處理以后再進行整合,最后得出了看到的是正方形的結論。
4. SVM(支持向量機)
從某種意義上來說是邏輯回歸算法的強化:通過給予邏輯回歸算法更嚴格的優化條件,支持向量機算法可以獲得比邏輯回歸更好的分類界線。但是如果沒有某類函數技術,則支持向量機算法最多算是一種更好的線性分類技術。
5. 聚類算法
聚類算法的目的則是通過訓練,推測出這些數據的標簽。訓練數據都是不含標簽的,算是典型的無監督算法,后續會介紹有無監督算法的區分。
讓我們還是拿一個二維的數據來說,某一個數據包含兩個特征。我希望通過聚類算法,給他們計算分類打上標簽,我該怎么做呢?
簡單來說,聚類算法就是計算種群中的距離,根據距離的遠近將數據劃分為多個族群。
聚類算法中最典型的代表就是K-Means算法
k-means聚類的目的是:把n個點(可以是樣本的一次觀察或一個實例)劃分到k個聚類中,使得每個點都屬于離他最近的均值(此即聚類中心)對應的聚類,以之作為聚類的標準。
K-means常用的場景是在不清楚用戶有幾類時,嘗試性的將用戶進行分類,并根據每類用戶的不同特征,決定下步動作。(決策樹也可以做這件事,但需要先定義出特征,因此在探索特征未知的領域時,聚類可能更好用一些)
6. 降維算法
也是一種無監督學習算法,其主要特征是將數據從高維降低到低維層次。
例如,房價包含房子的長、寬、面積與房間數量四個特征,也就是維度為4維的數據。可以看出來,長與寬事實上與面積表示的信息重疊了,例如面積=長 × 寬。通過降維算法我們就可以去除冗余信息,將特征減少為面積與房間數量兩個特征。
7. 推薦算法
推薦系統中常用到的算法包括協同過濾算法(item_base,user_base)、用戶偏好算法、關聯規則算法、聚類算法、內容相似性算法(content_base),以及一些其它的補充算法。
其中最有名的算法就是協同過濾算法,核心思想是物以類聚,人以群分。具體可以分為基于用戶的協同過濾算法和基于物品的協同過濾算法。
item_base是根據集體用戶行為算出物品間的相似度,然后把與用戶看過的物品或者購買過的物品最相似的物品推薦給該用戶。
user_base是根據集體行為計算用戶之間的相似度,比如A跟B計算出來非常相似,則可以把B喜歡的內容,但A還沒有看過,推薦給A。
用戶偏好算法是根據用戶偏好算出來用戶感興趣的內容/產品,然后推薦給用戶。
關聯規則算法是算出物品間的支持度和置信度。最常見的應用是組合購買,啤酒和尿不濕是非常經典的例子了。
聚類算法,可以對用戶進行聚類,也可以對產品進行聚類。聚類后可以針對大類進行推薦,或者繼續計算用戶類和產品類之間的關系。
content_base是根據物品本身的屬性進行關聯性運算,計算出物品間的相似性,最常見的應用是同類推薦。
四、機器學習算法分類(監督和無監督區別)
訓練數據有標簽,則為監督學習算法,沒標簽則為無監督學習算法,推薦算法較為特殊,既不屬于監督學習,也不屬于非監督學習,是單獨的一類。
上述算法除了聚類、降維屬于無監督學習算法,推薦是單獨一類,其余都是監督學習算法。
其實還有半監督學習算法,也就是訓練數據部分有標簽,部分沒標簽。
總體來講,相對對于監督學習,無監督學習如聚類算法效果差了些。但是監督學習需要標簽,標簽哪里來? 在實際應用中,標簽的獲取常常需要極大的人工工作量,有時甚至非常困難。現在很多做大數據的會招人工來打標簽,制定打標規則啥的。
現在再看機器學習的概念,其實本質就是找到特征和標簽間的關系。這樣當有特征而無標簽的未知數據輸入時,我們就可以通過已有的關系得到未知數據標簽。
本文總算是進入尾聲,主要是分享自己平常的學習總結,寫下來,一個是加深自己的理解,二是希望對和我一樣是算法門外漢但是又想了解學習的同學能夠有所幫助。不過這篇對于專門想做算法工程師的同學可能不太合適,還是要看專業的視頻經典的書籍來學習。上述算法參考了很多大神的文章,能看的懂的,自己的理解就寫的多點,太晦澀的,就只是整理下來了。
寫這個數據產品技術知識系列也是有感自己當初想要了解這些,網上沒找到針對產品來講的、系統一點、通俗一點的文章,很多時候是一個概念一個概念零散的去找。
之前的文章可以了解一下哈:
數據產品必備技術知識:數據倉庫入門,看這一篇就就夠了
大數據告訴你:如何求職數據產品經理?
關注公眾號suxudata 回復:數倉 可以獲得一本數倉入門教程哈
總結
以上是生活随笔為你收集整理的数据产品必备技术知识:机器学习及常见算法,看这一篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品经理的高阶能力:商业思维基于商业画布
- 下一篇: PMCAFF推出咖啡日报 更多好内容等你