關於模型的100個問答-part1
題目是標題黨哈,我也不知道我能不能寫出一百個問題。再過半個多月就要過年了,最近事情真的超級多,今天深圳變得超級冷,在北方的你們,好好看雪,深圳的我們,好好抖腳。畢竟你們有暖氣,南方的我們冷都靠抖腳。
今天我們來回答在模型中最常碰到的問題,以及在群里最常問到的問題,在這裡做個小總結。首先我必須要在這裡發下牢騷,總是有人在我的公眾號對話框說,我用你的代碼建模效果不好,我不會跑啊,我用你說的方法。模型效果不好等等…..,在這裡我說一句,包括今天寫的東西,只是建議,只是提供一個思路,模型是你的,數據是你的,業務是你的,工資還是你的,為什麼效果不好怪我!以後再有人在我後台這麼問我,我不會理你,還罵我的,我就拉黑!我這個公眾號沒有任何盈利,打賞全靠自願。
接下來就來解答建模中比較經常碰到的問題:
1
1、 我的因變數怎麼定義?
答:這個問題我很早就在公眾號更新過了,只是不是單獨寫了一篇文章,鏈接在這裡建模準備一定要做的這幾件事,這裡鏈接包括取數怎麼取都說的很清楚,請參考。其實申請卡的因變數已經被說爛了,主要是大部分問的是反欺詐模型的因變數怎麼定義,我不會在這裡明確跟你講什麼樣的欺詐客戶,我只是提供你一個思路,首先欺詐客戶的性質是什麼:沒有還款意願。那麼沒有還款意願的客戶會還幾期就不還,就需要你去看你們公司的賬齡分析表,你們對欺詐客戶的容忍度,這裡再說一件事,一般欺詐都不是只騙你這家就跑的,為了能多騙幾家,一般都會還一段時間,等多借幾家的時候再跑,那麼具體幾期,具體看你們公司的貸款業務是多長周期的,大概是周期的1/9-1/12,為因變數的賬齡,個人經驗建議值!!!!
2
2、 缺失值怎麼處理?
有些朋友可能是剛轉行,或者剛畢業的同學,可能缺失值停留在用中間值,均值,眾數填補這種方法,但其實在建模中,不能說這些方法不好,而是畢竟還是要尊重數據的原始性,所以這些填補的動作可以在特定的時候才用,首先缺失值並不是無緣無故缺失的,那麼缺失的原因怎麼產生的,這時候怎麼檢查?
缺失原因檢查方法:
不同產品造成的缺失:因為不同的產品有不同的產品准入規則,那麼意味著不同的產品客戶提供的資料會有所不同,例如,一個產品是商人貸,一個是白領貸,那麼白領貸就需要填寫薪資,或者提供工資卡流水,那麼商人貸本身面對的客群就不是固定收入,屬於經商的,那麼薪資這項就很經常會缺失。那麼這點的檢查就需要你熟悉產品的准入準則,從申請資料尋找缺失的原因,這種確實大部分發生在客戶的屬性資料這一部分的數據。
不同時間造成的缺失:同個產品,會因為不同時間造成的數據的缺失,例如某個時間,這個產品是接入一個第三方評分的,但是後面這家公司取消這個產品,那麼這時候意味這個產品以後就沒有了,這時候,你這個變數就意味著不能用了,還有另外一種,就是那種短時間的系統更新或者迭代造成的缺失,例如你們的風控引擎或者風控系統在某個時間段更新了,或者換了系統,那麼時候在更新、更換的過程中,可能因為有些疏忽,某些數據沒有過來,那麼這時候這部分數據是少量的缺失。以上兩種情況,可以通過變數不同時間的一個返回量來檢查是否存在是在某個特定時間的缺失。
客戶本來就沒有的缺失:舉個例子哈,徵信報告中,可能這個客戶本來就是沒有貸款記錄,那麼假設你們it不是考慮周全可能返回給你個空的數據,那麼這時候,你就要搞清楚客戶到底是沒有徵信報告還是有徵信報告沒有貸款記錄。
It失誤的數據缺失:這類數據可能是第三方有提供,但是對接的人疏忽沒有顧慮到,我之前有個運營商的數據的情況就是這樣子,返回的時間變數是有小時分秒的,但是it對接的人不知道為了省事還是怎麼樣,直接就給了我一個日期,當時就及時提了需求,更改了這個數據,也有時候,例如客戶在填寫申請的時候,有一個選項是月收入,那麼你希望月收入成為必填項,那麼就可以提需求要求it列為必填項,我這裡只是舉個例子,不要跟我說什麼,我們這邊沒有得提需求什麼的,各家公司不一樣,我提供個思路而已。
就是缺失:那這種缺失就是上面幾種缺失都不是的時候,這種就是純缺失。
填補的方法:
針對不同產品造成的缺失,那麼我建議在數據足夠多的情況下,可以分開建模
時間造成的缺失:如果這個缺失是在時間歷史上某些結點的較少的數據,那麼建議可以去掉。那麼假設這個數據是在未來也會缺失的情況下,那麼不要這個變數,你以後都沒有這個變數,你還拿他建模幹嘛。
客戶本來就沒有的缺失:那麼這種,例如沒有貸款,那就貸款筆數這種變數就應該置0。
It失誤的數據缺失,找it是否可以修復補充之前的數據,如果修復不了,轉最後一點。
就是缺失:
1、 在分組的時候將缺失分為一組(缺失比例大概在5%以上,假設你的建模樣本5000+)
2、 再多衍生一個變數,區分缺失和非缺失的特徵。就是例如你有個變數叫在網時長,那麼這個數據有一部分缺失了,那麼你可以再衍生一個變數叫是否有在網上時長數據(缺失比例大概在5%以上,假設你的建模樣本5000+)
3、 刪掉(幾個缺失的話),變數的缺失超過70,我就直接捨棄這個變數了,前提是缺失值做衍生變數也沒啥用了。
4、 按照萬能大法(補眾數,平均值,中位數.....)補充,雖然我不喜歡,但是現實就是喜歡強迫你。
3
3、 建模樣本好壞比多少合適?
這個問題在群里說的次數不少於十次,這個問題有沒有準確的答案,你現在的數據要是壞客戶的特徵很明顯,那麼你98:2都可以,但是你本身你的壞客戶的特徵在擁有的變數中的特徵都很離散的話,那麼你怎麼調,效果都差不了多少。建議經驗值是10%-20%的一個壞客戶佔比,我個人認為不用調整到1:1的程度,這裡提及一點就是,模型擬合的時候,還需要驗證原樣本的效果,效果可取才可以認為模型效果可取。
4
4、 變數分幾組?
我先說我建議幾組,我的建議是2-8組,我覺得8組都算多了,我能容忍是6組,太多組,首先是分到一組的數據太少,得出的結論擔心會有偶然性,其次就是過擬合的問題。這裡提及一點就是我建議分組的時候最少一組的數量至少要佔到總體樣本的5%。
5
5、 怎麼篩選變數?
首先說下,好的變數的中心思想是:變數對於因變數有一定的區分度。
篩選變數的方法有以下幾種:
1、 iv值,建議小於0.02以上的取。
2、 基尼係數,這個是衡量貧富差距那個,不是決策樹那個,雖然我經常搞混。
3、 隨機森林變數重要性,我還蠻喜歡這個方法的,因為不用分組,避免了我分組之後影響了變數的效果
4、 Psi,穩定性指標,這個指標,可以當參考。
5、 Person卡方統計量。
通過變數的以上5個統計量,對比大小,捨棄一部分沒有明顯特徵的變數。
6
6、我要轉化woe嗎?
在我之前的文章:woe和dummy變數到底是不是親戚中,已經說過woe以及啞變數其實本質上是一樣的,woe並不能增加模型的效果嗎,只是讓變數最終生成標準的評分卡方便快捷些。
7
7、woe為0或者為空怎麼辦?
首先,我們看woe的公式是什麼
那麼該層的woe的值為0,的情況是這一層的好壞客戶都是佔一半,這一層的壞客戶佔了全部壞客戶的一半哦,那麼這個變數你可以考慮直接就可以做策略啦,做啥模型啊。同樣的道理,要是該層的woe為空,那麼就是這一層沒有好客戶,全是壞人。這種woe產生的一般是很少見的,會產生這樣子的情況,應該檢查是不是你這組的客戶數量特別少,要是不是特別少的話,那你就這時候報告領導了,你發現了一個可以做策略的變數,分到這組的客戶極好(極壞)。
8
8、擬合的模型參數估計用那個?
擬合模型的時候有三個數據,訓練數據,測試數據,驗證數據。這三個數據用同一批變數會產生三組不同的參數估計。建議一下三種選取方式:
1、 將這三個數據集的參數估計取出來的之後,取平均值。
2、 把這三個數據合成一個之後,分成十份,分別算出參數估計之後再取平均值,第一種的升級版
3、 取驗證集的參數估計,因為驗證集是最接近現在的時間的客戶數據,可以認為這樣子比較接近現階段客戶的總體特徵
4、取訓練數據集的參數估計,因為一般情況下,訓練數據集的數據的數量是最多的,在一定程度上可以認為,數據的覆蓋面比較大,可以全面提取客戶的數據特徵。
推薦閱讀: