Titanic dataset #2: WOE และ IV ในการหาความสำคัญของตัวแปร

Sasiwut Chaiyadecha
3 min readJul 23, 2020

--

titanic dataset WOE IV classification model

ต่อจากตอนที่แล้วเลยละกัน ตอนที่แล้วเราเตรียมข้อมูลกันเสร็จแล้ว และพร้อมมากแล้วสำหรับการทำโมเดล Scoring แบบง่าย ๆ ใครยังเตรียมข้อมูลไม่เสร็จ ลองย้อนกลับไปอ่านนะครับ

Factors binning

เนื่องจากแต่ละคนมีคุณลักษณะที่ต่างกันออกไป การโมเดลตามคุณลักษณะทุกอย่างที่เกิดขึ้น เช่น ตัวแปรที่เราสนใจคือ อายุ ซึ่งอายุเองก็มีได้หลากหลาย ตั้งแต่ 1, 2, 3, …, n อาจมีอายุที่ซ้ำกันบ้างใน Dataset ของเรา เมื่อมองแบบนี้แล้วอาจไม่ใช่ความคิดที่ดีนัก ที่เราจะทำตรง ๆ ดังนั้นเราจึงจำเป็นต้องการจัดกลุ่มให้กับคุณลักษณะต่าง ๆ กันก่อน ซึ่งต่อไปนี้ขอเรียกว่า “Binning” นะครับ

เนื่องจากตัวแปรใน Titanic dataset มีลักษณะของการจัดกลุ่มมาแล้วในระดับหนึ่ง เช่น Embarked ที่จัดออกมาเป็น 3 Categorise หรือ Sex ที่จัดออกมาเป็น Male และ Female ดังนั้นตัวแปรที่เราต้องจัดเพิ่ม ก็มีแค่ช่วงอายุและช่วงราคาตั่วโดยสารครับ

ในตัวแปร nums เป็น list ของชื่อ Columns คือ nums = [‘Age’,’Fare’] แล้วเราก็ไปเขียนลูปง่าย ๆ ขึ้นมา ซึ่งเราจัด Binning ด้วย pandas.qcut() โดยกำหนดให้ Binning ของเราเป็น 10 ซึ่งเป็นการจัดแบบ Decile คือพยายามกระจายคนให้เท่า ๆ กัน ใน 10 กลุ่ม

Weight of Evidence (WOE) and Information Value (IV)

ก่อนที่เราจะไปหาค่า WOE และ IV เราต้องมารู้จักมันก่อนว่ามันคืออะไร WOE คือ การให้น้ำหนักของข้อมูลเพื่อให้เกิดความสัมพันธ์สูงสุด ระหว่างตัวแปรต้นที่ได้รับการแปลงค่าให้อยู่ในรูป WOE และตัวแปรตาม โดยจะทำให้ความสัมพันธ์ของทั้งสองตัวแปรเป็นไปในทางเดียวกัน

The weight of evidence tells the predictive power of an independent variable in relation to the dependent variable.

WOE formula
ขอใช้สูตรนี้ เพราะ event ของเราคือโอกาสรอด

ส่วน IV คือ ความสามารถในการอธิบายผลของตัวแปรนั้น ๆ

Information value is one of the most useful technique to select important variables in a predictive model. It helps to rank variables on the basis of their importance.

IV formula
IV สามารถคำนวณต่อได้จากสูตรข้างบน

พอเข้าใจแล้ว เราก็เอาข้อมูลที่เป็นคุณลักษณะทั้งหมดไปคำนวณได้เลย ซึ่งลูปข้างบนก็คือการเขียนสูตรตามที่อธิบายไปแล้ว แนะนำว่าให้เขียน Function ขึ้นมาเพื่อเอาไว้หาค่า IV ของแต่ละตัวแปร เพราะว่าตามปกติของการทำ Scoring model มันไม่ได้จบแค่การรันครั้งแรกแน่ ๆ ซึ่งผลการรันครั้งแรกที่ออกมาคือ

Factors
Age_bin 0.097745
Embarked 0.119923
Fare_bin 0.625860
Parch inf
Pclass 0.500950
Sex 1.341681
SibSp inf
Name: IV, dtype: float64

มีตัวแปร Parch และ SibSp ที่ค่าออกมาเป็น inf เพราะว่าข้อมูล Event และ Non-event ของ Binning นั้น ๆ เกิดมีค่า Missing ขึ้นมา ตัวอย่างเช่น Parch binning ที่ 3 อาจไม่มีคนรอดเลย เป็นต้น ดังนั้นเราต้องทำการ Re-binning ใหม่ หรือศัพท์โมเดลเค้าเรียกว่า Coarse-Classing

Coarse-Classing

ขอทำง่าย ๆ คือ Re-binning ใหม่เป็น 2 Bins โดยให้ SibSp และ Parch ที่เท่ากับ 0 อยู่ Bin 0 และที่มากกว่า 0 อยู่ Bin ที่ 1 จากนั้นเอาตัวแปรที่ทำ Coarse-Classing เสร็จแล้ว ไปหาค่า IV อีกรอบ ซึ่งจะได้ผลดังนี้

Factors
Age_bin 0.097745
Embarked 0.119923
Fare_bin 0.625860
Parch_bin 0.089718
Pclass 0.500950
Sex 1.341681
SibSp_bin 0.055999
Name: IV, dtype: float64

ไม่มีตัวแปรไหนที่หาค่า IV ไม่ได้แล้ว ต่อไปเรามาพิจารณาว่าตัวแปรไหนที่จะเอาเข้าโมเดลของเราบ้างดีกว่า โดย Thresholds ที่ใช้กันอย่างแพร่หลายก็คือตามตารางข้างล่าง

IV Information value

ดังนั้นจะเห็นได้ว่า ไม่มีตัวแปรไหนที่ค่า IV ต่ำกว่า 0.02 เลย และเนื่องจากตัวแปรเราน้อยอยู่แล้ว จึงขอเอาไปทำโมเดลทั้งหมดเลยละกัน

IV Information value

ตอนนี้เอาไว้เท่านี้ก่อน เพื่อไม่ให้แต่ละตอนมันยาวเกินไป ตอนหน้าเราถึงมา Fit model กัน

--

--