# การสร้าง Model และการวัดประสิทธิภาพของ Model

## BDH X-Brain

**BDH X-Brain** คือ แพลตฟอร์มที่พัฒนาขึ้นเพื่อรองรับการสำรวจข้อมูล (Data Exploration) และการทำป้ายชื่อข้อมูล (Data Labeling) สำหรับการสร้างโมเดล AI พร้อมด้วยระบบการปรับใช้แบบอัตโนมัติ (Automated Deployment) ซึ่งช่วยให้กระบวนการสร้างโมเดล AI เป็นไปอย่างราบรื่น รวดเร็ว และมีประสิทธิภาพสูงสุด แพลตฟอร์มนี้ออกแบบมาเพื่อตอบสนองความต้องการในหลายด้าน ไม่ว่าจะเป็นการศึกษา การวิจัย และการประยุกต์ใช้ในอุตสาหกรรม AI และ Machine Learning&#x20;

## **การฝึกและปรับแต่งโมเดล (Model Training and Tuning)**

1. **Training**: การฝึกโมเดลคือการใช้ข้อมูลที่เตรียมไว้มาสอนให้โมเดลเข้าใจและสร้างความสัมพันธ์ระหว่างข้อมูลเข้าและผลลัพธ์ โมเดลจะพยายามลดข้อผิดพลาดหรือค่าความคลาดเคลื่อนระหว่างผลลัพธ์ที่คาดการณ์กับผลลัพธ์จริง
2. **Hyperparameter Tuning**: การปรับแต่งค่าพารามิเตอร์ของโมเดล เช่น ค่า Learning Rate ใน Neural Networks หรือจำนวนของ Decision Trees ใน Random Forest เพื่อให้โมเดลทำงานได้อย่างมีประสิทธิภาพที่สุด
3. **Cross-Validation**: เทคนิคในการแบ่งข้อมูลออกเป็นหลายส่วนเพื่อประเมินความแม่นยำของโมเดลและลดความเสี่ยงในการ Overfitting หรือการเรียนรู้ข้อมูลเฉพาะเกินไป

## การสร้าง Model และการวัดประสิทธิภาพของ Model (evaluation)

ในส่วนของขั้นตอนนี้จะเป็นขั้นตอนการเรียนรู้เชิงปัญญาประดิษฐ์เพื่อสร้างโมเดลปัญญาประดิษฐ์ (AI Model) สำหรับใช้ในการประมวลผลต่อไป โดยจะมีขั้นตอนการดำเนินงานดังต่อไปนี้

### ขั้นตอนการ การสร้าง Model

1\. ต่อเนื่องจาก **การกำหนดป้ายกำกับ (Data Labeling) ในชุดข้อมูล (Dataset) บน X-Brain** เข้าไปในโปรเจค “Gesture” แท็บเมนู “**Dataset**” เลือกที่ไฟล์ข้อมูลแล้วไปที่เมนู “**Training Model**”

<figure><img src="/files/eE6xoTWcfYPw17NBK1uM" alt=""><figcaption><p>การเลือก Training Model</p></figcaption></figure>

2\. หลังจากกดปุ่มจะมีหน้าต่างการทำงานขึ้นมาให้ผู้เรียนกรอก ซึ่งค่าเหล่านั้นมีดังนี้

<figure><img src="/files/8ASMhoZk04IPBk6tmPnm" alt=""><figcaption></figcaption></figure>

* **Model name:** ตั้งชื่อโมเดลที่ใช้ในการวิเคราะห์หรือทำนายผลลัพธ์
* **Select training:** เลือกประเภทของข้อมูลที่ต้องการจะให้ปัญญาประดิษฐ์เรียนรู้ประกอบไปด้วย
  * **activity:** ข้อมูลที่เกี่ยวกับกิจกรรมของผู้ใช้ เช่น การเดิน การวิ่ง การนั่ง การนอน ซึ่งมักถูกใช้ในการพัฒนาระบบที่สามารถตรวจจับหรือทำนายกิจกรรมที่ผู้ใช้กำลังทำอยู่ในเวลานั้นๆ
  * **health (covid-19):** ข้อมูลที่เกี่ยวข้องกับสุขภาพ เช่น อุณหภูมิร่างกาย อาการที่แสดงออก ซึ่งสามารถนำไปใช้ในการตรวจจับหรือทำนายความเสี่ยงในการติดเชื้อ COVID-19&#x20;
  * **movement (up-side-down):** ข้อมูลการเคลื่อนไหวที่เกี่ยวกับการเปลี่ยนแปลงท่าทาง เช่น การคว่ำหน้าหรือการกลับหัว ซึ่งใช้ในการพัฒนาระบบที่สามารถตรวจจับและตอบสนองต่อการเปลี่ยนแปลงการเคลื่อนไหวของผู้ใช้หรืออุปกรณ์ได้

