
วิทยาศาสตร์ข้อมูล: คำจำกัดความและการประยุกต์ใช้งานจริง
วิทยาศาสตร์ข้อมูล เป็นสาขาวิชาที่เกิดขึ้นไม่นานแต่เติบโตอย่างรวดเร็วและมีหลายมิติ ใช้ในหลายแวดวง โดยอาศัยเทคนิคการวิเคราะห์ขั้นสูงและอัลกอริทึมเชิงพยากรณ์เพื่อดึงเอาองค์ความรู้ที่มีความหมายจากข้อมูล มาช่วยตอบคำถามเชิงกลยุทธ์ทางธุรกิจหรือวิทยาศาสตร์ วิทยาศาสตร์ข้อมูลผสานทักษะหลากหลาย ตั้งแต่ทักษะเชิงเทคนิค (การเขียนโปรแกรม พีชคณิตเชิงเส้น สถิติ และการสร้างแบบจำลอง) ไปจนถึงทักษะที่ไม่ใช่เทคนิค (การสื่อสารและถ่ายทอดผลอย่างมีประสิทธิภาพ) นอกจากนี้ ขึ้นอยู่กับอุตสาหกรรมที่นำวิทยาศาสตร์ข้อมูลไปใช้ จำเป็นต้องมีความรู้เฉพาะโดเมนที่แข็งแรงเพื่อให้ตีความข้อมูลและข้อค้นพบได้อย่างถูกต้อง
อัลกอริทึมด้านวิทยาศาสตร์ข้อมูลสามารถประยุกต์ใช้ได้สำเร็จในบริบทที่มีหรือสามารถเก็บข้อมูลได้จำนวนมาก: การเงิน พาณิชย์ การตลาด การบริหารโครงการ ประกันภัย การแพทย์ การศึกษา การผลิต ทรัพยากรบุคคล ภาษาศาสตร์ สังคมวิทยา ฯลฯ แทบทุกอุตสาหกรรมหรือศาสตร์ใด ๆ ล้วนได้ประโยชน์อย่างมากจากการรวบรวม เก็บ วิเคราะห์ และทำแบบจำลองข้อมูลของตน
กรณีการใช้งานวิทยาศาสตร์ข้อมูลคืออะไร?
กรณีการใช้งานวิทยาศาสตร์ข้อมูลคือภารกิจจริงในโลกความเป็นจริงที่ต้องแก้ด้วยข้อมูลที่มีอยู่ ภายใต้กรอบของบริษัทหนึ่ง ๆ จะวิเคราะห์ตัวแปรมากมายด้วยเทคนิควิทยาศาสตร์ข้อมูลในบริบทของอุตสาหกรรมเฉพาะของบริษัท กรณีการใช้งานอาจเป็นปัญหาที่ต้องแก้ ข้อสันนิษฐานที่ต้องตรวจสอบ หรือคำถามที่ต้องการคำตอบ แก่นแท้ของการทำวิทยาศาสตร์ข้อมูลก็คือการแก้โจทย์ใช้จริงเหล่านี้
แม้เนื้อหาของแต่ละกรณีจะต่างกันมาก แต่ก็มีสิ่งร่วมที่ควรคำนึงเสมอ:
- การวางแผนกรณีใช้งานวิทยาศาสตร์ข้อมูล ได้แก่ การกำหนดเป้าหมายและผลลัพธ์ที่คาดหวังให้ชัด เข้าใจขอบเขตงาน ประเมินทรัพยากร จัดเตรียมข้อมูลที่ต้องใช้ ประเมินความเสี่ยง และกำหนด KPI เพื่อวัดความสำเร็จ
- แนวทางที่พบบ่อยในการแก้กรณีใช้งาน ได้แก่ การพยากรณ์ การจัดหมวดหมู่ การตรวจจับแพทเทิร์นและความผิดปกติ ระบบแนะนำ และการรู้จำภาพ
- บางกรณีใช้งานพบข้ามหลายสาขาและใช้แนวทางคล้ายกันได้ เช่น การพยากรณ์การยกเลิกใช้บริการของลูกค้า การแบ่งกลุ่มลูกค้า การตรวจจับการทุจริต ระบบแนะนำ และการปรับราคาให้เหมาะสม
จะแก้โจทย์กรณีศึกษาในวิทยาศาสตร์ข้อมูลอย่างไร?
คำตอบขึ้นอยู่กับแต่ละกรณี ถูกขับเคลื่อนโดยกลยุทธ์ธุรกิจของบริษัท และขึ้นกับแก่นของกรณีศึกษาเอง อย่างไรก็ตาม การวางโรดแมปทั่วไปเพื่อใช้กับทุกกรณีใช้งานอาจช่วยได้:
- ตั้งคำถามให้ถูกต้อง ขั้นตอนแรกสำคัญมาก รวมถึงทบทวนวรรณกรรมที่มีและกรณีศึกษาที่มีอยู่ ทบทวนแนวทางปฏิบัติที่ดีที่สุด ขยายทฤษฎีที่เกี่ยวข้องและสมมติฐานทำงาน และเติมเต็มช่องว่างด้านความเชี่ยวชาญเฉพาะโดเมน สุดท้ายควรได้คำถามที่ชัดเจนสำหรับกรณีศึกษาที่สนใจ
- การรวบรวมข้อมูล ขั้นนี้จะทำรายการและเก็บข้อมูล ในโลกจริงเรามักได้ข้อมูลที่ไม่เป็นตัวแทน ขาดหาย มีข้อบกพร่อง และไม่เป็นโครงสร้าง กล่าวคือห่างไกลจากตารางข้อมูลที่อ่านง่ายและพร้อมวิเคราะห์ จึงต้องค้นหาและระบุแหล่งข้อมูลที่เป็นไปได้ทั้งหมดที่อาจเป็นประโยชน์ ข้อมูลที่ต้องการอาจอยู่ในคลังของบริษัท เก็บจากเว็บ หรือได้มาจากผู้สนับสนุน เป็นต้น
- การทำความสะอาด/จัดระเบียบข้อมูล ส่วนนี้มักกินเวลาและทรัพยากรมากที่สุดของโครงการวิทยาศาสตร์ข้อมูลใด ๆ จะประเมินคุณภาพและความเป็นตัวแทนของข้อมูลที่รวบรวม และทำการสำรวจข้อมูลเบื้องต้น จากนั้นทำความสะอาด เตรียมประมวลผล แปลง จัดการ และแม็ปข้อมูลจากรูปแบบดิบให้อยู่ในรูปที่เหมาะสมกว่า
- การวิเคราะห์และสร้างแบบจำลองข้อมูล จะวิเคราะห์ข้อมูลที่ทำความสะอาดแล้วตามสถานะปัจจุบัน แล้วปรับให้เข้ากับแบบจำลองเชิงพยากรณ์ที่เลือก ประเมินความแม่นยำของแบบจำลอง และหากยังไม่ดีพอ จะลองวิธีสร้างแบบจำลองอื่น ทำซ้ำจนได้แบบจำลองที่ทำนายสถานการณ์อนาคตได้แม่นยำที่สุด กระบวนการนี้เช่นเดียวกับก่อนหน้าล้วนมีลักษณะวนซ้ำ
- การสื่อสารผลลัพธ์ เมื่อเทียบกับขั้นก่อน ๆ ขั้นนี้ต้องใช้ทักษะการสื่อสารและทักษะเชิงอ่อนมากกว่าความเชี่ยวชาญเชิงเทคนิคและการเขียนโปรแกรม ประกอบด้วยการแบ่งปันข้อค้นพบสำคัญและข้อสรุปสุดท้ายกับผู้บริหาร ผู้ถือหุ้น และผู้มีส่วนได้ส่วนเสียอื่น ๆ มักถ่ายทอดอินไซต์เป็นรายงาน บทความ และสไลด์นำเสนอ พร้อมแนวทางเดินหน้าต่อ
กรณีการใช้งานวิทยาศาสตร์ข้อมูลตามอุตสาหกรรม
กรณีการใช้งานวิทยาศาสตร์ข้อมูลเกี่ยวข้องได้แทบทุกอุตสาหกรรมที่มีหรือสามารถสะสมข้อมูลจำนวนมาก บทนี้จะกล่าวถึงกรณีใช้งานที่พบบ่อยในสาขาที่มีความต้องการสูง ได้แก่ โลจิสติกส์ การดูแลสุขภาพ และโทรคมนาคม บางกรณีใช้งานเป็นแบบสหวิทยาการและพบได้ในหลายแวดวง ทำให้มีความเป็นสากลและประยุกต์ใช้ได้กว้าง จึงควรรู้แนวทางโดยรวมในการแก้ นอกจากนี้ สำหรับแต่ละอุตสาหกรรมที่เลือก จะยกหัวข้ออื่น ๆ ที่สามารถทำแบบจำลองด้วยวิธีวิทยาศาสตร์ข้อมูลได้
วิทยาศาสตร์ข้อมูลในด้านสุขภาพ
สามบทก่อนหน้าเราได้กล่าวถึงวิธีที่วิทยาศาสตร์ข้อมูลช่วยให้บริษัทจากอุตสาหกรรมต่าง ๆ เพิ่มรายได้ สำหรับภาคสุขภาพ การใช้และตีความข้อมูลที่มีอย่างถูกต้องไม่เพียงเป็นประโยชน์กับนักการตลาดของภาคส่วนนี้เท่านั้น แต่ยังช่วยวินิจฉัยโรคร้ายได้ทันท่วงที และอาจช่วยชีวิตผู้คนได้ด้วย
การแพทย์และผู้ให้บริการสุขภาพเก็บข้อมูลจำนวนมหาศาลจากหลายแหล่ง: ระบบเวชระเบียนอิเล็กทรอนิกส์ (EHR) ข้อมูลจากอุปกรณ์สวมใส่ งานวิจัยทางการแพทย์ และเอกสารการเรียกเก็บเงิน การใช้ประโยชน์จากเทคนิควิทยาศาสตร์ข้อมูลและการวิเคราะห์ข้อมูลเชิงนวัตกรรมกำลังเปลี่ยนโฉมทั้งอุตสาหกรรมสุขภาพ มอบแนวทางแก้ที่ทรงพลังและมีผลกระทบต่อการพัฒนาในอนาคต โดยเฉพาะบางสาขาเฉพาะทาง เช่น พันธุศาสตร์ เวชศาสตร์การเจริญพันธุ์ มะเร็งวิทยา เทคโนโลยีชีวภาพ รังสีวิทยา การวินิจฉัยเชิงพยากรณ์ และเภสัชกรรม ต่างยกระดับขึ้นอย่างมากจากการปลดล็อกศักยภาพของข้อมูล
เพื่อให้เห็นภาพชัดขึ้นว่าดาต้าไซเอนซ์มีคุณค่าในทางการแพทย์อย่างไร ลองโฟกัสที่หนึ่งในกรณีใช้งานคลาสสิก
กรณีใช้งานในสุขภาพ: การพยากรณ์มะเร็งเต้านม
ตามข้อมูลของ World Cancer Research Fund International มะเร็งเต้านมเป็นมะเร็งที่พบบ่อยที่สุดในสตรี และเป็นชนิดที่พบบ่อยเป็นอันดับสองโดยรวม การวินิจฉัยพยาธิสภาพของเต้านมให้ทันท่วงที ไม่ว่าจะเป็นเนื้องอกธรรมดาหรือร้ายแรง สำคัญยิ่ง เพราะเพิ่มโอกาสการรักษาให้สำเร็จและอัตรารอดชีวิต นี่คือจุดที่วิทยาศาสตร์ข้อมูลเข้ามาช่วย
ความก้าวหน้าของวิธีทำเหมืองข้อมูลควบคู่กับอัลกอริทึมเรียนรู้ของเครื่องทำให้สามารถพยากรณ์ความเสี่ยงของมะเร็งเต้านม ตรวจจับความผิดปกติระยะเริ่มแรก ประเมินพลวัต และวางแผนต่อสู้โรคได้ดีที่สุด โดยแก่นแท้แล้วนี่คือปัญหาการจัดหมวดหมู่ของแมชชีนเลิร์นนิง ข่าวดีก็คือเพราะมะเร็งชนิดนี้พบได้ค่อนข้างมาก จึงมีงานศึกษาละเอียดจำนวนมากทั่วโลก และสะสมข้อมูลจากผู้ป่วยมากมาย
ประเด็นหลักของการใช้ชุดข้อมูลดังกล่าวกับตัวจัดหมวดหมู่คือความไม่สมดุลอย่างรุนแรง ตัวอย่างเช่น เมื่อผลลัพธ์อยู่ในรูป มีมะเร็ง/ไม่มีมะเร็ง ความน่าจะเป็นของการมีพยาธิสภาพ (ระเบียนในคลาสส่วนน้อย) ต่ำกว่าการไม่มีพยาธิสภาพ (ระเบียนในคลาสส่วนใหญ่) อย่างมาก ส่งผลให้อัลกอริทึมโน้มเอียงไปจัดกรณีใหม่เป็นไม่พบพยาธิสภาพ ดังนั้นการประเมินความแม่นยำของแบบจำลองประเภทนี้ให้มีประสิทธิภาพ ควรใช้ค่า F1-score เป็นเมตริก เพราะประเมินกรณีบวกลวง (ความคลาดเคลื่อนชนิดที่ I) และลบลวง (ความคลาดเคลื่อนชนิดที่ II) แทนการนับเฉพาะกรณีที่จัดถูกต้อง
ลองดูชุดข้อมูลจริงเรื่อง มะเร็งเต้านม จากรัฐหนึ่งของสหรัฐฯ คุณลักษณะต่าง ๆ อธิบายไว้ละเอียดในเอกสาร แต่โดยสรุปคือค่าเฉลี่ย ค่าเบี่ยงเบนมาตรฐาน และค่าสูงสุดของแอตทริบิวต์จากแต่ละภาพดิจิทัลที่แสดงนิวเคลียสของเซลล์จากก้อนเนื้อเต้านมของผู้หญิง แต่ละระเบียนในชุดข้อมูลสอดคล้องกับสตรีที่มีเนื้องอกชนิดร้ายหรือไม่ร้าย (กล่าวคือผู้หญิงทั้งหมดในชุดนี้มีเนื้องอกบางชนิด) แอตทริบิวต์รวมถึงรัศมีของเซลล์ เนื้อสัมผัส ความเรียบ ความกะทัดรัด ความเว้า ความสมมาตร ฯลฯ
import pandas as pd
cancer_data = pd.read_csv('data.csv')
pd.options.display.max_columns = len(cancer_data)
print(f'Number of entries: {cancer_data.shape[0]:,}\n'
f'Number of features: {cancer_data.shape[1]:,}\n\n'
f'Number of missing values: {cancer_data.isnull().sum().sum()}\n\n'
f'{cancer_data.head(2)}')
Number of entries: 569
Number of features: 33
Number of missing values: 569
id diagnosis radius_mean texture_mean perimeter_mean area_mean \
0 842302 M 17.99 10.38 122.8 1001.0
1 842517 M 20.57 17.77 132.9 1326.0
smoothness_mean compactness_mean concavity_mean concave points_mean \
0 0.11840 0.27760 0.3001 0.14710
1 0.08474 0.07864 0.0869 0.07017
symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se \
0 0.2419 0.07871 1.0950 0.9053 8.589
1 0.1812 0.05667 0.5435 0.7339 3.398
area_se smoothness_se compactness_se concavity_se concave points_se \
0 153.40 0.006399 0.04904 0.05373 0.01587
1 74.08 0.005225 0.01308 0.01860 0.01340
symmetry_se fractal_dimension_se radius_worst texture_worst \
0 0.03003 0.006193 25.38 17.33
1 0.01389 0.003532 24.99 23.41
perimeter_worst area_worst smoothness_worst compactness_worst \
0 184.6 2019.0 0.1622 0.6656
1 158.8 1956.0 0.1238 0.1866
concavity_worst concave points_worst symmetry_worst \
0 0.7119 0.2654 0.4601
1 0.2416 0.1860 0.2750
fractal_dimension_worst Unnamed: 32
0 0.11890 NaN
1 0.08902 NaN
มาลองลบคอลัมน์สุดท้ายที่มีแต่ค่าว่างกัน:
cancer_data = cancer_data.drop('Unnamed: 32', axis=1)
ผู้หญิงกี่เปอร์เซ็นต์ที่ได้รับการยืนยันว่าเป็นมะเร็ง (เนื้องอกเต้านมชนิดร้าย)?
round(cancer_data['diagnosis'].value_counts()*100/len(cancer_data)).convert_dtypes()
B 63
M 37
Name: diagnosis, dtype: Int64
37% ของผู้ตอบทั้งหมดเป็นมะเร็งเต้านม ดังนั้นชุดข้อมูลจึงค่อนข้างสมดุล
เนื่องจากค่าของตัวแปรการวินิจฉัยเป็นเชิงหมวดหมู่ จึงต้องเข้ารหัสให้เป็นตัวเลขเพื่อใช้กับแมชชีนเลิร์นนิง ก่อนทำเช่นนั้น แยกข้อมูลเป็นตัวแปรทำนายและตัวแปรเป้าหมาย diagnosis ก่อน:
X = cancer_data.iloc[:, 2:32].values
y = cancer_data.iloc[:, 1].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
ต่อไป แบ่งชุด train/test แล้วทำการสเกลคุณลักษณะ:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
เพื่อจำลองข้อมูลของเรา จะใช้อัลกอริทึมเริ่มต้นสองแบบ: k-nearest neighbors (KNN) และลอจิสติกรีเกรสชัน:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
# KNN
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_predictions = knn.predict(X_test)
# Logistic regression
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_predictions = lr.predict(X_test)
ก่อนหน้านี้เห็นว่าชุดข้อมูลค่อนข้างสมดุล จึงใช้เมตริก accuracy score เพื่อระบุแบบจำลองที่แม่นยำที่สุด:
from sklearn.metrics import accuracy_score
print(f'Accuracy scores:\n'
f'KNN model:\t\t {accuracy_score(y_test, knn_predictions):.3f}\n'
f'Logistic regression model: {accuracy_score(y_test, lr_predictions):.3f}')
Accuracy scores:
KNN model: 0.956
Logistic regression model: 0.974
จากข้อมูลของเรา แบบจำลองลอจิสติกรีเกรสชันทำผลงานได้ดีที่สุดในการทำนายเนื้องอกเต้านมชนิดร้าย/ไม่ร้ายสำหรับสตรีที่ตรวจพบพยาธิสภาพใด ๆ
แนวทางต่อไป เนื่องจากอัลกอริทึมลอจิสติกรีเกรสชันไม่มีพารามิเตอร์สำคัญให้ปรับมากนัก อาจลองปรับวิธีแบ่ง train/test และ/หรือทดลองเทคนิคการพยากรณ์แบบอื่น
กรณีใช้งานอื่นที่พบบ่อยในสุขภาพ:
- การติดตามข้อมูลเรียลไทม์จากอุปกรณ์สวมใส่
- การวิเคราะห์เชิงพยากรณ์
- การวิเคราะห์ภาพทางการแพทย์
- การค้นคว้ายา
- วิจัยด้านพันธุศาสตร์
- ผู้ช่วยเสมือน
- การจัดการข้อมูลลูกค้า
วิทยาศาสตร์ข้อมูลในด้านขนส่งและโลจิสติกส์
โลจิสติกส์คือการจัดการกระบวนการส่งมอบสินค้าจากจุดหนึ่งไปยังอีกจุดหนึ่ง ส่วนการขนส่งคือการขนย้ายผู้โดยสารหรือสินค้า ขึ้นอยู่กับลักษณะธุรกิจของบริษัท (เช่น ส่งอาหาร ไปรษณีย์ ขนส่งระหว่างประเทศ สายการบิน บริการแท็กซี่หรือรถบัส) แหล่งข้อมูลอาจเป็นตารางเวลา ไทม์ชีต รายละเอียดเส้นทาง รายการสต็อกคลังสินค้า รายงาน สัญญา เอกสารทางกฎหมาย และข้อเสนอแนะจากลูกค้า ตัวข้อมูลอาจมีโครงสร้างหรือไม่มีก็ได้ และรวมถึงเวลา เส้นทาง พิกัด ข้อมูลลูกค้า รายละเอียดสินค้า ต้นทุนและราคา
ประสิทธิภาพธุรกิจในซัพพลายเชนและภาคขนส่งไม่ได้ตรงไปตรงมาเสมอไป และขึ้นอยู่กับปัจจัยมากมาย: ปัญหาการจราจรที่ไม่คาดคิด คุณภาพเส้นทาง สภาพอากาศ เหตุฉุกเฉิน ความผันผวนของราคาน้ำมัน การขาดแคลนสต็อก ความเสียหายทางเทคนิค ความล่าช้าเกี่ยวกับความปลอดภัย กฎระเบียบและมาตรการคว่ำบาตรของรัฐ ฯลฯ อีกทั้งช่วงไม่กี่ปีมีผู้เล่นรายใหม่เกิดขึ้นมาก ทำให้การแข่งขันรุนแรงยิ่งขึ้น ดังนั้นเพื่อก้าวทันคู่แข่งและเพิ่มผลิตภาพการปฏิบัติงาน บริษัทโลจิสติกส์/ขนส่งจึงจำเป็นต้องวิเคราะห์บิ๊กดาต้าและแปลงเป็นอินไซต์ที่มีความหมาย
วิทยาศาสตร์ข้อมูลช่วยภาคขนส่งและโลจิสติกส์ได้อย่างไรบ้าง ต่อไปนี้คือรายการการประยุกต์ใช้ที่ยังไม่ครบถ้วน:
- ติดตามกระบวนการขนส่งตั้งแต่ต้นทางถึงปลายทาง
- ทำให้ทุกกิจกรรมเป็นอัตโนมัติและโปร่งใส
- ส่งมอบตรงเวลา
- ปรับเส้นทางให้เหมาะสม
- กำหนดราคาแบบไดนามิก
- รักษาระดับสต็อกวัสดุสิ้นเปลือง
- ปกป้องสินค้าที่เน่าเสียง่าย
- เฝ้าระวังสภาพยานพาหนะ
- ปรับปรุงเครือข่ายการผลิต
- ยกระดับบริการลูกค้า
กรณีใช้งานในขนส่งและโลจิสติกส์: ระบุตำแหน่งที่เหมาะสมที่สุดของรถแท็กซี่
Uber Technologies Inc. หรือ Uber เป็นบริษัทอเมริกันที่ให้บริการด้านโลจิสติกส์และขนส่งหลากหลาย กรณีศึกษานี้จะจัดกลุ่มข้อมูล GPS ของการแชร์การเดินทางของ Uber เพื่อระบุตำแหน่งที่เหมาะสมที่สุดของรถแท็กซี่ โดยเฉพาะมีประโยชน์ดังนี้:
- คำขอโดยสารใหม่แต่ละรายการจะถูกจับคู่กับคลัสเตอร์ที่ใกล้ที่สุด แล้ว Uber จะส่งรถที่อยู่ใกล้จากคลัสเตอร์นั้นไปยังตำแหน่งของลูกค้า
- การวิเคราะห์คลัสเตอร์ที่ได้ตามภาระงาน อาจแยกตามชั่วโมงหรือวันในสัปดาห์ ทำให้ Uber กระจายรถล่วงหน้าและส่งไปยังตำแหน่งยุทธศาสตร์ที่มีความต้องการสูง
- ขึ้นอยู่กับอัตราส่วนอุปสงค์/อุปทานในแต่ละคลัสเตอร์ บริษัทสามารถปรับอัตราค่าโดยสารแบบไดนามิก
เราจะใช้ชุดข้อมูลจาก FiveThirtyEight เรื่อง การเดินทางของ Uber ในนิวยอร์กช่วงเมษายน 2014:
import pandas as pd
uber_data = pd.read_csv('uber-raw-data-apr14.csv')
print(f'Number of trips: {uber_data.shape[0]:,}\n\n'
f'{uber_data.head()}')
Number of trips: 564,516
Date/Time Lat Lon Base
0 4/1/2014 0:11:00 40.7690 -73.9549 B02512
1 4/1/2014 0:17:00 40.7267 -74.0345 B02512
2 4/1/2014 0:21:00 40.7316 -73.9873 B02512
3 4/1/2014 0:28:00 40.7588 -73.9776 B02512
4 4/1/2014 0:33:00 40.7594 -73.9722 B02512
มาลองแสดงตำแหน่งรับผู้โดยสารทั้งหมดอย่างคร่าว ๆ โดยให้ลองจิจูดเป็นแกน x และละติจูดเป็นแกน y:
import matplotlib.pyplot as plt
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.show()
เพื่อจัดกลุ่มข้อมูลนี้ จะใช้อัลกอริทึมเรียนรู้ของเครื่องแบบไม่มีผู้สอนที่เรียกว่า k-means แนวคิดคือแบ่งตัวอย่างข้อมูลทั้งหมดออกเป็นหลายกลุ่มที่มีความแปรปรวนเท่ากัน โดยรับจำนวนคลัสเตอร์ n_clusters (ค่าเริ่มต้นคือ 8) และแยกข้อมูลตามนั้น เพื่อหาจำนวนคลัสเตอร์ที่เหมาะสม จะใช้วิธีศอก (elbow method) ซึ่งประกอบด้วย:
- ฝึกหลายโมเดลด้วยจำนวนคลัสเตอร์ต่างกัน และเก็บค่า WCSS (Within Cluster Sum of Squares) ของแต่ละโมเดล ซึ่งคือผลรวมกำลังสองของระยะทางของจุดสังเกตจากเซนทรอยด์ของคลัสเตอร์ที่ใกล้ที่สุด
- พล็อตค่า WCSS เทียบกับจำนวนคลัสเตอร์ที่สอดคล้องกัน
- เลือกจำนวนคลัสเตอร์น้อยที่สุดที่เห็นการลดลงของ WCSS อย่างมีนัยสำคัญ
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, random_state=1)
kmeans.fit(uber_data[['Lat', 'Lon']])
wcss.append(kmeans.inertia_)
plt.figure(figsize=(12, 5))
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method', fontsize=25)
plt.xlabel('Number of clusters', fontsize=18)
plt.ylabel('WCSS', fontsize=18)
plt.xticks(ticks=list(range(1, 11)),
labels=['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'])
plt.show()

กรณีนี้ จำนวนคลัสเตอร์ที่เหมาะสมที่สุดคือ 7 มาลองใช้ค่านี้เพื่อฝึกโมเดลและทำนายหมายเลขคลัสเตอร์สำหรับจุดรับผู้โดยสารแต่ละจุด จากนั้นจะแสดงข้อมูลอีกครั้งโดยเพิ่มตำแหน่งของเซนทรอยด์ทั้งเจ็ด:
kmeans = KMeans(n_clusters=7, random_state=1)
kmeans.fit_predict(df[['Lat', 'Lon']])
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.scatter(kmeans.cluster_centers_[:, 1], kmeans.cluster_centers_[:, 0], s=100, c='lime')
plt.show()
ต่อไปจะดึงพิกัดที่แน่นอนของเซนทรอยด์ทั้งหมดและแสดงแยกต่างหากโดยไม่รวมตัวข้อมูล:
centroids = pd.DataFrame(kmeans.cluster_centers_)
centroids.columns = ['Lat', 'Lon']
print(centroids)
plt.scatter(centroids['Lon'], centroids['Lat'])
plt.show()
Lat Lon
0 40.688588 -73.965694
1 40.765423 -73.973165
2 40.788001 -73.879858
3 40.656997 -73.780035
4 40.731074 -73.998644
5 40.700541 -74.201673
6 40.971229 -73.611288
จะแสดงให้เข้าใจง่ายขึ้นหากวางเซนทรอยด์เหล่านี้บนแผนที่นครนิวยอร์ก:
import folium
centroids_values = centroids.values.tolist()
nyc_map = folium.Map(location=[40.79659011772687, -73.87341741832425], zoom_start=50000)
for point in range(0, len(centroids_values)):
folium.Marker(centroids_values[point], popup=centroids_values[point]).add_to(nyc_map)
nyc_map

