paint-brush
ການ​ກວດ​ສອບ​ນອກ​: ສິ່ງ​ທີ່​ທ່ານ​ຈໍາ​ເປັນ​ຕ້ອງ​ຮູ້​ໂດຍ@nataliaogneva
54,619 ການອ່ານ
54,619 ການອ່ານ

ການ​ກວດ​ສອບ​ນອກ​: ສິ່ງ​ທີ່​ທ່ານ​ຈໍາ​ເປັນ​ຕ້ອງ​ຮູ້​

ໂດຍ Natalia Ogneva4m2024/04/23
Read on Terminal Reader
Read this story w/o Javascript

ຍາວເກີນໄປ; ອ່ານ

ນັກວິເຄາະມັກຈະພົບກັບ outliers ໃນຂໍ້ມູນໃນລະຫວ່າງການເຮັດວຽກຂອງເຂົາເຈົ້າ. ການຕັດສິນໃຈປົກກະຕິແລ້ວແມ່ນອີງໃສ່ຄ່າສະເລ່ຍຂອງຕົວຢ່າງ, ເຊິ່ງມີຄວາມອ່ອນໄຫວຫຼາຍຕໍ່ກັບຜູ້ອອກ. ມັນເປັນສິ່ງ ສຳ ຄັນທີ່ສຸດທີ່ຈະຄຸ້ມຄອງຜູ້ອອກນອກເພື່ອຕັດສິນໃຈທີ່ຖືກຕ້ອງ. ໃຫ້ພິຈາລະນາວິທີການທີ່ງ່າຍດາຍແລະໄວຫຼາຍສໍາລັບການເຮັດວຽກທີ່ມີຄ່າທີ່ຜິດປົກກະຕິ.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - ການ​ກວດ​ສອບ​ນອກ​: ສິ່ງ​ທີ່​ທ່ານ​ຈໍາ​ເປັນ​ຕ້ອງ​ຮູ້​
Natalia Ogneva HackerNoon profile picture

ນັກວິເຄາະມັກຈະພົບກັບ outliers ໃນຂໍ້ມູນໃນລະຫວ່າງການເຮັດວຽກຂອງເຂົາເຈົ້າ, ເຊັ່ນ: ໃນລະຫວ່າງການວິເຄາະການທົດສອບ AB, ການສ້າງແບບຈໍາລອງການຄາດເດົາ, ຫຼືການຕິດຕາມແນວໂນ້ມ. ການຕັດສິນໃຈປົກກະຕິແລ້ວແມ່ນອີງໃສ່ສະເລ່ຍຂອງຕົວຢ່າງ, ເຊິ່ງມີຄວາມອ່ອນໄຫວຫຼາຍຕໍ່ກັບ outliers ແລະສາມາດປ່ຽນແປງມູນຄ່າຢ່າງຫຼວງຫຼາຍ. ດັ່ງນັ້ນ, ມັນເປັນສິ່ງ ສຳ ຄັນທີ່ສຸດທີ່ຈະຄຸ້ມຄອງຜູ້ອອກນອກເພື່ອຕັດສິນໃຈທີ່ຖືກຕ້ອງ.


ໃຫ້ພິຈາລະນາວິທີການທີ່ງ່າຍດາຍແລະໄວຫຼາຍສໍາລັບການເຮັດວຽກທີ່ມີຄ່າທີ່ຜິດປົກກະຕິ.

ການສ້າງບັນຫາ

ຈິນຕະນາການວ່າທ່ານຈໍາເປັນຕ້ອງເຮັດການວິເຄາະທົດລອງໂດຍໃຊ້ຄ່າຄໍາສັ່ງສະເລ່ຍເປັນຕົວຊີ້ວັດຕົ້ນຕໍ. ໃຫ້ເວົ້າວ່າ metric ຂອງພວກເຮົາມັກຈະມີການແຈກຢາຍປົກກະຕິ. ນອກຈາກນີ້, ພວກເຮົາຮູ້ວ່າການແຜ່ກະຈາຍ metric ໃນກຸ່ມການທົດສອບແມ່ນແຕກຕ່າງຈາກສິ່ງທີ່ຢູ່ໃນການຄວບຄຸມ. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ສະເລ່ຍຂອງການແຜ່ກະຈາຍໃນການຄວບຄຸມແມ່ນ 10, ແລະໃນການທົດສອບແມ່ນ 12. ມາດຕະຖານ deviation ໃນທັງສອງກຸ່ມແມ່ນ 3.


ຢ່າງໃດກໍຕາມ, ທັງສອງຕົວຢ່າງມີ outliers ທີ່ skew ຫມາຍຄວາມວ່າຕົວຢ່າງແລະ deviation ມາດຕະຖານຕົວຢ່າງ.

 import numpy as np N = 1000 mean_1 = 10 std_1 = 3 mean_2 = 12 std_2 = 3 x1 = np.concatenate((np.random.normal(mean_1, std_1, N), 10 * np.random.random_sample(50) + 20)) x2 = np.concatenate((np.random.normal(mean_2, std_2, N), 4 * np.random.random_sample(50) + 1))

NB ທີ່ພິຈາລະນາ metric ສາມາດມີ outliers ຈາກທັງສອງດ້ານ. ຖ້າ metric ຂອງທ່ານສາມາດມີ outliers ພຽງແຕ່ຈາກຂ້າງຫນຶ່ງ, ວິທີການສາມາດໄດ້ຢ່າງງ່າຍດາຍໄດ້ຮັບການຫັນປ່ຽນສໍາລັບຈຸດປະສົງນັ້ນ.