<figure><img src="/files/jAXhzh6YSGMaisAhusGA" alt=""><figcaption><p>การเลือกประเภทของข้อมูลที่ให้ Model เรียนรู้</p></figcaption></figure>

* **Select model:** เลือกโมเดลที่เหมาะสมที่สุดสำหรับการวิเคราะห์หรือทำนายผลลัพธ์ประกอบไปด้วย

<figure><img src="/files/FRpVEerv5MjJREbwxJoI" alt=""><figcaption><p>การเลือก Model</p></figcaption></figure>

* **Random Forest**&#x20;
  * **max\_depth:** ความลึกสูงสุดของต้นไม้ในโมเดล **Decision Tree** หรือ **Random Forest** ซึ่งจะจำกัดจำนวนชั้นที่สามารถแบ่งข้อมูลได้ ช่วยป้องกันการ overfitting
  * **n\_estimators:** จำนวนต้นไม้ในโมเดล **Random Forest** หรือจำนวนรอบการเรียนรู้ในโมเดล Ensemble Methods&#x20;
  * **min\_samples\_split:** จำนวนตัวอย่างข้อมูลขั้นต่ำที่จำเป็นในการแบ่ง node หนึ่งๆ ในโมเดล **Decision Tree** ยิ่งมีค่ามาก จะช่วยป้องกัน overfitting
  * **min\_samples\_leaf:** จำนวนตัวอย่างข้อมูลขั้นต่ำที่ต้องมีในแต่ละใบ (leaf) ของต้นไม้ ช่วยควบคุมความซับซ้อนของโมเดล
  * **max\_features:** จำนวนฟีเจอร์สูงสุดที่โมเดลจะพิจารณาในการแบ่งแต่ละครั้งในโมเดล **Random Forest** หรือ **Decision Tree**
  * **Criterion for hyperparameter optimization:** เกณฑ์หรือมาตรฐานที่ใช้ในการปรับค่าพารามิเตอร์ของโมเดลเพื่อเพิ่มประสิทธิภาพ
    * Gini
    * Entropy

<figure><img src="/files/QNZAjP3AnDe6bVhOzMen" alt=""><figcaption><p>การเลือกเกณฑ์ในการปรับค่าพารามิเตอร์ของ Model</p></figcaption></figure>

* **Decision Tree**
  * **max\_depth:** ความลึกสูงสุดของต้นไม้ในโมเดล **Decision Tree** หรือ **Random Forest** ซึ่งจะจำกัดจำนวนชั้นที่สามารถแบ่งข้อมูลได้ ช่วยป้องกันการ overfitting
  * **min\_samples\_split:** จำนวนตัวอย่างข้อมูลขั้นต่ำที่จำเป็นในการแบ่ง node หนึ่งๆ ในโมเดล **Decision Tree** ยิ่งมีค่ามาก จะช่วยป้องกัน overfitting
  * **min\_samples\_leaf:** จำนวนตัวอย่างข้อมูลขั้นต่ำที่ต้องมีในแต่ละใบ (leaf) ของต้นไม้ ช่วยควบคุมความซับซ้อนของโมเดล
  * **max\_features:** จำนวนฟีเจอร์สูงสุดที่โมเดลจะพิจารณาในการแบ่งแต่ละครั้งในโมเดล **Random Forest** หรือ **Decision Tree**
  * **Criterion for hyperparameter optimization:** เกณฑ์หรือมาตรฐานที่ใช้ในการปรับค่าพารามิเตอร์ของโมเดลเพื่อเพิ่มประสิทธิภาพ
    * Gini
    * Entropy
