ການທຳຄວາມສະອາດຂໍ້ມູນ 101: ກຽມພ້ອມຊຸດຂໍ້ມູນລາວສຳລັບ Machine Learning
ສະບາຍດີທຸກທ່ານ! ຍິນດີຕ້ອນຮັບສູ່ບົດຄວາມພື້ນຖານທີ່ສຳຄັນທີ່ສຸດສຳລັບການເລີ່ມຕົ້ນເຮັດ Machine Learning (ML - ການຮຽນຮູ້ຂອງເຄື່ອງຈັກ).
ຖ້າປຽບທຽບການສ້າງໂມເດລ ML ກັບການຕຳໝາກຫຸ່ງ, “ຂໍ້ມູນ” (Data) ກໍຄືວັດຖຸດິບ. ຖ້າໝາກຫຸ່ງບໍ່ສົດ, ໜ່ວຍຫ່ຽວ ຫຼື ປາແດກບໍ່ແຊບ, ຕຳອອກມາກໍຈະບໍ່ແຊບ. ໃນວົງການຄອມພິວເຕີເຮົາເອີ້ນຫຼັກການນີ້ວ່າ “Garbage In, Garbage Out” (ເອົາຂີ້ເຫຍື້ອເຂົ້າໄປ, ກໍໄດ້ຂີ້ເຫຍື້ອອອກມາ). ດັ່ງນັ້ນ, ກ່ອນຈະໄປສ້າງ AI ທີ່ສະຫຼາດລ້ຳ, ເຮົາຕ້ອງມາຮຽນຮູ້ວິທີການ “ທຳຄວາມສະອາດຂໍ້ມູນ” (Data Cleaning) ກັນກ່ອນ.
ໃນບົດຄວາມນີ້, ເຮົາຈະມາຮຽນຮູ້ແບບເທື່ອລະກ້າວພ້ອມກັບການຂຽນໂຄດຄຳສັ່ງງ່າຍໆ ໂດຍເນັ້ນໃສ່ອຸປະສັກທີ່ເຮົາມັກພົບເຫັນໃນຂໍ້ມູນຂອງທ້ອງຖິ່ນລາວເຮົາ.
ການທຳຄວາມສະອາດຂໍ້ມູນ (Data Cleaning) ແມ່ນຫຍັງ?
ການທຳຄວາມສະອາດຂໍ້ມູນ ແມ່ນຂະບວນການຄົ້ນຫາ ແລະ ແກ້ໄຂຂໍ້ມູນທີ່ຜິດພາດ, ບໍ່ຄົບຖ້ວນ, ຂໍ້ມູນຊ້ຳຊ້ອນ ຫຼື ບໍ່ເປັນຮູບແບບດຽວກັນ ເພື່ອໃຫ້ພ້ອມສຳລັບການນຳໄປຝຶກສອນ (Train) ໂມເດລ. ເນື່ອງຈາກນີ້ແມ່ນບົດຮຽນລະດັບເລີ່ມຕົ້ນ, ເຮົາຈະມາໃຊ້ພາສາ Python ແລະ ຫໍສະໝຸດ (Library) ທີ່ຊື່ວ່າ Pandas ເຊິ່ງເປັນເຄື່ອງມືພື້ນຖານງ່າຍໆທີ່ນັກພັດທະນາທົ່ວໂລກໃຊ້ງານ.
ບັນຫາຂໍ້ມູນທີ່ມັກພົບໃນບໍລິບົດຂອງລາວ
ເມື່ອເຮົາເກັບກຳຂໍ້ມູນໃນລາວ ບໍ່ວ່າຈະເປັນຈາກທຸລະກິດ SME ຫຼື ຂໍ້ມູນພາກລັດ, ມັກຈະພົບບັນຫາດັ່ງນີ້:
- ຂໍ້ມູນຂາດຫາຍ (Missing Data): ເຊັ່ນ: ເຊັນເຊີວັດແທກລະດັບນ້ຳຂອງຢູ່ປາກເຊອາດຈະຂັດຂ້ອງບາງມື້ ເຮັດໃຫ້ຄ່າວັດແທກເປັນຊ່ອງວ່າງ, ຫຼື ລູກຄ້າບໍ່ຍອມບອກອາຍຸໃນແບບສອບຖາມ.
- ຄວາມບໍ່ສະໝ່ຳສະເໝີຂອງຂໍ້ມູນ (Inconsistent Formatting): ຄົນລາວມັກຂຽນໜຶ່ງຄວາມໝາຍແຕ່ຫຼາຍຮູບແບບ ເຊັ່ນ: ແຂວງ “ວຽງຈັນ”, “ນະຄອນຫຼວງວຽງຈັນ”, “VTE” ຫຼື ການຂຽນເບີໂທລະສັບຜູ້ຕິດຕໍ່ ເຊັ່ນ: “020…”, “85620…”, ຫຼື “+856 20…“.
ມາເລີ່ມລົງມືກັນເລີຍ (Step-by-Step Tutorial)
ໃຫ້ສົມມຸດວ່າເຮົາມີທຸລະກິດຮ້ານກາເຟ SME ແຫ່ງໜຶ່ງ ແລະ ເຮົາມີໄຟລ໌ຂໍ້ມູນຍອດຂາຍຊື່ວ່າ coffee_sales.csv.
ຂັ້ນຕອນທີ 1: ນຳເຂົ້າຂໍ້ມູນ (Load the Data)
ກ່ອນອື່ນໝົດ, ເຮົາຕ້ອງນຳເອົາໂປຣແກຣມເສີມທີ່ມີຊື່ວ່າ Pandas ເຂົ້າມາກ່ອນ.
import pandas as pd
# ນຳເຂົ້າຂໍ້ມູນຈາກໄຟລ໌ CSV
df = pd.read_csv('coffee_sales.csv')
# ເບິ່ງຂໍ້ມູນ 5 ແຖວທຳອິດ
print(df.head())
ຂັ້ນຕອນທີ 2: ຈັດການກັບຂໍ້ມູນທີ່ຂາດຫາຍ (Handling Missing Data)
ຖ້າຂໍ້ມູນຈຳນວນແກ້ວທີ່ຂາຍໄດ້ໃນບາງມື້ຂາດຫາຍໄປ (ໃນ Python ຈະສະແດງເປັນ NaN ເຊິ່ງຫຍໍ້ມາຈາກ Not a Number), ເຮົາສາມາດແກ້ໄຂໄດ້ 2 ວິທີຫຼັກໆ:
ວິທີທີ 2.1: ຕັດແຖວນັ້ນຖິ້ມໄປເລີຍ (Drop) ເໝາະສຳລັບກໍລະນີທີ່ຂໍ້ມູນຂາດຫາຍມີຈຳນວນໜ້ອຍຫຼາຍ.
# ຕັດແຖວທີ່ມີຊ່ອງວ່າງຖິ້ມ
df_clean = df.dropna()
ວິທີທີ 2.2: ຕື່ມຄ່າສະເລ່ຍໃສ່ແທນ (Fillna) ລຶບຖິ້ມອາດຈະເສຍດາຍຂໍ້ມູນ, ເຮົາສາມາດເອົາຍອດຂາຍສະເລ່ຍຂອງແຕ່ລະມື້ໄປຕື່ມໃສ່ບ່ອນວ່າງໄດ້. (ເໝາະສຳລັບຂໍ້ມູນລະດັບນ້ຳຂອງເຊັ່ນກັນ ທີ່ເຮົາອາດຈະດຶງຄ່າສະເລ່ຍມາສະແດງແທນມື້ທີ່ເຊັນເຊີດັບ).
# ຊອກຫາຄ່າສະເລ່ຍຂອງຍອດຂາຍ
mean_sales = df['cups_sold'].mean()
# ເອົາຄ່າສະເລ່ຍໄປຕື່ມໃສ່ຊ່ອງທີ່ວ່າງ
df['cups_sold'] = df['cups_sold'].fillna(mean_sales)
ຂັ້ນຕອນທີ 3: ປັບຮູບແບບຕົວໜັງສືໃຫ້ເປັນມາດຕະຖານດຽວກັນ (Formatting Text)
ການຂຽນຊື່ສາຂາ ຫຼື ແຂວງທີ່ບໍ່ຄືກັນ ຈະເຮັດໃຫ້ Machine Learning ເຂົ້າໃຈຜິດວ່າເປັນຫຼາຍໆສະຖານທີ່. ເຮົາຕ້ອງປ່ຽນທຸກຊື່ໃຫ້ເປັນມາດຕະຖານດຽວກັນ.
# ສ້າງວັດຈະນານຸກົມເພື່ອແປງຄຳສັບໃຫ້ຄືກັນ
province_corrections = {
'Vientiane': 'ນະຄອນຫຼວງວຽງຈັນ',
'VTE': 'ນະຄອນຫຼວງວຽງຈັນ',
'ວຽງຈັນ': 'ນະຄອນຫຼວງວຽງຈັນ'
}
# ໃຊ້ຄຳສັ່ງ replace ເພື່ອປ່ຽນຄ່າໃນຖັນ province
df['province'] = df['province'].replace(province_corrections)
ພຽງເທົ່ານີ້, ບໍ່ວ່າພະນັກງານຈະປ້ອນຂໍ້ມູນມາວ່າ VTE ຫຼື Vientiane, ມັນກໍຈະຖືກລວມເປັນ “ນະຄອນຫຼວງວຽງຈັນ” ທັງໝົດ, ເຮັດໃຫ້ໂມເດລ ML ຄຳນວນຍອດຂາຍຕາມແຂວງໄດ້ຖືກຕ້ອງ.
ສິ່ງສຳຄັນທີ່ຄວນຈື່ (Key Takeaways)
- ໃຊ້ເວລາຫຼາຍແຕ່ຈຳເປັນ: ນັກວິທະຍາສາດຂໍ້ມູນ (Data Scientists) ໃຊ້ເວລາເຖິງ 70-80% ກັບການທຳຄວາມສະອາດຂໍ້ມູນ ກ່ອນທີ່ຈະໄດ້ສ້າງ AI ຕົວຈິງ.
- Missing Data: ການຈະຕັດຖິ້ມ ຫຼື ຕື່ມຄ່າສະເລ່ຍເຂົ້າໄປ ແມ່ນຂຶ້ນກັບສະພາບການຕົວຈິງຂອງທຸລະກິດນັ້ນໆ (Domain Knowledge).
- ອຸປະສັກທາງພາສາ: ການເຮັດ ML ໃນລາວ ສິ່ງທີ່ຕ້ອງລະວັງທີ່ສຸດຄືຄວາມຫຼາກຫຼາຍຂອງການສະກົດຄຳພາສາລາວ ແລະ ການປົນພາສາອັງກິດ (ຄາຣາໂອເກະ). ການກຳນົດ Format ໃຫ້ຊັດເຈນຕັ້ງແຕ່ຕອນເກັບຂໍ້ມູນຈະຊ່ວຍຫຼຸດວຽກໄດ້ຫຼາຍ.
ສະຫຼຸບແລ້ວ, ການກຽມພ້ອມຊຸດຂໍ້ມູນເຖິງຈະເບິ່ງຄືວ່າເປັນວຽກທີ່ຈຸກຈິກ ແລະ ຕ້ອງໄດ້ໃຊ້ເວລາຫຼາຍ, ແຕ່ມັນກໍຄືກັບການລ້າງຜັກໃຫ້ສະອາດກ່ອນລົງມືປຸງແຕ່ງອາຫານ. ຖ້າພວກເຮົາຈັດການກັບບັນຫາຂໍ້ມູນທີ່ຂາດຫາຍ ແລະ ປັບແຕ່ງຮູບແບບການຂຽນພາສາລາວໃຫ້ເປັນມາດຕະຖານດຽວກັນໄດ້ແລ້ວ ໂມເດລ Machine Learning ທີ່ເຮົາຈະສ້າງຂຶ້ນມາກໍຈະມີຄວາມຖືກຕ້ອງ, ແມ່ນຍຳ, ແລະ ສາມາດນຳໄປຊ່ວຍພັດທະນາທຸລະກິດ ຫຼື ສັງຄົມຂອງລາວເຮົາໃຫ້ກ້າວໜ້າໄດ້ຢ່າງແທ້ຈິງ.