मुझे लगता है कि निर्णय पेड़ों के निर्माण के संदर्भ में एन्ट्रॉपी का उल्लेख किया गया था ।
उदाहरण के लिए, पहले नामों को पुरुष / महिला समूहों में वर्गीकृत करने के लिए सीखने के कार्य की कल्पना करें । कि प्रत्येक के साथ लेबल किए गए नामों की एक सूची दी गई है या , हम एक मॉडल सीखना चाहते हैं जो डेटा को फिट करता है और इसका उपयोग नए अनदेखे पहले नाम के लिंग का अनुमान लगाने के लिए किया जा सकता है।m
f
name gender
----------------- Now we want to predict
Ashley f the gender of "Amro" (my name)
Brian m
Caroline f
David m
पहला कदम यह तय कर रहा है कि हम जिस लक्ष्य वर्ग की भविष्यवाणी करना चाहते हैं, उसके लिए डेटा की कौन-सी विशेषताएँ प्रासंगिक हैं। कुछ उदाहरण सुविधाओं में शामिल हैं: पहला / अंतिम पत्र, लंबाई, स्वरों की संख्या, क्या यह एक स्वर के साथ समाप्त होता है, आदि। इसलिए सुविधा निष्कर्षण के बाद, हमारा डेटा दिखता है:
# name ends-vowel num-vowels length gender
# ------------------------------------------------
Ashley 1 3 6 f
Brian 0 2 5 m
Caroline 1 4 8 f
David 0 2 5 m
निर्णय वृक्ष का निर्माण करना है । एक पेड़ का एक उदाहरण होगा:
length<7
| num-vowels<3: male
| num-vowels>=3
| | ends-vowel=1: female
| | ends-vowel=0: male
length>=7
| length=5: male
मूल रूप से प्रत्येक नोड एक विशेषता पर किए गए परीक्षण का प्रतिनिधित्व करते हैं, और हम परीक्षण के परिणाम के आधार पर बाएं या दाएं जाते हैं। हम पेड़ को तब तक टटोलते रहते हैं जब तक कि हम एक पत्ते के नोड तक नहीं पहुँच जाते हैं जिसमें कक्षा की भविष्यवाणी ( m
या f
) होती है
इसलिए यदि हम अमरो नाम इस पेड़ के नीचे चलाते हैं, तो हम परीक्षण " लंबाई <7 है? " से शुरू करते हैं और जवाब हां है , इसलिए हम उस शाखा के नीचे जाते हैं। शाखा के बाद, अगला परीक्षण " स्वरों की संख्या <3 है? " फिर से सच का मूल्यांकन करता है । इससे एक पत्ती नोड लेबल होता है m
, और इस प्रकार भविष्यवाणी पुरुष है (जो मैं होने वाला हूं, इसलिए पेड़ ने सही ढंग से परिणाम की भविष्यवाणी की है )।
निर्णय पेड़ एक शीर्ष-डाउन फैशन में बनाया गया है , लेकिन सवाल यह है कि आप प्रत्येक नोड पर विभाजित करने के लिए किस विशेषता को चुनते हैं? इसका जवाब यह है कि वह सुविधा है जो लक्ष्य वर्ग को शुद्धतम संभावित बच्चों के नोड्स में विभाजित करती है (यानी: नोड्स जिसमें पुरुष और महिला दोनों का मिश्रण नहीं है, बल्कि केवल एक कक्षा के साथ शुद्ध नोड्स हैं)।
शुद्धता के इस उपाय को सूचना कहा जाता है । यह उस जानकारी की अपेक्षित मात्रा का प्रतिनिधित्व करता है, जिसे यह निर्दिष्ट करने की आवश्यकता होगी कि क्या एक नया उदाहरण (पहला नाम) को वर्गीकृत पुरुष या महिला को वर्गीकृत किया जाना चाहिए, जो कि नोड तक पहुंच गया है। हम नोड पर पुरुष और महिला वर्गों की संख्या के आधार पर इसकी गणना करते हैं।
Entropy दूसरी तरफ का एक उपाय है अशुद्धता (विपरीत)। यह एक के लिए परिभाषित किया गया है द्विआधारी वर्ग मूल्यों के साथa
/b
के रूप में:
Entropy = - p(a)*log(p(a)) - p(b)*log(p(b))
इस द्विआधारी एन्ट्रापी फ़ंक्शन को नीचे दिए गए चित्र में दर्शाया गया है (यादृच्छिक चर दो मानों में से एक ले सकता है)। संभावना होने पर यह अपने अधिकतम तक पहुँच जाता है p=1/2
, जिसका अर्थ है कि p(X=a)=0.5
या इसी तरह p(X=b)=0.5
50% / 50% होने की संभावना है a
या b
(अनिश्चितता अधिकतम है)। जब संभावना होती है p=1
या p=0
पूर्ण निश्चितता ( p(X=a)=1
या p(X=a)=0
क्रमशः, बाद का तात्पर्य होता है p(X=b)=1
) के साथ एन्ट्रापी फ़ंक्शन शून्य न्यूनतम पर होता है ।
बेशक एन्ट्रोपी की परिभाषा को असतत रैंडम वेरिएबल X के लिए N परिणामों के साथ सामान्यीकृत किया जा सकता है (सिर्फ दो नहीं):
( log
फॉर्मूला में आमतौर पर आधार 2 के लिए लघुगणक के रूप में लिया जाता है )
नाम वर्गीकरण के हमारे कार्य पर वापस, एक उदाहरण देखें। पेड़ के निर्माण की प्रक्रिया के दौरान कुछ बिंदु पर कल्पना करें, हम निम्नलिखित विभाजन पर विचार कर रहे थे:
ends-vowel
[9m,5f] <--- the [..,..] notation represents the class
/ \ distribution of instances that reached a node
=1 =0
------- -------
[3m,4f] [6m,1f]
आप देख सकते हैं, विभाजन इससे पहले कि हम 9 पुरुषों और महिलाओं 5, यानी था P(m)=9/14
और P(f)=5/14
। एन्ट्रॉपी की परिभाषा के अनुसार:
Entropy_before = - (5/14)*log2(5/14) - (9/14)*log2(9/14) = 0.9403
आगे हम इसकी तुलना दो बाल शाखाओं को देखकर विभाजन पर विचार करने के बाद दर्ज की गई एन्ट्रापी से करते हैं। की बाईं शाखा में ends-vowel=1
, हमारे पास है:
Entropy_left = - (3/7)*log2(3/7) - (4/7)*log2(4/7) = 0.9852
और हमारे पास सही शाखा ends-vowel=0
है:
Entropy_right = - (6/7)*log2(6/7) - (1/7)*log2(1/7) = 0.5917
हम प्रत्येक शाखा के नीचे उदाहरणों की संख्या का उपयोग करके बाएं / दाएं एंट्रियों को जोड़ते हैं क्योंकि वजन कारक (7 उदाहरण बाएं गए, और 7 उदाहरण दाएं गए), और विभाजन के बाद अंतिम एन्ट्रापी प्राप्त करें:
Entropy_after = 7/14*Entropy_left + 7/14*Entropy_right = 0.7885
विभाजन से पहले और बाद में एन्ट्रापी की तुलना करके, हम सूचना लाभ का एक माप प्राप्त करते हैं , या हमने उस विशेष सुविधा का उपयोग करके विभाजन द्वारा कितनी जानकारी प्राप्त की:
Information_Gain = Entropy_before - Entropy_after = 0.1518
आप उपरोक्त गणना को निम्नानुसार व्याख्या कर सकते हैं: end-vowels
सुविधा के साथ विभाजन करके , हम 0.1518 ( सूचना की इकाइयों के रूप में बिट्स में मापा जाता है ) की एक छोटी राशि द्वारा उप-पेड़ भविष्यवाणी परिणाम में अनिश्चितता को कम करने में सक्षम थे ।
पेड़ के प्रत्येक नोड पर, यह गणना हर सुविधा के लिए की जाती है, और सबसे बड़ी जानकारी प्राप्त करने की सुविधा को लालची तरीके से विभाजित करने के लिए चुना जाता है (इस प्रकार उन विशेषताओं का पक्ष जो कम अनिश्चितता / एंट्रोपी के साथ शुद्ध विभाजन का उत्पादन करता है)। इस प्रक्रिया को रूट-नोड डाउन से पुनरावर्ती रूप से लागू किया जाता है, और तब बंद हो जाता है जब एक लीफ नोड में सभी समान वर्ग होते हैं (इसे आगे विभाजित करने की आवश्यकता नहीं होती है)।
ध्यान दें कि मैंने कुछ विवरणों को छोड़ दिया है, जो इस पोस्ट के दायरे से परे हैं, जिसमें संख्यात्मक विशेषताओं , लापता मानों , ओवरफिटिंग और प्रूनिंग ट्री आदि को कैसे संभालना है ।