<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 3-061-วริศรา สุวรรณวงค์</title>
    <description>The latest articles on DEV Community by 3-061-วริศรา สุวรรณวงค์ (@3061__2).</description>
    <link>https://dev.to/3061__2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3029407%2Fee902ce8-a361-4058-b171-7a16a442fafa.png</url>
      <title>DEV Community: 3-061-วริศรา สุวรรณวงค์</title>
      <link>https://dev.to/3061__2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/3061__2"/>
    <language>en</language>
    <item>
      <title>ความแตกต่างระหว่าง Decision Tree และ Random Forrest พร้อมข้อดีและข้อเสีย</title>
      <dc:creator>3-061-วริศรา สุวรรณวงค์</dc:creator>
      <pubDate>Tue, 08 Apr 2025 10:45:06 +0000</pubDate>
      <link>https://dev.to/3061__2/khwaamaetktaangrahwaang-decision-tree-aela-random-forrest-phrmkhdiiaelakhesiiy-32cl</link>
      <guid>https://dev.to/3061__2/khwaamaetktaangrahwaang-decision-tree-aela-random-forrest-phrmkhdiiaelakhesiiy-32cl</guid>
      <description>&lt;h2&gt;
  
  
  &lt;em&gt;&lt;strong&gt;เริ่มแรก Decision Tree และ Random Forest นั้นคือะไร?&lt;/strong&gt;&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Decision Tree&lt;/strong&gt; คือ Machine Learning แบบ Supervised Learning ที่ใช้สำหรับ Classification และ Regression โดยใช้โครงสร้างแบบต้นไม้  โดยใช้ Information Gain และ Entropy ในการแยกข้อมูล ซึ่งมีโครงสร้างแบบราก-กิ่ง-ใบ&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;หลักการทำงาน&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;แต่ละ "node" ในต้นไม้จะใช้คุณลักษณะ (feature) หนึ่งในการแบ่งข้อมูล&lt;/li&gt;
