আমি ধরে নিচ্ছি সিদ্ধান্ত গাছগুলি নির্মাণের প্রসঙ্গে এনট্রপির উল্লেখ ছিল ।
আঁকা, কাজটি কল্পনা শেখার জন্য শ্রেণীভুক্ত পুরুষ / মহিলা দলের মধ্যে প্রথম নাম থাকবে না। এটিকে প্রত্যেকের সাথে লেবেলযুক্ত নামের একটি তালিকা দেওয়া হয় m
বা f
, আমরা এমন একটি মডেল শিখতে চাই যা ডেটা ফিট করে এবং একটি নতুন অদেখা প্রথম নামের লিঙ্গ পূর্বাভাস দেওয়ার জন্য ব্যবহার করা যেতে পারে।
name gender
----------------- Now we want to predict
Ashley f the gender of "Amro" (my name)
Brian m
Caroline f
David m
প্রথম পদক্ষেপটি সিদ্ধান্ত নিয়েছে যে ডেটাগুলির বৈশিষ্ট্যগুলি আমরা কীভাবে পূর্বাভাস দিতে চাই তার লক্ষ্য শ্রেণীর সাথে প্রাসঙ্গিক। কয়েকটি উদাহরণ বৈশিষ্ট্যগুলির মধ্যে রয়েছে: প্রথম / শেষ বর্ণ, দৈর্ঘ্য, স্বর সংখ্যা, এটি কি একটি স্বর ইত্যাদির সাহায্যে শেষ হয় So সুতরাং বৈশিষ্ট্য নিষ্কাশনের পরে আমাদের ডেটা দেখে মনে হচ্ছে:
# 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
এবং এভাবে পূর্বাভাস পুরুষ হয় (যা আমি হ'ব, তাই গাছটি ফলাফলটি সঠিকভাবে পূর্বাভাস করেছিল )।
সিদ্ধান্ত গাছটি টপ-ডাউন ফ্যাশনে নির্মিত , তবে প্রশ্নটি হল যে প্রতিটি নোডে বিভক্ত হওয়ার জন্য কোন বৈশিষ্ট্যটি আপনি কীভাবে চয়ন করবেন? উত্তরটি এমন বৈশিষ্ট্যটি সন্ধান করেছে যা সর্বোত্তম সম্ভাব্য শিশু নোডগুলিতে লক্ষ্য শ্রেণিকে সর্বোত্তমভাবে বিভক্ত করে (যেমন: যে নোডগুলিতে পুরুষ এবং মহিলা উভয়ের মিশ্রণ থাকে না, কেবলমাত্র এক শ্রেণীর বিশুদ্ধ নোড)।
পবিত্রতার এই পরিমাপকে তথ্য বলা হয় । এটা তোলে প্রতিনিধিত্ব করে প্রত্যাশিত পরিমাণ তথ্য উদাহরণ নোড পৌঁছেছেন দেওয়া যে একটি নতুন দৃষ্টান্ত (প্রথম নাম) পুরুষ বা মহিলা শ্রেণীবদ্ধ করা হবে কিনা তা নির্দিষ্ট করা প্রয়োজন হবে। আমরা নোডে পুরুষ এবং মহিলা শ্রেণীর সংখ্যার ভিত্তিতে এটি গণনা করি।
এনট্রপি অন্যদিকে একটি পরিমাপ অপবিত্রতা (বিপরীত)। এটিমান/হিসাবে বাইনারি শ্রেণীর জন্য সংজ্ঞায়িত: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
)।
অবশ্যই এনট্রি ফলাফলের (একটি মাত্র দুটি নয়) একটি পৃথক র্যান্ডম ভেরিয়েবল এক্সের জন্য এন্ট্রপির সংজ্ঞাটি সাধারণীকরণ করা যেতে পারে:
( 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
আমরা প্রতিটি শাখাকে ওজন ফ্যাক্টর হিসাবে নিচে উদাহরণগুলির সংখ্যা ব্যবহার করে বাম / ডান প্রবেশপথগুলি একত্রিত করি (inst টি দৃষ্টান্ত বাম হয়ে গেছে, এবং inst টি উদাহরণ ডান দিকে গেছে), এবং বিভক্ত হওয়ার পরে চূড়ান্ত এনট্রপি পেয়েছি:
Entropy_after = 7/14*Entropy_left + 7/14*Entropy_right = 0.7885
এখন বিভাজনের আগে এবং তার পরে এনট্রপির তুলনা করে আমরা একটি বিশেষ তথ্য অর্জন করে বা সেই বিশেষ বৈশিষ্ট্যটি ব্যবহার করে বিভাজন করে কত তথ্য অর্জন করেছি:
Information_Gain = Entropy_before - Entropy_after = 0.1518
উপরের গণনাটি আপনি নিম্নলিখিত হিসাবে ব্যাখ্যা করতে পারেন: end-vowels
বৈশিষ্ট্যটির সাথে বিভক্ত হয়ে আমরা উপ-গাছের পূর্বাভাসের ফলাফলের মধ্যে অল্প পরিমাণ 0.1518 ( তথ্যের একক হিসাবে বিটগুলিতে পরিমাপ করা) দ্বারা অনিশ্চয়তা হ্রাস করতে সক্ষম হয়েছি ) ।
গাছের প্রতিটি নোডে, এই গণনাটি প্রতিটি বৈশিষ্ট্যের জন্য করা হয় এবং বৃহত্তম তথ্য লাভের বৈশিষ্ট্যটি লোভী উপায়ে বিভক্ত হওয়ার জন্য বেছে নেওয়া হয় (এইভাবে এমন বৈশিষ্ট্যগুলির পক্ষে হয় যা বিশুদ্ধ উত্পাদন করে যা কম অনিশ্চয়তা / এনট্রপি সহ বিভক্ত করে)। এই প্রক্রিয়াটি মূল-নোডটি নীচে থেকে পুনরাবৃত্তভাবে প্রয়োগ করা হয়, এবং যখন কোনও পাতার নোডে একই শ্রেণীর সমস্ত উদাহরণ থাকে (এটিকে আরও বিভক্ত করার দরকার নেই) তখন থেমে যায়।
নোট করুন যে আমি সংখ্যাসূচক বৈশিষ্ট্যগুলি কীভাবে পরিচালনা করতে হবে , মূল্যবোধগুলি হারিয়ে যাওয়া , গাছপালা ছাড়াই এবং গাছ ছাঁটাই করা ইত্যাদি সহ এই পোস্টের আওতার বাইরে কিছু বিবরণ ছাড়লাম ..