
Khoa học Dữ liệu: Định nghĩa và Ứng dụng Thực tiễn
Khoa học dữ liệu là một lĩnh vực tương đối mới nhưng phát triển nhanh và đa ngành, được sử dụng trong nhiều lĩnh vực. Nó sử dụng nhiều kỹ thuật phân tích nâng cao và thuật toán mô hình dự đoán để trích xuất các insight có ý nghĩa từ dữ liệu nhằm hỗ trợ trả lời các câu hỏi chiến lược của doanh nghiệp hoặc khoa học. Khoa học dữ liệu kết hợp nhiều kỹ năng, từ kỹ thuật (lập trình, đại số tuyến tính, thống kê và mô hình hóa) đến phi kỹ thuật (trình bày và truyền đạt kết quả hiệu quả). Ngoài ra, tùy theo ngành áp dụng khoa học dữ liệu, cần có kiến thức chuyên môn vững để diễn giải đúng thông tin sẵn có và các insight thu được.
Các thuật toán khoa học dữ liệu có thể được áp dụng thành công trong nhiều bối cảnh nơi dữ liệu lớn đang hoặc có thể được thu thập: tài chính, thương mại, marketing, quản lý dự án, bảo hiểm, y học, giáo dục, sản xuất, nhân sự, ngôn ngữ học, xã hội học, v.v. Thực tế, bất kỳ ngành hay lĩnh vực khoa học nào cũng có thể hưởng lợi đáng kể từ việc thu thập, tổng hợp, phân tích và mô hình hóa dữ liệu của mình.
Trường hợp sử dụng Khoa học Dữ liệu là gì?
Một trường hợp sử dụng khoa học dữ liệu là một nhiệm vụ cụ thể trong thế giới thực cần được giải quyết bằng dữ liệu sẵn có. Trong khuôn khổ của một công ty, nhiều biến số được phân tích bằng các kỹ thuật khoa học dữ liệu trong bối cảnh ngành nghề của công ty đó. Trường hợp sử dụng khoa học dữ liệu có thể là một vấn đề cần giải quyết, một giả thuyết cần kiểm chứng hoặc một câu hỏi cần trả lời. Về bản chất, thực hành khoa học dữ liệu nghĩa là giải quyết các trường hợp sử dụng trong đời thực.
Mặc dù nội dung mỗi trường hợp sử dụng có thể rất khác nhau, luôn có một số điểm chung cần lưu ý:
- Lập kế hoạch trường hợp sử dụng khoa học dữ liệu gồm: xác định mục tiêu rõ ràng và kết quả kỳ vọng, hiểu phạm vi công việc, đánh giá nguồn lực sẵn có, cung cấp dữ liệu cần thiết, đánh giá rủi ro và xác định KPI làm thước đo thành công.
- Các cách tiếp cận phổ biến nhất để giải quyết trường hợp sử dụng khoa học dữ liệu gồm: dự báo, phân loại, phát hiện mẫu và bất thường, gợi ý, và nhận diện hình ảnh.
- Một số trường hợp sử dụng là các tác vụ điển hình xuyên ngành và bạn có thể dựa vào các cách tiếp cận tương tự để giải quyết, như dự đoán tỷ lệ rời bỏ khách hàng, phân khúc khách hàng, phát hiện gian lận, hệ thống gợi ý và tối ưu hóa giá.
Tôi giải một nghiên cứu tình huống Khoa học Dữ liệu như thế nào?
Câu trả lời rất phụ thuộc từng trường hợp, được dẫn dắt bởi chiến lược kinh doanh của công ty và cốt lõi của nghiên cứu tình huống. Tuy nhiên, một lộ trình tổng quát sau đây có thể hữu ích cho bất kỳ trường hợp sử dụng khoa học dữ liệu nào:
- Đặt đúng câu hỏi. Bước đầu tiên này rất quan trọng và bao gồm rà soát tài liệu và nghiên cứu tình huống hiện có, xem lại thực tiễn tốt nhất, xây dựng các lý thuyết liên quan và giả thuyết làm việc, cũng như lấp đầy các khoảng trống tiềm ẩn về chuyên môn lĩnh vực. Kết quả là cần đưa ra một câu hỏi rõ ràng để trả lời trong nghiên cứu tình huống quan tâm.
- Thu thập dữ liệu. Ở bước này, chúng ta kiểm kê và thu gom dữ liệu. Trong thực tế, dữ liệu thường không đại diện, không đầy đủ, có lỗi và phi cấu trúc, tức là cách xa một bảng thông tin hoàn chỉnh, dễ đọc và sẵn sàng phân tích. Do đó, chúng ta phải tìm kiếm và xác định tất cả các nguồn dữ liệu có thể hữu ích cho chủ đề. Dữ liệu cần thiết có thể tìm thấy trong kho lưu trữ của công ty, thu thập từ web, hoặc nhận từ nhà tài trợ, v.v.
- Làm sạch/chế biến dữ liệu. Đây thường là phần tốn thời gian và nguồn lực nhất của bất kỳ dự án khoa học dữ liệu nào. Chất lượng và tính đại diện của dữ liệu thu thập được được ước lượng và tiến hành khám phá dữ liệu ban đầu. Dữ liệu được làm sạch, tiền xử lý, biến đổi, thao tác và ánh xạ từ dạng thô sang định dạng phù hợp hơn.
- Phân tích và mô hình hóa dữ liệu. Dữ liệu đã làm sạch được phân tích theo trạng thái hiện tại, sau đó đưa vào mô hình thống kê dự đoán đã chọn. Độ chính xác của mô hình được đánh giá và nếu chưa đạt yêu cầu, thử các cách mô hình khác. Quá trình này lặp lại cho đến khi có mô hình dự đoán kịch bản tương lai với độ chính xác cao nhất. Do đó, quy trình này, cũng như các bước trước, có thể khá lặp.
- Truyền đạt kết quả. So với các bước trước, bước này đòi hỏi nhiều kỹ năng giao tiếp và mềm hơn là lập trình và kỹ thuật. Bao gồm chia sẻ những phát hiện quan trọng và kết luận cuối cùng với ban lãnh đạo, cổ đông và các bên liên quan khác. Insight thường được trình bày dưới dạng báo cáo, bài viết và slide thuyết trình, đề xuất các hướng đi tiếp theo.
Các Trường hợp Sử dụng Khoa học Dữ liệu theo Ngành
Các trường hợp sử dụng khoa học dữ liệu có thể liên quan tới hầu như bất kỳ ngành nào nơi dữ liệu lớn đang hoặc có thể được tích lũy. Trong chương này, chúng ta sẽ thảo luận một số trường hợp điển hình từ các lĩnh vực có nhu cầu cao nhất: logistics, chăm sóc sức khỏe và viễn thông. Một số trường hợp sẽ mang tính liên ngành và dễ dàng bắt gặp ở nhiều lĩnh vực khác. Điều này khiến chúng mang tính phổ quát và dễ áp dụng hơn, do đó đáng để nắm cách tiếp cận tổng thể để giải quyết. Ngoài ra, với mỗi ngành được chọn, chúng ta sẽ nêu ra một số chủ đề khác có thể mô hình hóa bằng các phương pháp khoa học dữ liệu.
Khoa học Dữ liệu trong Chăm sóc Sức khỏe
Trong ba chương trước, chúng ta đã bàn về cách các phương pháp khoa học dữ liệu có thể giúp các công ty ở các ngành khác nhau tăng doanh thu. Khi nói đến y tế, việc sử dụng và diễn giải đúng dữ liệu sẵn có không chỉ có lợi cho các nhà tiếp thị của lĩnh vực này, mà còn hỗ trợ chẩn đoán kịp thời các bệnh nghiêm trọng và thậm chí cứu sống con người.
Y học và các nhà cung cấp dịch vụ chăm sóc sức khỏe thu thập một lượng dữ liệu khổng lồ từ nhiều nguồn: hệ thống hồ sơ sức khỏe điện tử (EHR), dữ liệu từ thiết bị đeo, các nghiên cứu y học và chứng từ thanh toán. Tận dụng các kỹ thuật khoa học dữ liệu và phân tích dữ liệu đổi mới đang dần cách mạng hóa toàn bộ ngành chăm sóc sức khỏe, mang đến các giải pháp đầy hứa hẹn và tác động lớn cho sự phát triển trong tương lai. Đặc biệt, một số lĩnh vực chuyên sâu như di truyền học, y học sinh sản, ung bướu, công nghệ sinh học, chẩn đoán hình ảnh, chẩn đoán dự báo và dược phẩm đã lên một tầm cao mới nhờ khai mở trọn vẹn tiềm năng dữ liệu của họ.
Để hiểu rõ hơn về giá trị của khoa học dữ liệu trong y học, hãy tập trung vào một trong những trường hợp kinh điển.
Trường hợp sử dụng trong chăm sóc sức khỏe: Dự đoán ung thư vú
Theo Quỹ Nghiên cứu Ung thư Thế giới, ung thư vú là loại ung thư phổ biến nhất ở phụ nữ và đứng thứ hai nói chung. Chẩn đoán kịp thời bệnh lý vú, dù là lành tính hay ác tính, cực kỳ quan trọng vì làm tăng đáng kể cơ hội điều trị thành công và tỷ lệ sống sót. Đây là lúc khoa học dữ liệu phát huy tác dụng.
Sự tiến bộ của các phương pháp khai phá dữ liệu kết hợp với thuật toán học máy giúp dự đoán nguy cơ ung thư vú, phát hiện bất kỳ bất thường tiềm ẩn nào ở giai đoạn sớm, ước lượng diễn tiến của nó, từ đó xây dựng kế hoạch tối ưu để chống lại bệnh. Về bản chất, đây là một bài toán phân loại điển hình của học máy. Tin tốt là vì loại ung thư này khá phổ biến ở mọi nơi, đã có rất nhiều nghiên cứu kỹ lưỡng được tiến hành trên khắp thế giới và do đó tích lũy lượng dữ liệu khổng lồ từ bệnh nhân toàn cầu.
Vấn đề chính khi dùng các bộ dữ liệu như vậy cho bộ phân loại là chúng có thể bị mất cân bằng mạnh. Ví dụ, khi đầu ra ở dạng có ung thư / không ung thư, xác suất có bệnh lý (những bản ghi thuộc lớp thiểu số) thấp hơn đáng kể so với xác suất không có bệnh lý (bản ghi thuộc lớp đa số). Kết quả là thuật toán có xu hướng phân loại các trường hợp mới là không bệnh lý. Do đó, để đánh giá độ chính xác của các mô hình như vậy hiệu quả hơn, hợp lý khi áp dụng F1-score làm thước đo đánh giá, vì nó ước lượng dương tính giả (lỗi loại I) và âm tính giả (lỗi loại II) thay vì chỉ các trường hợp mô hình phân loại đúng.
Hãy xem một bộ dữ liệu thực tế về Ung thư Vú từ một bang của Mỹ. Các đặc trưng được mô tả chi tiết trong tài liệu, tóm lược là giá trị trung bình, sai số chuẩn và giá trị lớn nhất của các thuộc tính từ mỗi ảnh số hóa hiển thị nhân tế bào từ khối u vú của một phụ nữ. Mỗi bản ghi tương ứng với một phụ nữ có khối u ác tính hoặc lành tính (tức là tất cả phụ nữ đều có một dạng khối u). Các thuộc tính gồm bán kính tế bào, kết cấu, độ mịn, độ đặc, độ lõm, tính đối xứng, v.v.
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
Hãy loại cột cuối chỉ chứa giá trị khuyết:
cancer_data = cancer_data.drop('Unnamed: 32', axis=1)
Có bao nhiêu phụ nữ, tính theo %, được xác nhận ung thư (khối u vú ác tính)?
round(cancer_data['diagnosis'].value_counts()*100/len(cancer_data)).convert_dtypes()
B 63
M 37
Name: diagnosis, dtype: Int64
37% số người tham gia bị ung thư vú, vì vậy bộ dữ liệu thực ra khá cân bằng.
Vì giá trị của biến diagnosis là phân loại, chúng ta phải mã hóa thành dạng số để dùng cho học máy. Trước khi làm vậy, hãy tách dữ liệu thành các đặc trưng dự báo và biến mục tiêu 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)
Giờ hãy tạo tập train và test rồi chuẩn hóa các đặc trưng:
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)
Để mô hình hóa dữ liệu, hãy áp dụng các thuật toán với tham số mặc định: k-láng giềng gần nhất (KNN) và hồi quy logistic:
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)
Chúng ta đã thấy bộ dữ liệu khá cân bằng, vì vậy có thể dùng thước đo accuracy để nhận diện mô hình chính xác nhất:
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
Dựa trên dữ liệu, mô hình hồi quy logistic cho hiệu năng tốt nhất khi dự đoán khối u vú ác tính/lành tính cho phụ nữ có phát hiện bệnh lý vú thuộc bất kỳ dạng nào.
Hướng đi tiếp theo tiềm năng: vì thuật toán hồi quy logistic không có tham số quan trọng cần tinh chỉnh, ta có thể thử các cách chia train/test khác nhau và/hoặc các kỹ thuật mô hình dự đoán khác.
Các trường hợp sử dụng phổ biến khác trong chăm sóc sức khỏe:
- giám sát dữ liệu thời gian thực từ thiết bị đeo
- phân tích dự đoán
- phân tích ảnh y khoa
- phát hiện thuốc
- nghiên cứu di truyền
- trợ lý ảo
- quản lý dữ liệu khách hàng
Khoa học Dữ liệu trong Vận tải và Logistics
Logistics là việc tổ chức quá trình giao sản phẩm từ điểm này đến điểm khác, còn vận tải là hành động chở khách hoặc hàng hóa. Tùy theo lĩnh vực hoạt động của công ty (ví dụ: giao bữa trưa, dịch vụ bưu chính, vận chuyển quốc tế, hãng hàng không, dịch vụ taxi hoặc xe buýt), nguồn dữ liệu có thể là lịch trình, bảng chấm công, chi tiết lộ trình, kiểm kê kho, báo cáo, hợp đồng, giấy tờ pháp lý và phản hồi khách hàng. Dữ liệu có thể có cấu trúc hoặc phi cấu trúc, bao gồm thông tin về thời gian, hành trình, tuyến đường, tọa độ, dữ liệu khách hàng, chi tiết hàng hóa, chi phí và giá cả.
Hiệu quả kinh doanh trong chuỗi cung ứng và vận tải không phải lúc nào cũng hiển nhiên và phụ thuộc vào nhiều yếu tố: sự cố giao thông bất ngờ, chất lượng tuyến đường, điều kiện thời tiết, tình huống khẩn cấp, biến động giá nhiên liệu, thiếu hụt hàng tồn kho, hỏng hóc kỹ thuật, chậm trễ liên quan đến an ninh, quy định và lệnh trừng phạt của chính phủ, và nhiều yếu tố khác. Bên cạnh đó, những năm gần đây xuất hiện nhiều công ty mới, khiến cạnh tranh trong ngành này trở nên gay gắt. Do đó, để theo kịp đối thủ và nâng cao năng suất vận hành, mỗi công ty logistics/vận tải cần phân tích dữ liệu lớn và chuyển hóa thành insight có ý nghĩa.
Cụ thể khoa học dữ liệu có thể giúp gì cho vận tải và logistics? Dưới đây là một danh sách chưa đầy đủ các ứng dụng tiềm năng:
- theo dõi toàn bộ quy trình vận chuyển từ đầu đến cuối,
- tự động hóa hoàn toàn và minh bạch hóa mọi hoạt động,
- giao hàng đúng hạn,
- tối ưu hóa tuyến đường,
- điều chỉnh giá động,
- duy trì tồn kho vật tư,
- bảo vệ hàng dễ hư hỏng,
- giám sát tình trạng phương tiện,
- cải thiện mạng lưới sản xuất,
- nâng cao dịch vụ khách hàng.
Trường hợp sử dụng trong vận tải và logistics: Xác định vị trí tối ưu của xe taxi
Uber Technologies Inc., hay Uber, là một công ty Mỹ cung cấp các dịch vụ logistics và vận tải khác nhau. Trong nghiên cứu tình huống này, chúng ta sẽ phân cụm dữ liệu GPS đi chung xe của Uber để xác định vị trí tối ưu của xe taxi. Cụ thể, điều này hữu ích cho các mục đích sau:
- Mỗi yêu cầu chuyến đi mới được gán vào cụm gần nhất, do đó Uber sẽ điều xe gần nhất từ cụm đó đến vị trí của khách.
- Phân tích các cụm theo góc độ khối lượng công việc, tùy chọn theo giờ hoặc theo ngày trong tuần, Uber có thể phân bổ lại xe trước và điều đến các vị trí chiến lược có nhu cầu cao hơn.
- Tùy theo tỷ lệ cung/cầu ở các cụm khác nhau, công ty có thể điều chỉnh biểu giá động.
Chúng ta sẽ dùng bộ dữ liệu từ FiveThirtyEight về các chuyến Uber ở New York tháng 4/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
Hãy trực quan hóa sơ bộ tất cả các điểm đón, lưu ý kinh độ ứng với trục x và vĩ độ ứng với trục y:
import matplotlib.pyplot as plt
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.show()
Để phân cụm dữ liệu này, chúng ta dùng thuật toán học máy không giám sát có tên k-means. Ý tưởng là chia tất cả mẫu dữ liệu thành vài nhóm có phương sai tương đương. Về cơ bản, thuật toán nhận vào số cụm n_clusters (mặc định 8) và tách dữ liệu tương ứng. Để tìm số cụm tối ưu, dùng phương pháp khuỷu tay. Bao gồm các bước:
- Huấn luyện nhiều mô hình với số cụm khác nhau và thu thập giá trị WCSS (Within Cluster Sum of Squares) cho từng mô hình, tức tổng bình phương khoảng cách của các quan sát đến trọng tâm cụm gần nhất.
- Vẽ đồ thị WCSS theo số cụm tương ứng.
- Chọn số cụm nhỏ nhất tại đó WCSS giảm đáng kể.
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()