&lt;li&gt;ใช้หลักการ Entropy และ Information Gain ในการเลือกว่าจะใช้ feature ไหนในการ 
แบ่งข้อมูลเพื่อให้ได้กลุ่มที่บริสุทธิ์ที่สุด (pure group)&lt;/li&gt;
&lt;li&gt;Terminal node (leaf) แสดงผลลัพธ์ที่คาดการณ์ได้ 
*&lt;em&gt;ตัวอย่าง *&lt;/em&gt;
ถ้ามีข้อมูลผู้โดยสารและต้องการทำนายว่าเขาจะรอดหรือไม่จาก เรือเซวอล
ระบบจะเลือก feature ที่ดีที่สุด เช่น sex, age, class ในการแยกกลุ่ม&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Random Forest&lt;/strong&gt; คือ  Ensemble Learning ที่รวม หลายๆ Decision Tree เข้าด้วยกัน เพื่อเพิ่มความแม่นยำและลด overfitting ใช้วิธี bootstrap และ random selection ของ feature โดยตัดสินใจโดยการ vote หรือ average จากหลายต้นไม้&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;หลักการทำงาน&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;สร้างหลายต้นไม้โดยใช้การ Bootstrap Sampling &lt;/li&gt;
&lt;li&gt;ที่แต่ละ node จะ เลือก feature มาแบบสุ่ม เพื่อหาการแบ่งที่ดีที่สุด&lt;/li&gt;
&lt;li&gt;ใช้วิธี Voting สำหรับ classification และ Averaging สำหรับ regression&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;แล้วความแตกต่างระหว่าง Decision Tree กับ Random Forest เป็นอย่างไร?&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;1.วิธีการสร้าง&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Decision Tree&lt;/strong&gt; - สร้างต้นไม้เดียวแบบลำดับชั้น&lt;br&gt;
&lt;strong&gt;Random Forest&lt;/strong&gt; - สร้างหลายต้นไม้ด้วยการสุ่มข้อมูลและ feature&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;2.ความแม่นยำ&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Decision Tree&lt;/strong&gt; - ความแม่นยำน้อยกว่า มีโอกาส overfitting&lt;br&gt;
&lt;strong&gt;Random Forest&lt;/strong&gt; - มีความแม่นยำกว่า มีความเสถียรกว่า&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;3.ความซับซ้อน&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Decision Tree&lt;/strong&gt; - เข้าใจง่ายกว่า&lt;br&gt;
&lt;strong&gt;Random Forest&lt;/strong&gt; - ซับซ้อนกว่า (เพราะ Decision Tree นั้นมีเพียงต้นไม้เดียว แต่ Random Forest จะสร้างหลายๆ ต้นไม้ (อาจจะ 100, 500, หรือ 1000 ต้นก็ได้) นั่นจึงทำให้กระบวนการภายใน ซับซ้อนขึ้นกว่าแค่ต้นไม้เดียว)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;4.เวลาในการ train model&lt;/em&gt;&lt;/strong&gt; &lt;br&gt;
&lt;strong&gt;Decision Tree&lt;/strong&gt; - เร็วกว่า&lt;br&gt;
&lt;strong&gt;Random Forest&lt;/strong&gt; - ช้ากว่า เนื่องจากมีหลายต้นไม้&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;การทำงานของ code ของ Decision Tree และ Random Forest นั้นเป็นอย่างไร รันแล้วจะมีผลลัพธ์อย่างไร&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.การใช้ Decision Tree **&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb81yfgo2n8hcgo3ncxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb81yfgo2n8hcgo3ncxw.png" alt="Image description" width="603" height="247"&gt;&lt;/a&gt;&lt;br&gt;
**อธิบายโค้ด&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DecisionTreeClassifier คือ ตัวที่เอาไว้สร้างโมเดลต้นไม้&lt;/li&gt;
&lt;li&gt;max_depth=5 คือ จำกัดความลึกของต้นไม้ที่ระดับ 5 (เพื่อป้องกัน overfitting)&lt;/li&gt;
&lt;li&gt;criterion='entropy' คือ การใช้ Entropy (Information Gain) ในการเลือก &lt;/li&gt;
&lt;li&gt;feature ที่ใช้แบ่งข้อมูล&lt;/li&gt;
&lt;li&gt;fit(X_train, y_train) คือ การฝึกโมเดลด้วยข้อมูลเทรน&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2.การใช้ Random Forest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2a3xx2iaeisyf6nt2t25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2a3xx2iaeisyf6nt2t25.png" alt="Image description" width="701" height="263"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;อธิบายโค้ด&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RandomForestClassifier คือ ตัวที่สร้างโมเดล Random Forest&lt;/li&gt;
&lt;li&gt;n_estimators=100 คือ สร้าง 100 ต้นไม้ นั่นจะทำให้โมเดล เรียนรู้จากหลายมุมมอง&lt;/li&gt;
&lt;li&gt;max_depth=10 คือ จำกัดความลึกของแต่ละต้นไม้ไว้ที่ 10&lt;/li&gt;
&lt;li&gt;criterion='gini'คือ  ใช้ Gini Impurity แทน Entropy ในการแยกข้อมูล&lt;/li&gt;
&lt;li&gt;fit(X_train, y_train)คือ ฝึกโมเดลด้วยข้อมูลเทรนเช่นกัน&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ตัวอย่างโค้ด &lt;a href="https://colab.research.google.com/drive/1SePz7Es0w9FRJDbsE3xM0CCnH7NkpdPZ?usp=sharing" rel="noopener noreferrer"&gt;https://colab.research.google.com/drive/1SePz7Es0w9FRJDbsE3xM0CCnH7NkpdPZ?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;ตัวอย่างการรันใช้งาน&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftidfixhiz1h92pe8y7h3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftidfixhiz1h92pe8y7h3.png" alt="Image description" width="748" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdd50ltl8fjqmlmfr57tg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdd50ltl8fjqmlmfr57tg.png" alt="Image description" width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากตัวอย่างโค้ดจะใช้ตัวอย่างในการเทนโมเดลทั้งคู่ให้ทำนายหรือเดาว่าผลลัพะ์ที่ได้นั้นจะตรงกับข้อมูลจริงหรือไม่ โดยเราได้กำหนด &lt;strong&gt;ชั่วโมงที่เรียน (study_hour)&lt;/strong&gt;, &lt;strong&gt;เช็คชื่อเข้าเรียน(attend_class)&lt;/strong&gt;, &lt;strong&gt;ควิซตอบคำถามท้ายชั่วโมงเรียน (classroomgame_quiz)&lt;/strong&gt; ในการแยกกลุ่ม และเช็คว่าผ่านหรือไม่ผ่านโดยการใช้ข้อมูล&lt;strong&gt;(pass_exam)&lt;/strong&gt; จากนั้นมีการใช้โมเดลของ &lt;strong&gt;Decision Tree&lt;/strong&gt; และ &lt;strong&gt;Random Forest&lt;/strong&gt;ในการเดาหรือทำนายนั่นเอง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foknzqqqwo1y5dxmk8bpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foknzqqqwo1y5dxmk8bpo.png" alt="Image description" width="562" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากผลลัพธ์ที่ออกมาแสดงให้เห็นว่าการใช้ &lt;strong&gt;Decision Tree&lt;/strong&gt; นั้นทายถูกจาก&lt;strong&gt;2&lt;/strong&gt;ใน&lt;strong&gt;3&lt;/strong&gt; มีความแม่นยำน้อยกว่า เนื่องจากอาจมีการเกิด &lt;strong&gt;overfitting&lt;/strong&gt; ในขณะที่  &lt;strong&gt;Random Forest&lt;/strong&gt; นั้นทายถูกหมด เนื่องจากมีความแม่นยำและความเสถียรที่สูงกว่า&lt;/p&gt;

&lt;p&gt;ตัวอย่างโค้ด &lt;a href="https://colab.research.google.com/drive/1FvHGyjtBI0NshNQs8K14_QoFq3MzyoyQ?usp=sharing" rel="noopener noreferrer"&gt;https://colab.research.google.com/drive/1FvHGyjtBI0NshNQs8K14_QoFq3MzyoyQ?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;สรุป&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;ถ้าต้องการโมเดลที่เข้าใจง่าย ควรใช้ &lt;strong&gt;Decision Tree&lt;/strong&gt; เพราะโครงสร้างที่อ่านแล้วจะสามารถเข้าใจได้ง่าย แต่ต้องระวังเรื่อง &lt;strong&gt;overfitting&lt;/strong&gt; เพราะตัวโมเดลจะเรียนรู้จากข้อมูลเยอะเกินไปได้ง่าย ส่วน &lt;strong&gt;Random Forest&lt;/strong&gt; จะซับซ้อนกว่า เพราะใช้ Decision Tree หลายต้นรวมกัน ทำให้แม่นยำกว่าและทนกับข้อมูลแปลกๆ ได้ดี แต่ก็อาจจะใช้เวลาฝึกที่นานกว่าและอธิบายผลลัพธ์ยากขึ้น เลือกใช้ให้เหมาะกับงาน ถ้าเน้นความเข้าใจ ใช้ Decision Tree ถ้าเน้นความแม่น ใช้ Random Forest &lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
    </item>
  </channel>
</rss>
