數(shù)據(jù)產(chǎn)品必備技術(shù)知識(shí):機(jī)器學(xué)習(xí)及常見(jiàn)算法,看這一篇就夠了
大家都知道,產(chǎn)品經(jīng)理需要懂技術(shù),畢竟產(chǎn)品經(jīng)理經(jīng)常要和開(kāi)發(fā)同學(xué)相愛(ài)相殺。不一定要精通,但至少不要讓這塊成為溝通的障礙。懂點(diǎn)技術(shù),實(shí)際工作中也能少被開(kāi)發(fā)同學(xué)“忽悠”,講道理時(shí)不會(huì)畏手畏腳,更有底氣。對(duì)于數(shù)據(jù)產(chǎn)品經(jīng)理來(lái)說(shuō),不僅要懂技術(shù),還要懂更多的技術(shù)。本文分享了數(shù)據(jù)產(chǎn)品經(jīng)理必備的那些技術(shù)知識(shí)。
產(chǎn)品都要懂:什么是程序?程序如何組裝成功能?服務(wù)端客戶端數(shù)據(jù)交互是咋樣的?數(shù)據(jù)庫(kù)是啥?里面的表、關(guān)系結(jié)構(gòu)、字段、字段類型是啥?常見(jiàn)的技術(shù)名詞如接口、同步異步、重構(gòu)等等又是指啥?
除了這些,數(shù)據(jù)產(chǎn)品還要懂?dāng)?shù)據(jù)相關(guān)的技術(shù),比如說(shuō)數(shù)據(jù)倉(cāng)庫(kù),機(jī)器學(xué)習(xí)數(shù)據(jù)挖掘,大數(shù)據(jù)框架或者常用的數(shù)據(jù)開(kāi)發(fā)工具h(yuǎn)adoop、hive、spark等等這些。所以,從某些角度而言,數(shù)據(jù)產(chǎn)品比其他產(chǎn)品門(mén)檻要更高點(diǎn)。
本文主要梳理機(jī)器學(xué)習(xí)及常見(jiàn)算法。
一、什么是機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)有下面幾種定義:
機(jī)器學(xué)習(xí)是一門(mén)人工智能的科學(xué),該領(lǐng)域的主要研究對(duì)象是人工智能,特別是如何在經(jīng)驗(yàn)學(xué)習(xí)中改善具體算法的性能。
機(jī)器學(xué)習(xí)是對(duì)能通過(guò)經(jīng)驗(yàn)自動(dòng)改進(jìn)的計(jì)算機(jī)算法的研究。
機(jī)器學(xué)習(xí)是用數(shù)據(jù)或以往的經(jīng)驗(yàn),以此優(yōu)化計(jì)算機(jī)程序的性能標(biāo)準(zhǔn)。
上述來(lái)自維基百科,有點(diǎn)晦澀。
機(jī)器學(xué)習(xí)是一種通過(guò)利用數(shù)據(jù),訓(xùn)練出模型,然后使用模型預(yù)測(cè)的一種方法。
其實(shí)這個(gè)過(guò)程,一個(gè)成語(yǔ)就可概括:舉一反三。
此處以高考為例,高考的題目在上考場(chǎng)前我們未必做過(guò),但在高中三年我們做過(guò)很多很多題目,懂解題方法,因此考場(chǎng)上面對(duì)陌生問(wèn)題也可以算出答案。
機(jī)器學(xué)習(xí)的思路也類似:我們能不能利用一些訓(xùn)練數(shù)據(jù)(已經(jīng)做過(guò)的題),使機(jī)器能夠利用它們(解題方法)分析未知數(shù)據(jù)(高考的題目)?
事實(shí)上,機(jī)器學(xué)習(xí)的一個(gè)主要目的,就是把人類思考?xì)w納經(jīng)驗(yàn)的過(guò)程,轉(zhuǎn)化為計(jì)算機(jī)通過(guò)對(duì)數(shù)據(jù)的處理計(jì)算得出模型的過(guò)程。
二、機(jī)器學(xué)習(xí)術(shù)語(yǔ)
- 訓(xùn)練:數(shù)據(jù)通過(guò)機(jī)器學(xué)習(xí)算法進(jìn)行處理,這個(gè)過(guò)程在機(jī)器學(xué)習(xí)中叫做“訓(xùn)練”。
- 模型:處理的結(jié)果可以被我們用來(lái)對(duì)新的數(shù)據(jù)進(jìn)行預(yù)測(cè),這個(gè)結(jié)果一般稱之為“模型”。
- 預(yù)測(cè):對(duì)新數(shù)據(jù)的預(yù)測(cè)過(guò)程在機(jī)器學(xué)習(xí)中叫做“預(yù)測(cè)”。
- 特征:即數(shù)據(jù)的屬性,通過(guò)數(shù)據(jù)的這些特征可以代表數(shù)據(jù)的特點(diǎn)。
- 標(biāo)簽:對(duì)數(shù)據(jù)的預(yù)測(cè)結(jié)果。
特征和標(biāo)簽,結(jié)合下面的內(nèi)容更好了解。
三、機(jī)器學(xué)習(xí)常見(jiàn)算法
先說(shuō)算法,其實(shí)算法是個(gè)很大的概念,除了機(jī)器學(xué)習(xí)算法,還有很多非機(jī)器學(xué)習(xí)算法,如編程里解決排序的快排、堆排、冒泡,也是算法。只是機(jī)器學(xué)習(xí)太火了,一提算法,多想到的是機(jī)器學(xué)習(xí)算法。
1.?決策樹(shù)
決策樹(shù),一種預(yù)測(cè)模型,代表的是對(duì)象屬性與對(duì)象值之間的一種映射關(guān)系。
一般來(lái)講通過(guò)學(xué)習(xí)樣本得到一個(gè)決策樹(shù),這個(gè)決策樹(shù)能夠?qū)π碌臄?shù)據(jù)給出正確的分類。
這里舉一個(gè)簡(jiǎn)單的例子:比如說(shuō),樣本數(shù)據(jù)為用戶的行為信息,同時(shí)已知每個(gè)用戶的分類信息,假設(shè)分類為流失用戶、非流失用戶。
然后我根據(jù)多個(gè)樣本數(shù)據(jù)訓(xùn)練出的多種多樣的模型,下面畫(huà)了一個(gè)簡(jiǎn)單的決策模型,其中事件可以是:是否有過(guò)訂單,被贊次數(shù)超過(guò)5次等等這種(事件不是啥專有名詞哈,我這里是為了偷懶不去舉例,而用它代替)。
此外,為了驗(yàn)證哪個(gè)模型更準(zhǔn),可以再用一組新的樣本數(shù)據(jù)作為測(cè)試數(shù)據(jù),套入模型,看看模型跑出的分類和實(shí)際分類誤差多少,從此來(lái)衡量模型的準(zhǔn)確性。
這里引入一下訓(xùn)練樣本和測(cè)試樣本,很多訓(xùn)練過(guò)程都是這樣處理的,樣本數(shù)據(jù)劃分為訓(xùn)練樣本和測(cè)試樣本,訓(xùn)練樣本用來(lái)生成模型,測(cè)試樣本用來(lái)驗(yàn)證準(zhǔn)確性。
同時(shí)這里面的用戶的行為事件就是“特征”,分類(是否為流失用戶)就是“標(biāo)簽”。
回顧一下:
- 特征:即數(shù)據(jù)的屬性,通過(guò)數(shù)據(jù)的這些特征可以代表數(shù)據(jù)的特點(diǎn)。
- 標(biāo)簽:對(duì)數(shù)據(jù)的預(yù)測(cè)結(jié)果。
至于模型是怎么訓(xùn)練生成的,具體算法啥樣,就不介紹了(其實(shí)是我也寫(xiě)不清楚)。
決策樹(shù)在實(shí)際工作中基本應(yīng)用于給人群分類,最好的應(yīng)用場(chǎng)景是要把人群分類,并找到不同類別人群的不同特征,比如上面的例子,就可以做個(gè)流失模型,通過(guò)用戶的行為來(lái)提前找到哪些人有流失風(fēng)險(xiǎn),并通過(guò)專門(mén)優(yōu)惠等手段挽留。也可以發(fā)現(xiàn)哪些關(guān)鍵節(jié)點(diǎn)導(dǎo)致了流失,在這些節(jié)點(diǎn)上加一些運(yùn)營(yíng)策略來(lái)減少流失。
為了防止上圖誤導(dǎo)大家,找了其他的決策樹(shù)模型示例。
2. 回歸算法
統(tǒng)計(jì)學(xué)來(lái)講,利用統(tǒng)計(jì)方法來(lái)建立一個(gè)表示變量之間相互關(guān)系的方程,這樣的統(tǒng)計(jì)方法被稱為回歸分析。
回歸算法就可以理解是研究不同變量相關(guān)關(guān)系的一個(gè)機(jī)器學(xué)習(xí)算法。多說(shuō)一句,其實(shí)很多機(jī)器學(xué)習(xí)算法都是來(lái)自統(tǒng)計(jì)學(xué)。
回歸算法有兩個(gè)重要的子類:線性回歸和邏輯回歸。
線性回歸
這里從簡(jiǎn)單線性回歸入手介紹,也就是我舉得例子只是研究?jī)蓚€(gè)樣本變量之間的線性關(guān)系。
假設(shè)我們來(lái)研究考試成績(jī)和復(fù)習(xí)時(shí)間的關(guān)系,數(shù)據(jù)如下:
我想找出考試成績(jī)和復(fù)習(xí)時(shí)間的規(guī)律,怎么找呢?
這里就是擬合出一條直線,所以這條直線需要“穿過(guò)”所有的點(diǎn),并且與各個(gè)點(diǎn)的距離盡可能的小。
解釋一下,簡(jiǎn)單的線性回歸一般是使用“最小二乘法”來(lái)求解,最小二乘法的思想:假設(shè)我們擬合出的直線代表數(shù)據(jù)的真實(shí)值,而觀測(cè)到的數(shù)據(jù)代表?yè)碛姓`差的值。為了盡可能減小誤差的影響,需要求解一條直線使所有誤差的平方和最小。
假設(shè)擬合出的這條直線的函數(shù)如下:
學(xué)習(xí)成績(jī) = a * 復(fù)習(xí)時(shí)間 + b
a、b都是直線的參數(shù)。獲得這些參數(shù)以后,我就可以計(jì)算出學(xué)生的成績(jī)。
這個(gè)結(jié)果可能和實(shí)際有些偏離,由于這條直線綜合考慮了大部分的情況,因此從“統(tǒng)計(jì)”意義上來(lái)說(shuō),這是一個(gè)最合理的預(yù)測(cè)。但是如果數(shù)據(jù)越多,模型就越能夠考慮到越多的情況,由此對(duì)于新情況的預(yù)測(cè)效果可能就越好。所以其實(shí)機(jī)器學(xué)習(xí)準(zhǔn)不準(zhǔn),很大程度看你喂的數(shù)據(jù)夠不夠多。
邏輯回歸
邏輯回歸是一種與線性回歸非常類似的算法,屬于分類算法。
邏輯回歸只是對(duì)線性回歸的計(jì)算結(jié)果加上了個(gè)函數(shù)進(jìn)行處理,將數(shù)值結(jié)果轉(zhuǎn)化為了0到1之間的概率,根據(jù)這個(gè)概率可以做預(yù)測(cè),例如概率大于0.5,則腫瘤是否是惡性的等等。從直觀上來(lái)說(shuō),邏輯回歸是畫(huà)出了一條分類線,見(jiàn)下圖(也有劃出非線性分類線的邏輯回歸)。
假設(shè)我們有一組腫瘤患者的數(shù)據(jù),這些患者的腫瘤中有些是良性的(圖中的藍(lán)色點(diǎn)),有些是惡性的(圖中的紅色點(diǎn))。這里腫瘤的紅藍(lán)色可以被稱作數(shù)據(jù)的 “標(biāo)簽”。同時(shí)每個(gè)數(shù)據(jù)包括兩個(gè)“特征”:患者的年齡與腫瘤的大小。我們將這兩個(gè)特征與標(biāo)簽映射到這個(gè)二維空間上,形成了我上圖的數(shù)據(jù)。
當(dāng)我有一個(gè)綠色的點(diǎn)時(shí),該判斷這個(gè)腫瘤是惡性的還是良性的呢?根據(jù)紅藍(lán)點(diǎn)我們訓(xùn)練出了一個(gè)邏輯回歸模型,也就是圖中的分類線。這時(shí),根據(jù)綠點(diǎn)出現(xiàn)在分類線的左側(cè),因此我們判斷它的標(biāo)簽應(yīng)該是紅色,也就是說(shuō)屬于惡性腫瘤。
3.?神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)算法是80年代機(jī)器學(xué)習(xí)界非常流行的算法,不過(guò)在90年代中途衰落?,F(xiàn)在,攜著“深度學(xué)習(xí)”之勢(shì),神經(jīng)網(wǎng)絡(luò)重裝歸來(lái),重新成為最強(qiáng)大的機(jī)器學(xué)習(xí)算法之一。
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)機(jī)理就是分解與整合。
在這個(gè)網(wǎng)絡(luò)中,分成輸入層、隱藏層和輸出層。
輸入層負(fù)責(zé)接收信號(hào),隱藏層負(fù)責(zé)對(duì)數(shù)據(jù)的分解與處理,最后的結(jié)果被整合到輸出層。
比方說(shuō),一個(gè)正方形,分解為四個(gè)折線進(jìn)入視覺(jué)處理的下一層中。四個(gè)神經(jīng)元分別處理一個(gè)折線(每個(gè)處理單元事實(shí)上就是一個(gè)邏輯回歸模型,邏輯回歸模型接收上層的輸入,把模型的預(yù)測(cè)結(jié)果作為輸出傳輸?shù)较乱粋€(gè)層次)。
每個(gè)折線再繼續(xù)被分解為兩條直線,然后處理,再將每條直線再被分解為黑白兩個(gè)面處理。
整個(gè)過(guò)程就是一個(gè)復(fù)雜的圖像變成了大量的細(xì)節(jié)進(jìn)入神經(jīng)元,神經(jīng)元處理以后再進(jìn)行整合,最后得出了看到的是正方形的結(jié)論。
4. SVM(支持向量機(jī))
從某種意義上來(lái)說(shuō)是邏輯回歸算法的強(qiáng)化:通過(guò)給予邏輯回歸算法更嚴(yán)格的優(yōu)化條件,支持向量機(jī)算法可以獲得比邏輯回歸更好的分類界線。但是如果沒(méi)有某類函數(shù)技術(shù),則支持向量機(jī)算法最多算是一種更好的線性分類技術(shù)。
5. 聚類算法
聚類算法的目的則是通過(guò)訓(xùn)練,推測(cè)出這些數(shù)據(jù)的標(biāo)簽。訓(xùn)練數(shù)據(jù)都是不含標(biāo)簽的,算是典型的無(wú)監(jiān)督算法,后續(xù)會(huì)介紹有無(wú)監(jiān)督算法的區(qū)分。
讓我們還是拿一個(gè)二維的數(shù)據(jù)來(lái)說(shuō),某一個(gè)數(shù)據(jù)包含兩個(gè)特征。我希望通過(guò)聚類算法,給他們計(jì)算分類打上標(biāo)簽,我該怎么做呢?
簡(jiǎn)單來(lái)說(shuō),聚類算法就是計(jì)算種群中的距離,根據(jù)距離的遠(yuǎn)近將數(shù)據(jù)劃分為多個(gè)族群。
聚類算法中最典型的代表就是K-Means算法
k-means聚類的目的是:把n個(gè)點(diǎn)(可以是樣本的一次觀察或一個(gè)實(shí)例)劃分到k個(gè)聚類中,使得每個(gè)點(diǎn)都屬于離他最近的均值(此即聚類中心)對(duì)應(yīng)的聚類,以之作為聚類的標(biāo)準(zhǔn)。
K-means常用的場(chǎng)景是在不清楚用戶有幾類時(shí),嘗試性的將用戶進(jìn)行分類,并根據(jù)每類用戶的不同特征,決定下步動(dòng)作。(決策樹(shù)也可以做這件事,但需要先定義出特征,因此在探索特征未知的領(lǐng)域時(shí),聚類可能更好用一些)
6. 降維算法
也是一種無(wú)監(jiān)督學(xué)習(xí)算法,其主要特征是將數(shù)據(jù)從高維降低到低維層次。
例如,房?jī)r(jià)包含房子的長(zhǎng)、寬、面積與房間數(shù)量四個(gè)特征,也就是維度為4維的數(shù)據(jù)??梢钥闯鰜?lái),長(zhǎng)與寬事實(shí)上與面積表示的信息重疊了,例如面積=長(zhǎng) × 寬。通過(guò)降維算法我們就可以去除冗余信息,將特征減少為面積與房間數(shù)量?jī)蓚€(gè)特征。
7. 推薦算法
推薦系統(tǒng)中常用到的算法包括協(xié)同過(guò)濾算法(item_base,user_base)、用戶偏好算法、關(guān)聯(lián)規(guī)則算法、聚類算法、內(nèi)容相似性算法(content_base),以及一些其它的補(bǔ)充算法。
其中最有名的算法就是協(xié)同過(guò)濾算法,核心思想是物以類聚,人以群分。具體可以分為基于用戶的協(xié)同過(guò)濾算法和基于物品的協(xié)同過(guò)濾算法。
item_base是根據(jù)集體用戶行為算出物品間的相似度,然后把與用戶看過(guò)的物品或者購(gòu)買(mǎi)過(guò)的物品最相似的物品推薦給該用戶。
user_base是根據(jù)集體行為計(jì)算用戶之間的相似度,比如A跟B計(jì)算出來(lái)非常相似,則可以把B喜歡的內(nèi)容,但A還沒(méi)有看過(guò),推薦給A。
用戶偏好算法是根據(jù)用戶偏好算出來(lái)用戶感興趣的內(nèi)容/產(chǎn)品,然后推薦給用戶。
關(guān)聯(lián)規(guī)則算法是算出物品間的支持度和置信度。最常見(jiàn)的應(yīng)用是組合購(gòu)買(mǎi),啤酒和尿不濕是非常經(jīng)典的例子了。
聚類算法,可以對(duì)用戶進(jìn)行聚類,也可以對(duì)產(chǎn)品進(jìn)行聚類。聚類后可以針對(duì)大類進(jìn)行推薦,或者繼續(xù)計(jì)算用戶類和產(chǎn)品類之間的關(guān)系。
content_base是根據(jù)物品本身的屬性進(jìn)行關(guān)聯(lián)性運(yùn)算,計(jì)算出物品間的相似性,最常見(jiàn)的應(yīng)用是同類推薦。
四、機(jī)器學(xué)習(xí)算法分類(監(jiān)督和無(wú)監(jiān)督區(qū)別)
訓(xùn)練數(shù)據(jù)有標(biāo)簽,則為監(jiān)督學(xué)習(xí)算法,沒(méi)標(biāo)簽則為無(wú)監(jiān)督學(xué)習(xí)算法,推薦算法較為特殊,既不屬于監(jiān)督學(xué)習(xí),也不屬于非監(jiān)督學(xué)習(xí),是單獨(dú)的一類。
上述算法除了聚類、降維屬于無(wú)監(jiān)督學(xué)習(xí)算法,推薦是單獨(dú)一類,其余都是監(jiān)督學(xué)習(xí)算法。
其實(shí)還有半監(jiān)督學(xué)習(xí)算法,也就是訓(xùn)練數(shù)據(jù)部分有標(biāo)簽,部分沒(méi)標(biāo)簽。
總體來(lái)講,相對(duì)對(duì)于監(jiān)督學(xué)習(xí),無(wú)監(jiān)督學(xué)習(xí)如聚類算法效果差了些。但是監(jiān)督學(xué)習(xí)需要標(biāo)簽,標(biāo)簽?zāi)睦飦?lái)? 在實(shí)際應(yīng)用中,標(biāo)簽的獲取常常需要極大的人工工作量,有時(shí)甚至非常困難?,F(xiàn)在很多做大數(shù)據(jù)的會(huì)招人工來(lái)打標(biāo)簽,制定打標(biāo)規(guī)則啥的。
現(xiàn)在再看機(jī)器學(xué)習(xí)的概念,其實(shí)本質(zhì)就是找到特征和標(biāo)簽間的關(guān)系。這樣當(dāng)有特征而無(wú)標(biāo)簽的未知數(shù)據(jù)輸入時(shí),我們就可以通過(guò)已有的關(guān)系得到未知數(shù)據(jù)標(biāo)簽。
本文總算是進(jìn)入尾聲,主要是分享自己平常的學(xué)習(xí)總結(jié),寫(xiě)下來(lái),一個(gè)是加深自己的理解,二是希望對(duì)和我一樣是算法門(mén)外漢但是又想了解學(xué)習(xí)的同學(xué)能夠有所幫助。不過(guò)這篇對(duì)于專門(mén)想做算法工程師的同學(xué)可能不太合適,還是要看專業(yè)的視頻經(jīng)典的書(shū)籍來(lái)學(xué)習(xí)。上述算法參考了很多大神的文章,能看的懂的,自己的理解就寫(xiě)的多點(diǎn),太晦澀的,就只是整理下來(lái)了。
寫(xiě)這個(gè)數(shù)據(jù)產(chǎn)品技術(shù)知識(shí)系列也是有感自己當(dāng)初想要了解這些,網(wǎng)上沒(méi)找到針對(duì)產(chǎn)品來(lái)講的、系統(tǒng)一點(diǎn)、通俗一點(diǎn)的文章,很多時(shí)候是一個(gè)概念一個(gè)概念零散的去找。
之前的文章可以了解一下哈:
數(shù)據(jù)產(chǎn)品必備技術(shù)知識(shí):數(shù)據(jù)倉(cāng)庫(kù)入門(mén),看這一篇就就夠了
大數(shù)據(jù)告訴你:如何求職數(shù)據(jù)產(chǎn)品經(jīng)理?
本文由 @ 蘇徐 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Pexels,基于 CC0 協(xié)議
大家期待已久的《數(shù)據(jù)產(chǎn)品經(jīng)理實(shí)戰(zhàn)訓(xùn)練營(yíng)》終于在起點(diǎn)學(xué)院(人人都是產(chǎn)品經(jīng)理旗下教育機(jī)構(gòu))上線啦!
本課程非常適合新手?jǐn)?shù)據(jù)產(chǎn)品經(jīng)理,或者想要轉(zhuǎn)崗的產(chǎn)品經(jīng)理、數(shù)據(jù)分析師、研發(fā)、產(chǎn)品運(yùn)營(yíng)等人群。
課程會(huì)從基礎(chǔ)概念,到核心技能,再通過(guò)典型數(shù)據(jù)分析平臺(tái)的實(shí)戰(zhàn),幫助大家構(gòu)建完整的知識(shí)體系,掌握數(shù)據(jù)產(chǎn)品經(jīng)理的基本功。
學(xué)完后你會(huì)掌握怎么建指標(biāo)體系、指標(biāo)字典,如何設(shè)計(jì)數(shù)據(jù)埋點(diǎn)、保證數(shù)據(jù)質(zhì)量,規(guī)劃大數(shù)據(jù)分析平臺(tái)等實(shí)際工作技能~
現(xiàn)在就添加空空老師(微信id:anne012520),咨詢課程詳情并領(lǐng)取福利優(yōu)惠吧!