運營經理,你真的知道模型裡的R平方嗎?
想象一下這個場景:
分析師拿著2個模型的結果和運營經理討論。
“我做了兩個關於客戶生命價值的模型,第一個看起來效果不錯,R方有81%,第二個只有75%。這樣看起來,我們下個月的留存客戶運營從第一個模型裡挑選人選吧。”
運營經理似懂非懂的點點頭,”嗯,看起來第一個模型有81%的R方了,比較接近1,不錯,我們準備一下,下週開始deploy。”
看完上面的對話,內行一定會有很多疑問,比如,你光給我一個R方的值,就來判斷模型的好壞,未免也太草率了吧。的確,很多人其實都不知道R方是如何推倒的,他們只知道一個概念,就是R方越接近1就越好。其他的他們似乎也不在乎。
我想通過這篇文章,讓你對R方有個更"形象化"的認識,再也不會忘記R方的推倒公式和含義。
首先,先用一句話介紹下R平方的概念,即描述因變數(Y)有多少能被自變數(X)解釋的程度;簡單的說就是真實值有多少能被模型解釋。我們看一下R平方的公式:
分子部分是真實值和模型預測值的差距,我們可以說模型誤差;
分母部分是真實值和不用模型的情況下,真實值和他們平均值的差距,我們可以說基準誤差。
下面,我們用客戶的家到公司的距離,來預測他們花費總額的例子來講解這個概念。(為了簡單,我們只取一個feature,4個資料點)
X = 家到公司距離 (公里) | Y = 購買總額(千) |
---|---|
3 | 7 |
4 | 9 |
5 | 11 |
12 | 21 |
我們先畫一下這4個使用者的資料點,X軸代表距離,Y軸代表花費(也就是我們要預測的)。
接下來,我們畫一條線,這條線是這4個使用者花費的平均值。(7+9+11+21)/4=12
這條取平均線的方法,我們可以稱作為最簡單的模型,也就是什麼模型都不用建的情況下,我們做出的判斷。
仔細回想一下,我們現實生活中很多的例子,用的都是這種概念。比如:一個學生,前四次考試是86,90,80,80分。那麼我們最保守的猜測會是,這個學生第五次考試是
(86+90+80+80) / 4 = 84分
。
有了這個概念後,我們結合R方公式畫出下面的圖。我們從任意一點向這條平均線做垂線,這個距離可以告訴我們,每個點離開平均線的距離是多少,如果再把這個距離平方一下,就是一個正方型的面積不是嗎? 把所有的正方形面積相加,就是分母部分的值,即圖中所有紅色正方行面積的和。
同樣的,當我們模型建好後,用同樣的方法描述出分子部分,即模型誤差部分,圖中綠色面積。
好,我們再用圖形更形象地看一下R方的公式:
你覺得以後推倒R方公式是不是不那麼難了呀。
我們再看一下,什麼情況R方會等於1,也就是所謂的“好”?我們發現如果綠色部分的面積是0的話,那麼R方為1。 如果綠色部分的面積和紅色部分面積相等的話,那麼R方為0,模型“不好”。回到最初運營經理和分析師的對話,是不是R方越大,模型越好呢? 我們看一下下面這個例子。
由於模型非常“準”,讓綠色部分的陰影面積為0,所以R方等於1。你一定會覺得這個擬合的太準了,如果我真的用這個模型去預測其他的情況,應該不會太準確的吧。的確,這種情況我們稱為“過擬合”。所以如果有人和你說R方很高,你還會單純得覺得這個模型好嗎?
另外,有些人會問,R方取值在[0,1],可能是負數嗎?答案是:可以為負數,但是在預設引數的模型中,是不會出現的,即絕大多數情況下,不會出現負數。
我們回過來再看一下形象的圖形公式,如果要出現負數的話,綠色部分的面積一定要比紅色部分的面積大。而我們在建模過程中,綠色部分的面積是不會大過紅色部分面積的。因為計算過程中,如果比平均線還要差的話,會採用平均線。所以最壞的情況綠色面積只會等於紅色面積,不會大於。
可見,不管你是運營經理還是分析師,只有客觀的對待R方,才會不被誤導。
相關文章
- 你真的知道JS嗎JS
- 你真的知道跨域嗎跨域
- 你真的知道js的原型鏈嗎??JS原型
- 你真的知道 == 和 equals 的區別嗎?
- JDBC API的那些事,你真的知道嗎?JDBCAPI
- 你真的知道計算機是如何進行減法運算的嗎?計算機
- 專案經理的時間管理秘籍,你真的瞭解嗎?
- 作為產品經理,你真的有資料 sense 嗎?
- 你真的瞭解js運算子嗎JS
- 你真的知道Python的字串怎麼用嗎?Python字串
- 你真的知道Python的字串是什麼嗎?Python字串
- 你真的已經搞懂JavaScript了嗎?JavaScript
- 你真的知道什麼是系統呼叫嗎?
- iPhone真的好用嗎?蘋果知道嗎iPhone蘋果
- 你真的知道什麼是“遊戲障礙”了嗎?遊戲
- Swift之你真的知道為什麼使用weak嗎?Swift
- 這些併發模型你真的懂了嗎?未必模型
- 知道這12個功能,讓你10倍速處理運營資料
- 你真的知道Python中的賦值與拷貝嗎?Python賦值
- 都在用Nginx,你真的知道它的應用場景嗎?Nginx
- 微訊號的2/8分佈原理,你真的知道嗎?
- 你真的會用 Java 中的三目運算子嗎?Java
- Mybatis如何執行Select語句,你真的知道嗎?MyBatis
- 你真的知道typeof null的結果為什麼是‘object‘嗎?NullObject
- 你真的瞭解Java記憶體模型JMM嗎?Java記憶體模型
- 智慧數字化經營真的能未來可期嗎?
- 你的模型真的陷入區域性最優點了嗎?模型
- 你真的理解this嗎
- 從程式設計師到專案經理(23):你真的盡力了嗎?程式設計師
- 你知道前端對圖片的處理方式嗎?前端
- 自媒體短視訊從入門到運營的十個問題,你知道嗎?
- 你真的知道什麼是 Python「名稱空間」嗎?Python
- 駭客知識之你真的知道特洛伊木馬嗎(轉)
- 產品運營經理的五項核心技能
- 你真的理解setState嗎?
- 你真的理解==和===嗎
- WebView你真的熟悉嗎?WebView
- 你知道Thread執行緒是如何運作的嗎?thread執行緒