ຕັດຫາງ

ວິ​ທີ​ທີ່​ງ່າຍ​ທີ່​ສຸດ​ແມ່ນ​ການ​ຕັດ​ການ​ສັງ​ເກດ​ການ​ທັງ​ຫມົດ ​ກ່ອນ​ທີ່​ຈະ 5% ເປີ​ເຊັນ ​ແລະ ​ຫຼັງ​ຈາກ 95​% ເປີ​ເຊັນ ​. ໃນກໍລະນີນີ້, ພວກເຮົາສູນເສຍ 10% ຂອງຂໍ້ມູນເປັນ con. ຢ່າງໃດກໍຕາມ, ການແຜ່ກະຈາຍມີລັກສະນະຫຼາຍ, ແລະຊ່ວງເວລາຕົວຢ່າງແມ່ນຢູ່ໃກ້ກັບຊ່ວງເວລາການແຈກຢາຍ.

 import numpy as np x1_5pct = np.percentile(x1, 5) x1_95pct = np.percentile(x1, 95) x1_cutted = [i for i in x1 if i > x1_5pct and i < x1_95pct] x2_5pct = np.percentile(x2, 5) x2_95pct = np.percentile(x2, 95) x2_cutted = [i for i in x2 if i > x2_5pct and i < x2_95pct]


ອີກວິທີໜຶ່ງແມ່ນການຍົກເວັ້ນການສັງເກດ ນອກຂອບເຂດສະເພາະ . ແຖບຕ່ຳເທົ່າກັບເປີເຊັນ 25% ລົບເຄິ່ງໜຶ່ງຂອງຊ່ວງ interquartile, ແລະແຖບສູງເທົ່າກັບ 75% ເປີເຊັນບວກໜຶ່ງເຄິ່ງ. ທີ່ນີ້, ພວກເຮົາຈະສູນເສຍພຽງແຕ່ 0.7% ຂອງຂໍ້ມູນ. ການແຜ່ກະຈາຍມີລັກສະນະຫຼາຍກ່ວາເບື້ອງຕົ້ນ. ຊ່ວງເວລາຕົວຢ່າງແມ່ນເທົ່າກັບຊ່ວງເວລາທີ່ແຈກຢາຍ.

 import numpy as np low_band_1 = np.percentile(x1, 25) - 1.5 * np.std(x1) high_band_1 = np.percentile(x1, 75) + 1.5 * np.std(x1) x1_cutted = [i for i in x1 if i > low_band_1 and i < high_band_1] low_band_2 = np.percentile(x2, 25) - 1.5 * np.std(x2) high_band_2 = np.percentile(x2, 75) + 1.5 * np.std(x2) x2_cutted = [i for i in x2 if i > low_band_2 and i < high_band_2]

Bootstrap

ວິທີທີສອງທີ່ພວກເຮົາພິຈາລະນາຢູ່ທີ່ນີ້ແມ່ນ bootstrap. ໃນວິທີການນີ້, ຄ່າສະເລ່ຍແມ່ນສ້າງຂຶ້ນຄືກັບຕົວຢ່າງຂອງຕົວຢ່າງຍ່ອຍ. ໃນຕົວຢ່າງຂອງພວກເຮົາ, ຄ່າສະເລ່ຍໃນກຸ່ມຄວບຄຸມເທົ່າກັບ 10.35, ແລະກຸ່ມທົດສອບແມ່ນ 11.78. ມັນຍັງເປັນຜົນໄດ້ຮັບທີ່ດີກວ່າເມື່ອທຽບກັບການປະມວນຜົນຂໍ້ມູນເພີ່ມເຕີມ.

 import pandas as pd def create_bootstrap_samples( sample_list: np.array, sample_size: int, n_samples: int ): # create a list for sample means sample_means = [] # loop n_samples times for i in range(n_samples): # create a bootstrap sample of sample_size with replacement bootstrap_sample = pd.Series(sample_list).sample(n = sample_size, replace = True) # calculate the bootstrap sample mean sample_mean = bootstrap_sample.mean() # add this sample mean to the sample means list sample_means.append(sample_mean) return pd.Series(sample_means) (create_bootstrap_samples(x1, len(x1), 1000).mean(), create_bootstrap_samples(x2, len(x2), 1000).mean())

ສະຫຼຸບ

ການຊອກຄົ້ນຫາແລະການປຸງແຕ່ງ outlier ແມ່ນສໍາຄັນສໍາລັບການຕັດສິນໃຈທີ່ຖືກຕ້ອງ. ໃນປັດຈຸບັນ, ຢ່າງຫນ້ອຍສາມວິທີການທີ່ໄວແລະກົງໄປກົງມາສາມາດຊ່ວຍໃຫ້ທ່ານກວດເບິ່ງຂໍ້ມູນກ່ອນການວິເຄາະ.


ຢ່າງໃດກໍ່ຕາມ, ມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະຕ້ອງຈື່ໄວ້ວ່າ outliers ທີ່ກວດພົບອາດຈະເປັນມູນຄ່າທີ່ຜິດປົກກະຕິແລະເປັນລັກສະນະສໍາລັບຜົນກະທົບໃຫມ່. ແຕ່ມັນເປັນເລື່ອງອື່ນ :)