ด้วยโมเดลของเรา เราสามารถทำนายคลัสเตอร์ที่ใกล้ที่สุดสำหรับตำแหน่งใด ๆ ในนิวยอร์กที่ระบุด้วยพิกัดภูมิศาสตร์ ในทางปฏิบัติหมายถึง Uber จะส่งแท็กซี่ที่ว่างจากตำแหน่งที่ใกล้ที่สุดและให้บริการลูกค้าได้เร็วขึ้น
ลองหาคลัสเตอร์ที่ใกล้ที่สุดสำหรับ Lincoln Center for the Performing Arts ในเขตแมนฮัตตัน:
lincoln_center = [(40.7725, -73.9835)]
kmeans.predict(lincoln_center)
array([1])
และสำหรับ Howard Beach ในเขตควีนส์:
howard_beach = [(40.6571, -73.8430)]
kmeans.predict(howard_beach)
array([3])
แนวทางต่อไป อาจลองใช้อัลกอริทึมจัดกลุ่มแบบอื่น วิเคราะห์สไลซ์ของข้อมูลที่ต่างกัน (ตามชั่วโมง/วันในสัปดาห์/เดือน) หาโหลดมากสุดและน้อยสุดของแต่ละคลัสเตอร์ หรือศึกษา ความสัมพันธ์ระหว่างคลัสเตอร์ที่พบกับตัวแปร Base ในดาต้าเฟรม
กรณีใช้งานอื่นที่พบบ่อยในขนส่งและโลจิสติกส์:
- การกำหนดราคาระบบไดนามิกเพื่อจับคู่ดีมานด์-ซัพพลาย
- การพยากรณ์ความต้องการ
- การทำงานอัตโนมัติแทนงานมือ
- ยานยนต์ขับเคลื่อนอัตโนมัติ
- การมองเห็นซัพพลายเชน
- การตรวจจับความเสียหาย
- การจัดการคลังสินค้า
- การวิเคราะห์ความรู้สึกลูกค้า
- แชตบอตบริการลูกค้า
วิทยาศาสตร์ข้อมูลในโทรคมนาคม
ในสองสามทศวรรษที่ผ่านมา เทคโนโลยีโทรคมนาคมเติบโตอย่างรวดเร็วและเข้าสู่ระยะใหม่ ทุกวันนี้เราถูกโอบล้อมด้วยอุปกรณ์อิเล็กทรอนิกส์นานาชนิด และหลายคนพึ่งพาอินเทอร์เน็ตอย่างแท้จริง โดยเฉพาะโซเชียลเน็ตเวิร์กและแอปส่งข้อความ บางครั้งการเสพติดอุปกรณ์ถูกวิจารณ์ว่ามาแทนที่การสื่อสารแบบพบหน้า ทว่าเราต้องยอมรับว่าโทรคมนาคมทำให้ชีวิตง่ายขึ้นมาก เปิดโอกาสให้เชื่อมต่อกับผู้คนทั่วโลกภายในไม่กี่วินาที
สิ่งนี้ยิ่งจริงช่วงการแพร่ระบาดของโควิด-19 เมื่อหลายบริษัทและโรงเรียนหันไปทำงาน/เรียนทางไกล ในความเป็นจริงที่เปลี่ยนเร็วเช่นนี้ คุณภาพและความราบรื่นของการเชื่อมต่อดิจิทัลมีความสำคัญอย่างไม่เคยมีมาก่อน ช่วงล็อกดาวน์ทำให้ผู้คนต้องโทรและส่งข้อความหาผู้ร่วมงาน ญาติ และเพื่อน มากกว่าก่อน แนวโน้มใหม่เหล่านี้นำไปสู่ปริมาณการสื่อสารที่เพิ่มขึ้นมหาศาล ซึ่งสร้างข้อมูลจำนวนมหาศาลในอุตสาหกรรมนี้
การใช้วิธีวิทยาศาสตร์ข้อมูลเพื่อต่อยอดจากข้อมูลที่สะสมช่วยอุตสาหกรรมโทรคมนาคมได้หลายทาง:
- ทำให้กระบวนการลื่นไหล
- ปรับเครือข่ายให้เหมาะสม
- กรองสแปม
- ปรับปรุงการรับส่งข้อมูล
- วิเคราะห์แบบเรียลไทม์
- พัฒนากลยุทธ์ธุรกิจที่มีประสิทธิภาพ
- สร้างแคมเปญการตลาดที่ได้ผล
- เพิ่มรายได้
ลองเจาะลึกภารกิจทั่วไปในโทรคมนาคมที่เกี่ยวข้องกับการตรวจจับและกรองข้อความที่ไม่ต้องการ
กรณีใช้งานในโทรคมนาคม: สร้างตัวกรองสแปม
การกรองสแปมเป็นฟังก์ชันสำคัญของช่องทางสื่อสารแบบตัวอักษรสมัยใหม่ เพราะช่วยป้องกันไม่ให้ถูกถล่มด้วยอีเมลรายวันพยายามหลอกเอาเงิน ในทางเทคนิค นี่เป็นอีกตัวอย่างของปัญหาการจัดหมวดหมู่ โดยอาศัยข้อมูลในอดีต ข้อความใหม่แต่ละข้อความจะถูกติดป้ายว่า ham (ข้อความปกติ) แล้วส่งตรงถึงผู้รับ หรือป้ายว่า spam แล้วถูกบล็อกหรือส่งเข้ากล่องสแปม
อัลกอริทึมแมชชีนเลิร์นนิงแบบกำกับที่นิยมสำหรับงานนี้คือตัวจัดหมวดหมู่ Naive Bayes ตั้งอยู่บนทฤษฎีเบส์ โดย "naive" สื่อถึงสมมติฐานว่าคำทุกคำในข้อความเป็นอิสระต่อกัน สมมติฐานนี้ไม่ถูกต้องนักเพราะมองข้ามบริบทและความสัมพันธ์เชิงความหมายของคำ อย่างไรก็ดี ในงานจัดหมวดหมู่ข้อความที่ข้อมูลไม่มาก วิธีนี้มักได้ผลและทำนายได้แม่น
Naive Bayes มีหลายเวอร์ชัน แต่ละแบบมีกรณีใช้งานที่เหมาะสม: multinomial, Bernoulli, Gaussian และ flexible Bayes สำหรับการตรวจจับสแปม เหมาะที่สุดคือ multinomial Naive Bayes ซึ่งอาศัยการนับความถี่แบบไม่ต่อเนื่องของคุณลักษณะเชิงหมวดหมู่หรือค่าต่อเนื่องที่แทนจำนวนคำในแต่ละข้อความ
มาลองใช้ multinomial Naive Bayes กับ ชุดข้อมูล SMS Spam Collection จาก UCI Machine Learning Repository
import pandas as pd
sms_data = pd.read_csv('SMSSpamCollection', sep='\t', header=None, names=['Label', 'SMS'])
print(f'Number of messages: {sms_data.shape[0]:,}\n\n'
f'{sms_data.head()}')
Number of messages: 5,572
Label SMS
0 ham Go until jurong point, crazy.. Available only ...
1 ham Ok lar... Joking wif u oni...
2 spam Free entry in 2 a wkly comp to win FA Cup fina...
3 ham U dun say so early hor... U c already then say...
4 ham Nah I don't think he goes to usf, he lives aro...
มีข้อความที่มนุษย์จัดหมวดหมู่ไว้ 5,572 ข้อความ กี่เปอร์เซ็นต์เป็นสแปม?
round(sms_data['Label'].value_counts()*100/len(sms_data)).convert_dtypes()
ham 87
spam 13
Name: Label, dtype: Int64
13% ของ SMS ถูกระบุด้วยมือว่าเป็นสแปม
เพื่อเตรียมข้อมูลสำหรับ multinomial Naive Bayes ต้องทำขั้นตอนต่อไปนี้ก่อน:
- เข้ารหัสป้ายกำกับจากสตริงเป็นตัวเลข กรณีนี้เป็นไบนารี จึงเข้ารหัสเป็น 0/1
- แยกตัวแปรทำนายและตัวแปรเป้าหมาย
- แบ่งข้อมูลเป็นชุดฝึกและทดสอบ
- แปลงสตริงในคอลัมน์ SMS ของชุดฝึกและทดสอบของตัวทำนายเป็นเมทริกซ์แบบ CSR (compressed sparse row)
ขั้นที่ 4 ต้องอธิบายเพิ่ม จะสร้างออบเจ็กต์เมทริกซ์ ฝังพจนานุกรมคำศัพท์ (คำที่ไม่ซ้ำทั้งหมดจากข้อความในชุดฝึกของตัวทำนายพร้อมความถี่) แล้วแปลงชุดฝึกและทดสอบของตัวทำนายเป็นเมทริกซ์ ผลลัพธ์คือเมทริกซ์สองชุดสำหรับชุดฝึกและชุดทดสอบของตัวทำนาย โดยคอลัมน์สอดคล้องกับแต่ละคำที่ไม่ซ้ำจากข้อความทั้งหมดของชุดฝึก แถวสอดคล้องกับข้อความแต่ละข้อความ และค่าคือจำนวนครั้งที่คำปรากฏในข้อความนั้น
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
# Encoding labels
sms_data = sms_data.replace('ham', 0).replace('spam', 1)
X = sms_data['SMS'].values
y = sms_data['Label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# Vectorizing strings from the 'SMS' column
cv = CountVectorizer(max_df=0.95)
cv.fit(X_train)
X_train_csr_matrix = cv.transform(X_train)
X_test_csr_matrix = cv.transform(X_test)
ถัดไปจะสร้างตัวจัดหมวดหมู่ multinomial Naive Bayes ด้วยพารามิเตอร์เริ่มต้นและตรวจสอบความแม่นยำ:
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, f1_score
clf = MultinomialNB()
clf.fit(X_train_csr_matrix, y_train)
predictions = clf.predict(X_test_csr_matrix)
print(f'Model accuracy:\n'
f'Accuracy score: {accuracy_score(y_test, predictions):.3f}\n'
f'F1-score: {f1_score(y_test, predictions):.3f}\n')
Model accuracy:
Accuracy score: 0.990
F1-score: 0.962
ผลลัพธ์คือเราได้ตัวกรองสแปมที่มีความแม่นยำสูง
แนวทางต่อไป อาจลองวิธีแบ่ง train/test อื่น ๆ เพื่อปรับปรุงกระบวนการเวกเตอร์ไรซ์ด้วยการปรับพารามิเตอร์มากมายของมัน (เช่น ค่าตัดสำหรับคำที่พบบ่อยเกินไปทั้งในสแปมและแฮม) ตรวจสอบกรณีที่พบได้ยากซึ่งตัวจัดหมวดหมู่ทำนายผิดและทำความเข้าใจสาเหตุ นอกจากนี้ยังสามารถแสดงคำที่พบบ่อยในสแปมและแฮมด้วยวิธีอย่าง word cloud (หลังทำความสะอาดข้อมูลและตัดคำหยุดหรือคำที่ให้ข้อมูลต่ำออก) สุดท้ายลองใช้อัลกอริทึมแมชชีน/ดีพลเลิร์นนิงอื่น (SVM ต้นไม้ตัดสินใจ โครงข่ายประสาท) แล้วเปรียบเทียบกับ Naive Bayes
กรณีใช้งานอื่นที่พบบ่อยในโทรคมนาคม:
- การแบ่งกลุ่มลูกค้า
- การพัฒนาผลิตภัณฑ์
- การวิเคราะห์บันทึกรายละเอียดการโทร
- ระบบแนะนำ
- การพยากรณ์การยกเลิกใช้บริการของลูกค้า
- การทำการตลาดแบบเจาะจงเป้าหมาย
- การตรวจจับการทุจริต
- การจัดการและเพิ่มประสิทธิภาพเครือข่าย
- เพิ่มความปลอดภัยของเครือข่าย
- การปรับราคาให้เหมาะสม
- การพยากรณ์มูลค่าตลอดอายุลูกค้า
กรณีศึกษาวิทยาศาสตร์ข้อมูล: คอร์สเรียน
ตลอดมาจนถึงตอนนี้ เราได้สำรวจการประยุกต์ใช้วิทยาศาสตร์ข้อมูลในหลายสาขาอย่างละเอียด หากกำลังอยากเรียนรู้กรณีใช้งานเพิ่มเติมบนชุดข้อมูลจริง และอยากนำความรู้และทักษะทางเทคนิคใหม่ไปแก้ปัญหาเชิงปฏิบัติในสายงานของตน ต่อไปนี้คือคอร์สสั้นระดับเริ่มต้นเกี่ยวกับกรณีศึกษาวิทยาศาสตร์ข้อมูลที่น่าจะเป็นประโยชน์:
- Case Study: School Budgeting with Machine Learning in Python ในคอร์สที่อ้างอิงกรณีศึกษาจากการแข่งขันแมชชีนเลิร์นนิงบน DrivenData นี้ คุณจะได้สำรวจปัญหาเกี่ยวกับงบประมาณเขตการศึกษา และวิธีทำให้โรงเรียนเปรียบเทียบการใช้จ่ายกับที่อื่นได้ง่ายและเร็วขึ้น โดยใช้เทคนิคภาษาธรรมชาติบางส่วน คุณจะเตรียมงบประมาณของโรงเรียนและสร้างโมเดลเพื่อจัดหมวดหมู่รายการโดยอัตโนมัติ เริ่มจากเวอร์ชันง่ายแล้วค่อย ๆ ไปสู่ขั้นสูง นอกจากนี้ยังสามารถดูและวิเคราะห์วิธีของผู้ชนะการแข่งขัน รวมถึงดูผลงานของผู้เข้าร่วมรายอื่น
- Analyzing Marketing Campaigns with pandas Pandas เป็นไลบรารีที่ได้รับความนิยมที่สุดของ Python และการพัฒนาทักษะการใช้เครื่องมือของมันอย่างแข็งแรงเป็นสิ่งจำเป็นสำหรับนักวิทยาศาสตร์ข้อมูล ในคอร์สเชิงปฏิบัติสูงนี้ คุณจะต่อยอดพื้นฐาน Python และ pandas (เพิ่มคอลัมน์ใหม่ ผสาน/ตัดชุดข้อมูล ทำงานกับคอลัมน์วันที่ แสดงผลด้วย matplotlib) โดยใช้ข้อมูลการตลาดสมมติของธุรกิจสมัครสมาชิกออนไลน์ คุณจะฝึกแปลงคำถามการตลาดทั่วไปเป็นค่าที่วัดได้ เช่น "แคมเปญนี้ทำผลงานอย่างไร?" "ทำไมช่องทางหนึ่งถึงทำผลงานต่ำ?" "ช่องทางไหนส่งลูกค้ามากที่สุด?" เป็นต้น
- Analyzing US Census Data in Python ในคอร์สนี้ คุณจะเรียนรู้การนำทาง Decennial Census และ American Community Survey รายปีอย่างง่าย และดึงข้อมูลประชากรและสังคมเศรษฐกิจต่าง ๆ เช่น รายได้ครัวเรือน การเดินทาง เชื้อชาติ และโครงสร้างครอบครัว คุณจะใช้ Python เพื่อเรียกข้อมูลสำหรับภูมิศาสตร์ต่าง ๆ จาก Census API และใช้ไลบรารี pandas จัดการข้อมูลที่เก็บมาเพื่อดึงอินไซต์ที่มีความหมาย นอกจากนี้คุณยังจะฝึกทำแผนที่ด้วยไลบรารี geopandas
- Case Study: Exploratory Data Analysis in R คอร์สสั้นนี้เหมาะหากมีพื้นฐานการจัดการและการแสดงผลข้อมูลใน R อยู่แล้ว เรียนคอร์สนี้คุณจะลองใช้ทักษะกับชุดข้อมูลจริงเพื่อสำรวจข้อมูลการลงมติของสมัชชาใหญ่แห่งสหประชาชาติในอดีต โดยเฉพาะจะวิเคราะห์แนวโน้มการลงมติระหว่างประเทศ ตามช่วงเวลา และประเด็นระหว่างประเทศ กรณีศึกษานี้จะทำให้คุณได้ทำ EDA ตั้งแต่ต้นจนจบ ฝึกใช้แพ็คเกจ dplyr และ ggplot2 มากขึ้น และเรียนรู้ทักษะใหม่
- Human Resources Analytics: Exploring Employee Data in R R เป็นที่รู้จักว่าถูกปรับให้เหมาะกับการวิเคราะห์เชิงสถิติมากกว่า Python ในคอร์สนี้ คุณจะใช้ข้อได้เปรียบของ R เพื่อจัดการ แสดงผล และทดสอบสถิติกับชุดกรณีศึกษาด้าน HR เทคนิควิทยาศาสตร์ข้อมูลเพิ่งปรากฏในภาคทรัพยากรบุคคลไม่นาน แต่ปัจจุบันมีแนวโน้มที่ดีเพราะหลายบริษัทพึ่งพาฝ่าย HR มากขึ้นในการให้ข้อมูลเชิงลึกและข้อแนะนำที่นำไปใช้ได้จริงจากฐานข้อมูลพนักงาน
- Data-Driven Decision Making in SQL ในคอร์สนี้ คุณจะได้เรียนรู้การใช้ SQL สนับสนุนการตัดสินใจและรายงานผลต่อผู้บริหาร กรณีศึกษามุ่งไปที่บริษัทให้เช่าหนังออนไลน์ที่มีฐานข้อมูลลูกค้า เรตติ้งภาพยนตร์ ข้อมูลพื้นหลังนักแสดง ฯลฯ งานบางส่วนคือใช้คิวรี SQL เพื่อศึกษาความชอบของลูกค้า การมีส่วนร่วม และการพัฒนาการขาย คุณจะได้เรียนรู้ส่วนขยาย SQL สำหรับการประมวลผลเชิงวิเคราะห์ออนไลน์ที่ช่วยดึงอินไซต์สำคัญจากข้อมูลหลายมิติที่ซับซ้อน
ไม่ว่าจะต้องการเป็นผู้เชี่ยวชาญระดับสูงด้านวิทยาศาสตร์ข้อมูล หรือเพียงต้องการเรียนทักษะการโค้ดที่เป็นประโยชน์เพื่อดึงอินไซต์ที่ขับเคลื่อนด้วยข้อมูลในสาขาของตน ทรัพยากรข้างต้นเป็นจุดเริ่มต้นที่ดี
บทสรุป
สรุปแล้ว บทความนี้ได้สำรวจว่าวิทยาศาสตร์ข้อมูลคืออะไรในหลายมุมมอง แตกต่างจากการวิเคราะห์ข้อมูลอย่างไร ใช้ได้ในสาขาใดบ้าง กรณีการใช้งานคืออะไร และโรดแมปทั่วไปเพื่อแก้ไขให้สำเร็จ กล่าวถึงอย่างเจาะจงว่าวิทยาศาสตร์ข้อมูลมีประโยชน์ต่อภารกิจจริงในบางอุตสาหกรรมที่มีความต้องการสูงอย่างไร ขณะร่ายยาวถึงการประยุกต์ใช้ที่มีอยู่และที่เป็นไปได้ เรามุ่งเน้นกรณีใช้งานที่พบบ่อยที่สุดในแต่ละสาขายอดนิยม และสาธิตวิธีแก้ด้วยอัลกอริทึมด้านวิทยาศาสตร์และการวิเคราะห์ข้อมูล หากต้องการเรียนรู้กรณีใช้งานในอุตสาหกรรมอื่น โปรดชมบทความของเราเรื่อง แบงก์กิ้ง การตลาด และ การขาย ท้ายที่สุด เรายังได้ทบทวนคอร์สออนไลน์ที่เป็นประโยชน์หลายคอร์สสำหรับเจาะลึกกรณีศึกษาอื่น ๆ ในวิทยาศาสตร์ข้อมูล
ข้อสังเกตสุดท้ายที่น่าสนใจ: ไม่มีภาคส่วนใดที่เราพิจารณาในงานนี้ที่เป็นเรื่องใหม่ทั้งหมด บางภาคส่วนเช่นการแพทย์และการขายมีมานานเป็นศตวรรษ ตลอดประวัติศาสตร์ของพวกเขา นานก่อนยุคดิจิทัลทั่วโลก ข้อมูลจากอุตสาหกรรมเหล่านี้ก็ถูกเก็บในรูปแบบต่าง ๆ เขียนไว้ในหนังสือและเอกสาร เก็บในคลังและห้องสมุด สิ่งที่เปลี่ยนแปลงอย่างมากในไม่กี่ปีที่ผ่านมาพร้อมเทคโนโลยีใหม่คือความเข้าใจอย่างพื้นฐานถึงศักยภาพมหาศาลที่ซ่อนอยู่ในข้อมูลทุกชนิด และความสำคัญยิ่งของการบันทึก รวบรวม และเก็บรักษามันอย่างเหมาะสม การทุ่มเทความพยายามและพัฒนาระบบจัดการข้อมูลอย่างต่อเนื่องทำให้สามารถสะสมบิ๊กดาต้าในทุกอุตสาหกรรมเพื่อการวิเคราะห์และการพยากรณ์ต่อไป