* **Gradient Boosting**
  * **max\_depth\_db:** ระดับความลึกสูงสุดของแต่ละต้นไม้ใน **Gradient Boosting** การตั้งค่าพารามิเตอร์นี้จะจำกัดจำนวนระดับของโหนดในแต่ละต้นไม้ ช่วยควบคุมความซับซ้อนของโมเดลและป้องกันการ overfitting
  * **n\_estimators:** จำนวนต้นไม้ในโมเดล **Random Forest** หรือจำนวนรอบการเรียนรู้ในโมเดล Ensemble Methods&#x20;
  * **learning\_rate:** อัตราการเรียนรู้ใน **Gradient Boosting** เป็นค่าที่ลดน้ำหนักของแต่ละต้นไม้ที่ถูกสร้างขึ้นในแต่ละรอบการฝึก ถ้าเรียนรู้ช้า (ค่าต่ำ) โมเดลจะค่อยๆ ปรับตัวและอาจต้องใช้ต้นไม้หลายต้น แต่จะช่วยลดโอกาสเกิด overfitting
  * **subsample:** อัตราส่วนของข้อมูลที่ใช้ในการสร้างแต่ละต้นไม้ใน **Gradient Boosting** ถ้าค่าต่ำกว่าหนึ่ง จะใช้เพียงบางส่วนของข้อมูลเท่านั้น ช่วยเพิ่มความหลากหลายของต้นไม้ ลดความเสี่ยงของ overfitting และเพิ่มความเร็วในการฝึกโมเดล
  * **min\_samples\_split:** จำนวนตัวอย่างข้อมูลขั้นต่ำที่จำเป็นในการแบ่ง node หนึ่งๆ ในโมเดล **Decision Tree** ยิ่งมีค่ามาก จะช่วยป้องกัน overfitting
  * **min\_samples\_leaf:** จำนวนตัวอย่างข้อมูลขั้นต่ำที่ต้องมีในแต่ละใบ (leaf) ของต้นไม้ ช่วยควบคุมความซับซ้อนของโมเดล
  * **Criterion for hyperparameter optimization:** เกณฑ์หรือมาตรฐานที่ใช้ในการปรับค่าพารามิเตอร์ของโมเดลเพื่อเพิ่มประสิทธิภาพ
    * squared\_error
    * friedman\_mse&#x20;

<figure><img src="/files/EnFyhyVrNG8V40WNu7sw" alt=""><figcaption><p>การเลือกเกณฑ์ในการปรับค่าพารามิเตอร์ของ Model</p></figcaption></figure>

* **Test size:** สัดส่วนของข้อมูลที่ใช้สำหรับทดสอบโมเดล เพื่อประเมินความแม่นยำและประสิทธิภาพของโมเดล (มักจะระบุเป็นเปอร์เซ็นต์ เช่น 20% ในระบบ 0.20)

3\. เมื่อกรอกข้อมูลเรียบร้อยให้ทำการกดปุ่ม "**Train Model**" เพื่อเริ่มการเรียนรู้ข้อมูล หลังจากนั้นแพลตฟอร์มจะเริ่มเรียนรู้ข้อมูล

<figure><img src="/files/arpXh9nl7XAXAWEdz8mX" alt=""><figcaption><p>การเริ่ม Train Model</p></figcaption></figure>

4\. หลังจากที่กระบวนการเรียนรู้เสร็จสิ้นจะปรากฏผลลัพธ์โมเดลขึ้นมาดังตัวอย่างรูปภาพด้านล่าง

<figure><img src="/files/mHxYrD7bSj4SoytcxNVV" alt=""><figcaption><p>ผลลัพธ์ที่ได้จากการ train model</p></figcaption></figure>

* **X.shape =(8000, 6), X\_test.shape = (2000, 6):** หมายถึงขนาดของชุดข้อมูลฝึกอบรมและทดสอบ โดยชุดข้อมูลฝึกอบรม (X) มีตัวอย่างข้อมูลจำนวน **8000** แถว และมีคุณลักษณะ (features) จำนวน 6 ตัว ส่วนชุดข้อมูลทดสอบ (X\_test) มีตัวอย่างข้อมูลจำนวน 2000 แถว และมีคุณลักษณะจำนวน 6 ตัว
* **Test Accuracy: 99.50%:** ค่านี้แสดงถึงความแม่นยำของโมเดลบนชุดข้อมูลทดสอบ ซึ่งบอกถึงความสามารถของโมเดลในการทำนายข้อมูลใหม่ที่ไม่เคยเห็นมาก่อน ในที่นี้มีค่าความแม่นยำที่ 99.50%
* **BentoML deployment service URL:** URL นี้เป็นตำแหน่งที่โมเดลที่ฝึกเสร็จแล้วถูกนำไปใช้งานผ่านสำหรับการ deploy โมเดลแมชชีนเลิร์นนิง
* **Trained Model Hyperparameters:** เป็นรายการของพารามิเตอร์ที่ใช้ในการฝึกโมเดล **Decision Tree** แต่ละพารามิเตอร์จะมีผลต่อพฤติกรรมของโมเดล

5\. หลังจากนั้นให้ไปที่เมนู "**AI Model**" จะปรากฎผลลัพธ์ดังรูปภาพด้านล่าง ซึ่งในตอนเริ่มต้นจะว่างเปล่า แต่ปัจจุบันจะแสดงผลไฟล์ model ที่ผ่านการ train model ขึ้นมาในหน้าต่างนี้

<figure><img src="/files/czv7PKfajEInZjzSA3LO" alt=""><figcaption><p>ไฟล์ข้อมูลที่ได้จากการสร้าง Model</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aic-eec.com/iot-development-with-infineon-psoc-tm-6-and-bdh-platform/bdh-x-brain-data-analytics/model-model.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