Trong trường hợp này, số cụm phù hợp nhất có vẻ là 7. Hãy dùng giá trị này để khớp mô hình và dự đoán số cụm cho mỗi điểm đón. Đồng thời, minh họa dữ liệu lần nữa, lần này thêm vị trí bảy trọng tâm cụm:
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()
Giờ hãy trích xuất tọa độ chính xác cho tất cả trọng tâm và hiển thị riêng, không kèm dữ liệu:
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
Sẽ trực quan hơn nếu hiển thị các trọng tâm này trên bản đồ Thành phố New York:
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

Dùng mô hình này, chúng ta có thể dự đoán cụm gần nhất cho bất kỳ vị trí nào ở New York biểu diễn bằng tọa độ địa lý. Về mặt thực tế, điều đó có nghĩa Uber sẽ điều một xe sẵn có từ vị trí gần nhất và phục vụ khách hàng nhanh hơn.
Hãy tìm cụm gần nhất cho Trung tâm Lincoln for the Performing Arts tại quận Manhattan:
lincoln_center = [(40.7725, -73.9835)]
kmeans.predict(lincoln_center)
array([1])
Và cho Howard Beach tại quận Queens:
howard_beach = [(40.6571, -73.8430)]
kmeans.predict(howard_beach)
array([3])
Hướng đi tiếp: cân nhắc áp dụng các thuật toán phân cụm khác, phân tích các lát cắt dữ liệu khác nhau (theo giờ/ngày trong tuần/tháng), tìm các cụm tải nhiều và ít nhất, hoặc tìm mối liên hệ giữa các cụm và biến Base trong dataframe.
Các trường hợp sử dụng phổ biến khác trong vận tải và logistics:
- ghép giá động theo cung-cầu
- dự báo nhu cầu
- tự động hóa thao tác thủ công
- xe tự lái
- tăng khả năng quan sát chuỗi cung ứng
- phát hiện hư hại
- quản lý kho
- phân tích cảm xúc khách hàng
- chatbot dịch vụ khách hàng
Khoa học Dữ liệu trong Viễn thông
Trong vài thập kỷ qua, công nghệ viễn thông đã phát triển với tốc độ đáng kinh ngạc và bước vào giai đoạn mới. Ngày nay, chúng ta được bao quanh bởi đủ loại thiết bị điện tử, và nhiều người gần như phụ thuộc vào Internet, đặc biệt là mạng xã hội và trình nhắn tin. Đôi khi sự lệ thuộc này bị chỉ trích vì thay thế giao tiếp trực tiếp. Tuy nhiên, phải thừa nhận viễn thông đã giúp cuộc sống đơn giản hơn đáng kể, cho phép kết nối với mọi người trên khắp thế giới chỉ trong vài giây.
Điều này càng đúng trong giai đoạn đại dịch COVID-19 khi nhiều công ty và trường học áp dụng mô hình làm việc hoặc học tập từ xa. Trong bối cảnh thay đổi nhanh như vậy, chất lượng và độ mượt của kết nối số trở nên quan trọng chưa từng có ở mọi lĩnh vực. Thời kỳ phong tỏa khiến mọi người phải gọi điện và nhắn tin cho đồng nghiệp, người thân và bạn bè thường xuyên hơn trước. Tất cả xu hướng này dẫn đến sự bùng nổ khối lượng viễn thông, kéo theo lượng dữ liệu khổng lồ được tạo ra trong ngành.
Áp dụng các phương pháp khoa học dữ liệu để xử lý dữ liệu tích lũy có thể giúp ngành viễn thông theo nhiều cách:
- tinh gọn vận hành,
- tối ưu hóa mạng,
- lọc thư rác,
- cải thiện truyền dữ liệu,
- phân tích theo thời gian thực,
- xây dựng chiến lược kinh doanh hiệu quả,
- tạo chiến dịch marketing thành công,
- tăng doanh thu.
Hãy khám phá chi tiết hơn một tác vụ thường gặp trong viễn thông, liên quan đến phát hiện và lọc tin nhắn không mong muốn.
Trường hợp sử dụng trong viễn thông: Xây dựng bộ lọc spam
Lọc spam là chức năng thiết yếu của mọi kênh giao tiếp bằng văn bản hiện đại, vì nó bảo vệ chúng ta khỏi bị dội bom email hằng ngày nhằm lừa tiền. Về kỹ thuật, đây lại là một ví dụ của bài toán phân loại: dựa trên dữ liệu lịch sử, mỗi tin nhắn mới được gán nhãn ham (tức tin thường) và đi thẳng đến người nhận, hoặc spam và bị chặn hoặc đưa vào thư mục spam.
Một thuật toán học máy có giám sát phổ biến cho mục đích này là bộ phân loại Naive Bayes. Nó dựa trên định lý cùng tên trong xác suất, còn "naive" ám chỉ giả định nền tảng rằng tất cả từ trong mỗi tin nhắn là độc lập lẫn nhau. Giả định này không hoàn toàn đúng vì bỏ qua sự tồn tại tất yếu của ngữ cảnh và biểu diễn từ tự nhiên. Tuy vậy, trong đa số tác vụ phân loại văn bản dữ liệu ít, cách tiếp cận này hoạt động tốt và dự đoán chính xác.
Có vài biến thể của bộ phân loại Naive Bayes, mỗi loại có trường hợp áp dụng riêng: multinomial, Bernoulli, Gaussian và flexible Bayes. Loại phù hợp nhất cho bài toán của chúng ta (phát hiện spam) là Naive Bayes đa thức. Nó dựa trên số đếm tần suất rời rạc của các đặc trưng dạng phân loại hoặc liên tục đại diện cho số lần xuất hiện từ trong mỗi tin nhắn.
Hãy áp dụng Naive Bayes đa thức để lọc spam cho SMS Spam Collection Data Set từ 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...
Có 5.572 tin nhắn do con người gán nhãn. Bao nhiêu trong số đó (theo %) là spam?
round(sms_data['Label'].value_counts()*100/len(sms_data)).convert_dtypes()
ham 87
spam 13
Name: Label, dtype: Int64
13% SMS được xác định thủ công là spam.
Để chuẩn bị dữ liệu cho Naive Bayes đa thức, trước hết cần thực hiện các bước sau:
- Mã hóa nhãn từ chuỗi sang số. Trong trường hợp này nhãn là nhị phân, do đó mã hóa thành 0/1.
- Trích xuất biến dự báo và biến mục tiêu.
- Chia dữ liệu thành tập train và test
- Vector hóa chuỗi trong cột SMS của tập train và test dự báo để thu được ma trận CSR (compressed sparse row).
Bước thứ 4 cần giải thích chi tiết hơn. Ở đây ta tạo một đối tượng ma trận, fit nó với từ điển từ vựng (tất cả từ duy nhất từ mọi tin nhắn của tập train dự báo kèm tần suất tương ứng), rồi biến đổi tập train và test dự báo thành ma trận. Kết quả sẽ là hai ma trận cho tập train và test dự báo, trong đó các cột tương ứng với mỗi từ duy nhất từ tất cả tin nhắn của tập train dự báo, các hàng tương ứng với từng tin nhắn, và giá trị trong ô là số lần xuất hiện từ trong mỗi tin.
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)
Tiếp theo, chúng ta xây dựng bộ phân loại Naive Bayes đa thức với tham số mặc định và kiểm tra độ chính xác:
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
Kết quả là chúng ta thu được một bộ lọc spam có độ chính xác rất cao.
Các hướng tiếp theo có thể là thử các phương thức chia train/test khác, cải thiện quá trình vector hóa bằng cách điều chỉnh một số tham số (ví dụ, ngưỡng cắt cho từ quá phổ biến trong cả spam và ham), và kiểm tra các trường hợp hiếm hoi mà bộ phân loại nhận diện sai một tin nhắn để tìm hiểu nguyên nhân. Ngoài ra, có thể trực quan hóa những từ phổ biến nhất trong tin nhắn spam và ham bằng phương pháp như đám mây từ (sau khi làm sạch dữ liệu sơ bộ và loại bỏ stopword hoặc từ ít thông tin). Cuối cùng, có thể áp dụng các thuật toán học máy hoặc học sâu khác (SVM, cây quyết định, mạng nơ-ron) và so sánh kết quả với cách tiếp cận Naive Bayes.
Các trường hợp sử dụng phổ biến khác trong viễn thông:
- phân khúc khách hàng
- phát triển sản phẩm
- phân tích bản ghi chi tiết cuộc gọi
- hệ thống gợi ý
- dự đoán tỷ lệ rời bỏ khách hàng
- tiếp thị mục tiêu
- phát hiện gian lận
- quản lý và tối ưu hóa mạng
- tăng cường bảo mật mạng
- tối ưu hóa giá
- dự đoán giá trị vòng đời khách hàng
Nghiên cứu tình huống Khoa học Dữ liệu: Khóa học
Chúng ta đã đi được một chặng đường dài và khám phá chi tiết nhiều ứng dụng của khoa học dữ liệu trong các lĩnh vực khác nhau. Nếu giờ đây bạn cảm thấy hứng thú muốn tìm hiểu thêm các trường hợp sử dụng dựa trên bộ dữ liệu thực và có thể áp dụng kiến thức, kỹ năng kỹ thuật mới để giải các bài toán thực tiễn trong lĩnh vực của mình, bạn có thể thấy các khóa học ngắn thân thiện với người mới bắt đầu sau đây về nhiều nghiên cứu tình huống khoa học dữ liệu hữu ích:
- Case Study: School Budgeting with Machine Learning in Python. Trong khóa học dựa trên một nghiên cứu tình huống từ cuộc thi học máy trên DrivenData này, bạn sẽ khám phá một vấn đề liên quan đến ngân sách học khu và cách giúp các trường so sánh chi tiêu với nhau dễ dàng, nhanh chóng hơn. Áp dụng một số kỹ thuật xử lý ngôn ngữ tự nhiên, bạn sẽ chuẩn bị ngân sách trường học và xây dựng mô hình tự động phân loại các hạng mục, bắt đầu từ phiên bản đơn giản rồi dần chuyển sang nâng cao. Ngoài ra, bạn có thể xem và phân tích lời giải của người thắng cuộc cũng như các bài nộp khác.
- Analyzing Marketing Campaigns with pandas. Pandas là thư viện phổ biến nhất của Python, và thành thạo bộ công cụ này là bắt buộc với mọi nhà khoa học dữ liệu. Trong khóa học thực hành cao này, bạn sẽ xây dựng trên nền tảng Python và pandas (thêm cột mới, gộp/cắt dữ liệu, làm việc với cột ngày tháng, trực quan hóa kết quả trong matplotlib) bằng bộ dữ liệu marketing giả lập về kinh doanh thuê bao trực tuyến. Bạn sẽ luyện tập chuyển các câu hỏi marketing điển hình thành giá trị đo lường. Một số câu hỏi bạn sẽ trả lời: "Chiến dịch này hoạt động thế nào?", "Vì sao một kênh cụ thể hoạt động kém?", "Kênh nào giới thiệu nhiều người đăng ký nhất?", v.v.
- Analyzing US Census Data in Python. Trong khóa học này, bạn sẽ học cách điều hướng dễ dàng Điều tra Dân số Mười năm một lần và Khảo sát Cộng đồng Mỹ hằng năm, và trích xuất các dữ liệu nhân khẩu học và kinh tế - xã hội, như thu nhập hộ gia đình, đi lại, chủng tộc và cấu trúc gia đình. Bạn sẽ dùng Python để yêu cầu dữ liệu cho các vùng địa lý khác nhau từ Census API và dùng thư viện pandas để thao tác dữ liệu thu thập nhằm rút ra insight có ý nghĩa. Ngoài ra, bạn sẽ luyện vẽ bản đồ với thư viện geopandas.
- Case Study: Exploratory Data Analysis in R. Khóa học ngắn này sẽ lý tưởng nếu bạn đã có kiến thức cơ bản về công cụ thao tác và trực quan hóa dữ liệu trong R. Khi học, bạn sẽ thử sức với một bộ dữ liệu thực để khám phá dữ liệu lịch sử bỏ phiếu của Đại hội đồng Liên Hợp Quốc. Cụ thể, bạn sẽ phân tích xu hướng bỏ phiếu giữa các quốc gia, theo thời gian và theo các vấn đề quốc tế. Nghiên cứu tình huống này cho phép bạn thực hiện một quy trình phân tích khám phá dữ liệu từ đầu đến cuối, luyện thêm với dplyr và ggplot2, và học thêm một số kỹ năng mới.
- Human Resources Analytics: Exploring Employee Data in R. R được biết đến là phù hợp hơn cho phân tích thống kê so với Python. Trong khóa học này, bạn sẽ tận dụng lợi thế đó của R để thao tác, trực quan hóa và thực hiện kiểm định thống kê trên một loạt nghiên cứu tình huống phân tích nhân sự. Kỹ thuật khoa học dữ liệu xuất hiện trong lĩnh vực nhân sự tương đối gần đây. Tuy nhiên, hiện nay chúng là hướng đi nhiều tiềm năng khi nhiều công ty ngày càng trông cậy vào bộ phận nhân sự để cung cấp insight và khuyến nghị có thể hành động dựa trên cơ sở dữ liệu nhân viên.
- Data-Driven Decision Making in SQL. Trong khóa học này, bạn sẽ học cách dùng SQL để hỗ trợ ra quyết định và báo cáo kết quả cho ban lãnh đạo. Nghiên cứu tình huống tập trung vào một công ty cho thuê phim trực tuyến với cơ sở dữ liệu về khách hàng, đánh giá phim, thông tin nền của diễn viên, v.v. Một số nhiệm vụ sẽ là áp dụng truy vấn SQL để nghiên cứu sở thích khách hàng, mức độ tương tác và diễn biến doanh số. Bạn sẽ học về các phần mở rộng SQL cho xử lý phân tích trực tuyến giúp thu thập insight chủ chốt từ dữ liệu đa chiều phức tạp.
Dù bạn muốn trở thành chuyên gia cấp cao trong khoa học dữ liệu hay chỉ muốn học kỹ năng lập trình hữu ích để trích xuất insight dựa trên dữ liệu trong lĩnh vực của mình, các tài nguyên trên là điểm khởi đầu tuyệt vời.
Kết luận
Tóm lại, trong bài viết này, chúng ta đã khảo sát khoa học dữ liệu dưới nhiều góc độ, cách nó khác với phân tích dữ liệu, các lĩnh vực áp dụng, trường hợp sử dụng khoa học dữ liệu là gì và lộ trình tổng quát để giải quyết thành công. Chúng ta đã thảo luận chính xác cách khoa học dữ liệu hữu ích cho các tác vụ đời thực ở một số ngành có nhu cầu. Khi phác thảo nhiều ứng dụng hiện có và tiềm năng, chúng ta tập trung vào các trường hợp phổ biến nhất trong mỗi lĩnh vực và minh họa cách giải quyết bằng thuật toán khoa học dữ liệu và phân tích dữ liệu. Nếu bạn muốn tìm hiểu thêm về các trường hợp trong ngành khác, hãy xem các bài viết trường hợp sử dụng của chúng tôi trong lĩnh vực ngân hàng, marketing và bán hàng. Cuối cùng, chúng ta đã điểm qua một số khóa học trực tuyến hữu ích để đào sâu hơn vào các nghiên cứu tình huống khoa học dữ liệu khác.
Một quan sát thú vị cuối cùng: Không lĩnh vực nào chúng ta xem xét ở đây là hoàn toàn mới. Thực tế, một số như y học và bán hàng đã tồn tại hàng thế kỷ. Suốt lịch sử của chúng, từ lâu trước kỷ nguyên số hóa toàn cầu, dữ liệu của các ngành đó cũng đã được thu thập dưới hình thức này hay khác; được ghi trong sách vở, tài liệu và lưu trữ ở kho lưu trữ, thư viện. Điều thực sự thay đổi mạnh mẽ trong những năm gần đây với sự ra đời của công nghệ mới là sự thấu hiểu căn bản về tiềm năng to lớn ẩn trong mọi dữ liệu, và tầm quan trọng sống còn của việc ghi nhận, thu thập và lưu trữ dữ liệu một cách phù hợp. Áp dụng những nỗ lực này và liên tục cải tiến hệ thống quản trị dữ liệu đã giúp tích lũy dữ liệu lớn trong mọi ngành để phục vụ phân tích và dự báo.


