ແນະນຳກ່ຽວກັບ Random Forests: ການຄາດຄະເນຜົນຜະລິດກາເຟໃນປາກຊ່ອງ
ແນະນຳກ່ຽວກັບ Random Forests: ການຄາດຄະເນຜົນຜະລິດກາເຟໃນປາກຊ່ອງ
ເມືອງປາກຊ່ອງ, ເຊິ່ງຕັ້ງຢູ່ເທິງພູພຽງບໍລະເວນ, ແມ່ນແຫຼ່ງປູກກາເຟອາຣາບີກາ (Arabica) ທີ່ດີທີ່ສຸດ ແລະ ມີຊື່ສຽງທີ່ສຸດໃນປະເທດລາວ. ແຕ່ສຳລັບຊາວສວນກາເຟແລ້ວ, ການຄາດຄະເນຜົນຜະລິດໃນແຕ່ລະປີແມ່ນສິ່ງທ້າທາຍໃຫຍ່ ເພາະມັນຂຶ້ນກັບຫຼາຍປັດໄຈທີ່ຄວບຄຸມໄດ້ຍາກ ເຊັ່ນ: ປະລິມານນໍ້າຝົນ, ເວລາທີ່ແດດອອກ, ຄ່າ pH ຂອງດິນ ແລະ ອຸນຫະພູມ. ຈະເປັນແນວໃດຖ້າພວກເຮົາສາມາດນຳໃຊ້ Machine Learning (ML) ເພື່ອຊ່ວຍຊາວສວນວິເຄາະ ແລະ ຄາດຄະເນຜົນຜະລິດລ່ວງໜ້າ?
ໃນບົດຄວາມນີ້, ເຮົາຈະມາລົງເລິກວິທີການທາງເຕັກນິກລະດັບປານກາງທີ່ເອີ້ນວ່າ Random Forests ເຊິ່ງເປັນໜຶ່ງໃນ Ensemble Methods ທີ່ນິຍົມທີ່ສຸດ, ພ້ອມທັງເບິ່ງວິທີການຂຽນໂຄ້ດໃນການສ້າງໂມເດລເພື່ອຄາດຄະເນຜົນຜະລິດກາເຟໄປນຳກັນ.
Random Forests ແມ່ນຫຍັງ?
ກ່ອນຈະຮູ້ຈັກ Random Forests, ເຮົາຕ້ອງເຂົ້າໃຈ Decision Tree (ຕົ້ນໄມ້ຕັດສິນໃຈ) ກ່ອນ. Decision Tree ຄືການສ້າງເງື່ອນໄຂການຕັດສິນໃຈເປັນຂັ້ນຕອນ ເຊັ່ນ: “ຖ້າຝົນຕົກຫຼາຍກວ່າ 1500mm ແລະ ດິນມີ pH ທີ່ເໝາະສົມ -> ຜົນຜະລິດຈະສູງ”. ແຕ່ບັນຫາຂອງ Decision Tree ຄືມັນມັກຈະເກີດອາການ Overfitting (ຈື່ຂໍ້ມູນເຝິກສອນໄດ້ດີເກີນໄປ ແຕ່ໃຊ້ກັບຂໍ້ມູນຈິງບໍ່ໄດ້ຜົນດີ).
Random Forests ຈຶ່ງເຂົ້າມາແກ້ໄຂບັນຫານີ້ ໂດຍການນຳໃຊ້ແນວຄິດ Ensemble Learning. ປຽບທຽບງ່າຍໆ: ແທນທີ່ທ່ານຈະຖາມຊາວສວນກາເຟພຽງຄົນດຽວ (Decision Tree ໜຶ່ງຕົ້ນ), ທ່ານໄປຖາມຊາວສວນທີ່ມີປະສົບການແຕກຕ່າງກັນ 100 ຄົນ ແລ້ວເອົາຄຳຕອບຂອງທຸກຄົນມາສະເລ່ຍກັນ ຫຼື ໂຫວດຫາຄຳຕອບທີ່ຫຼາຍທີ່ສຸດ (ປ່າໄມ້ສຸ່ມ).
ກຽມຂໍ້ມູນ (Features) ສຳລັບສວນກາເຟປາກຊ່ອງ
ການຈະສ້າງໂມເດລທີ່ດີ, ເຮົາຈຳເປັນຕ້ອງມີຂໍ້ມູນປະຫວັດການປູກກາເຟ. ສຳລັບການຄາດຄະເນຜົນຜະລິດແບບຕົວເລກຕໍ່ເນື່ອງ, ເຮົາຈະໃຊ້ Random Forest Regressor. ປັດໄຈ (Features) ທີ່ເຮົາຈະນຳມາສ້າງໂມເດລ ອາດຈະປະກອບມີ:
altitude: ຄວາມສູງຈາກລະດັບນໍ້າທະເລ (ປາກຊ່ອງສູງປະມານ 1,000 - 1,300 ແມັດ)rainfall: ປະລິມານນໍ້າຝົນສະເລ່ຍຕໍ່ປີ (ມິນລີແມັດ)avg_temp: ອຸນຫະພູມສະເລ່ຍ (ອົງສາເຊນຊຽດ)soil_ph: ຄ່າຄວາມເປັນກົດ-ດ່າງ ຂອງດິນ- Target (y):
yield_kg_per_ha(ຜົນຜະລິດກາເຟທີ່ໄດ້ ກິໂລກຣາມ ຕໍ່ ເຮັກຕາ)
ການສ້າງໂມເດລດ້ວຍ Python ແລະ Scikit-Learn
ມາຮອດຂັ້ນຕອນການຂຽນໂຄ້ດ, ເຮົາຈະໃຊ້ scikit-learn ເຊິ່ງເປັນໄລບຣາລີຍອດຮິດສຳລັບ Machine Learning ໃນ Python.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
# 1. ສ້າງຂໍ້ມູນຈຳລອງ (Mock Data) ຂອງສວນກາເຟ 10 ແຫ່ງໃນປາກຊ່ອງ
data = {
'altitude': [1200, 1250, 1100, 1300, 1150, 1050, 1280, 1220, 1180, 1210],
'rainfall': [1500, 1600, 1450, 1700, 1550, 1400, 1650, 1520, 1480, 1510],
'avg_temp': [22.5, 23.0, 24.5, 21.0, 23.5, 25.0, 21.5, 22.8, 23.2, 22.6],
'soil_ph': [5.5, 5.6, 5.2, 5.8, 5.4, 5.1, 5.7, 5.5, 5.3, 5.5],
'yield_kg_per_ha': [1800, 1950, 1600, 2100, 1750, 1500, 2050, 1850, 1700, 1820]
}
df = pd.DataFrame(data)
# 2. ແຍກ Features (X) ແລະ ຕົວແປທີ່ຕ້ອງການພະຍາກອນ (y)
X = df[['altitude', 'rainfall', 'avg_temp', 'soil_ph']]
y = df['yield_kg_per_ha']
# 3. ແບ່ງຂໍ້ມູນສຳລັບ Train (80%) ແລະ Test (20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 4. ສ້າງໂມເດລ Random Forest
# n_estimators: ຈຳນວນຕົ້ນໄມ້ໃນປ່າ (ເຮົາໃຊ້ 100 ຕົ້ນ)
rf_model = RandomForestRegressor(n_estimators=100, max_depth=5, random_state=42)
# 5. ເຝິກສອນໂມເດລ (Training Model)
rf_model.fit(X_train, y_train)
# 6. ທົດສອບຄາດຄະເນ (Prediction) ເທິງຂໍ້ມູນ Test
predictions = rf_model.predict(X_test)
# 7. ປະເມີນຜົນໂມເດລ
print("ຄ່າ R-squared ຂອງໂມເດລ:", r2_score(y_test, predictions))
print("ຄ່າຄວາມຜິດພາດ (RMSE):", np.sqrt(mean_squared_error(y_test, predictions)))
ການວິເຄາະຄວາມສຳຄັນຂອງປັດໄຈ (Feature Importance)
ໜຶ່ງໃນຈຸດເດັ່ນຂອງ Random Forest ແມ່ນມັນສາມາດບອກເຮົາໄດ້ວ່າ ປັດໄຈໃດມີອິດທິພົນທີ່ສຸດຕໍ່ຜົນຜະລິດກາເຟ. ທ່ານສາມາດດຶງຂໍ້ມູນນີ້ໄດ້ງ່າຍໆ:
# ກວດສອບວ່າປັດໄຈໃດສຳຄັນທີ່ສຸດ
feature_importances = pd.Series(rf_model.feature_importances_, index=X.columns)
print("ຄວາມສຳຄັນຂອງແຕ່ລະປັດໄຈ:\n", feature_importances.sort_values(ascending=False))
ຫາກໂມເດລບອກວ່າ rainfall ມີຄ່າສູງສຸດ, ຊາວສວນປາກຊ່ອງກໍ່ສາມາດໃຫ້ຄວາມສຳຄັນກັບລະບົບການຈັດການນໍ້າໃຫ້ຫຼາຍຂຶ້ນ.
ຈຸດສຳຄັນທີ່ຄວນຈື່ (Key Takeaways)
- ຫຼຸດຜ່ອນ Overfitting: ການໃຊ້ Ensemble Learning ຜ່ານຫຼາຍໆຕົ້ນໄມ້ຊ່ວຍໃຫ້ໂມເດລມີຄວາມໝັ້ນຄົງ ແລະ ແມ່ນຢຳກວ່າ Decision Tree ທຳມະດາ.
- Feature Importance ທີ່ຊັດເຈນ: ສາມາດຕອບໂຈດເຊີງທຸລະກິດໄດ້ວ່າ ຊາວສວນຄວນລົງທຶນກັບການປັບປຸງຄຸນນະພາບດິນ (soil pH) ຫຼາຍກວ່າ ຫຼື ປັດໄຈອື່ນໆ.
- ຄວາມຍືດຫຍຸ່ນ: Random forest ຮອງຮັບທັງຂໍ້ມູນແບບແຍກປະເພດ (Classification) ແລະ ຂໍ້ມູນຕົວເລກຕໍ່ເນື່ອງ (Regression) ດັ່ງຕົວຢ່າງຂອງພວກເຮົາ.
ສະຫຼຸບ
ເຕັກນິກ Random Forests ເປັນເຄື່ອງມືທີ່ຊົງພະລັງສຳລັບນັກວິເຄາະຂໍ້ມູນ ແລະ ນັກພັດທະນາ ເພາະມັນໃຫ້ຄວາມຖືກຕ້ອງເຂົ້າຂັ້ນສູງໂດຍບໍ່ຈຳເປັນຕ້ອງປັບຈູນ (Tuning) ຫຍັງຫຼາຍ. ສຳລັບປະເທດລາວ ເຊິ່ງມີພື້ນຖານທາງດ້ານກະສິກຳເປັນຫຼັກ, ການນຳເອົາເຕັກໂນໂລຊີ Machine Learning ມາປະຍຸກໃຊ້ກັບຂໍ້ມູນຕົວຈິງຕາມທ້ອງຖິ່ນ ເຊັ່ນ ສວນກາເຟໃນປາກຊ່ອງ, ສາມາດເປັນກຸນແຈສຳຄັນທີ່ຍົກລະດັບປະລິມານ ແລະ ຄຸນນະພາບຂອງຜົນຜະລິດກະສິກຳລາວໃຫ້ກ້າວສູ່ຕະຫຼາດສາກົນໄດ້ຢ່າງໝັ້ນຄົງ.