Logo Zephyrnet

Xây dựng ứng dụng dự đoán kết quả bệnh nhân bằng Amazon HealthLake và Amazon SageMaker

Ngày:

Khi làm việc với dữ liệu chăm sóc sức khỏe có thể là một thách thức và khách hàng AWS đang tìm kiếm giải pháp để giải quyết một số thách thức kinh doanh nhất định với sự trợ giúp của kỹ thuật dữ liệu và máy học (ML). Một số dữ liệu có cấu trúc, chẳng hạn như ngày sinh, giới tính và tình trạng hôn nhân, nhưng hầu hết dữ liệu không có cấu trúc, chẳng hạn như mã chẩn đoán hoặc ghi chú của bác sĩ. Dữ liệu này được thiết kế để con người hiểu được, nhưng không phải để máy tính hiểu được. Những thách thức chính của việc sử dụng dữ liệu chăm sóc sức khỏe như sau:

  • Cách sử dụng hiệu quả cả dữ liệu có cấu trúc và không cấu trúc để có được cái nhìn đầy đủ về dữ liệu
  • Cách diễn giải kết quả dự đoán một cách trực quan

Với sự phát triển của công nghệ AI/ML, việc giải quyết những thách thức này đã trở nên khả thi.

Một trường hợp sử dụng có liên quan là dự đoán kết quả của bệnh nhân, bao gồm các lần đến bệnh viện hoặc dự đoán tái nhập viện do tình trạng cấp tính hoặc mãn tính, dự đoán tiến triển bệnh trong một khoảng thời gian quan sát nhất định, v.v. Các nhà cung cấp dịch vụ chăm sóc sức khỏe, người trả tiền và công ty dược phẩm có thể sử dụng kết quả dự đoán để đề xuất can thiệp sớm, cải thiện giao tiếp tiếp cận cộng đồng, cải thiện trải nghiệm chăm sóc bệnh nhân và giảm chi phí tổng thể.

Trong bài đăng này, chúng tôi sẽ giới thiệu cho bạn một ví dụ về cách xây dựng mô hình dự đoán kết quả bệnh nhân dựa trên deep learning. Chúng tôi xây dựng mô hình trong Amazon SageMaker với MIMIC-III dữ liệu được lưu trữ trong Sức Khỏe AmazonHồ và biến nó thành một ứng dụng nhẹ để hiển thị và diễn giải. Mục tiêu dự đoán cho ví dụ này là dự đoán tỷ lệ tử vong trong vòng 90 ngày sau khi xuất viện ICU. Bạn có thể sửa đổi biến mục tiêu cho phù hợp với nhu cầu của mình.

Amazon HealthLake giúp hiểu rõ dữ liệu sức khỏe

HealthLake là dịch vụ đủ điều kiện HIPAA cho phép các nhà cung cấp dịch vụ chăm sóc sức khỏe, công ty bảo hiểm y tế và công ty dược phẩm lưu trữ, chuyển đổi, truy vấn và phân tích dữ liệu sức khỏe ở quy mô petabyte.

Nguồn dữ liệu chúng tôi xuất từ ​​API HealthLake được gọi là MIMIC-III [1]. Đó là một cơ sở dữ liệu lớn, có sẵn miễn phí bao gồm dữ liệu liên quan đến sức khỏe đã được xác định rõ ràng liên quan đến hơn 40,000 bệnh nhân đang nằm trong các đơn vị chăm sóc quan trọng. Cơ sở dữ liệu bao gồm các thông tin như nhân khẩu học, dấu hiệu sinh tồn, kết quả xét nghiệm trong phòng thí nghiệm, quy trình, thuốc men, ghi chú của người chăm sóc, báo cáo hình ảnh và tỷ lệ tử vong. Chúng tôi không thể chia sẻ dữ liệu trong bài đăng này do hạn chế về giấy phép, nhưng bạn có thể truy cập trang web chính thức của MIMIC để yêu cầu quyền truy cập dữ liệu.

HealthLake tự động trích xuất các thực thể lâm sàng và liên kết mã ICD-10-CM và RxNorm với văn bản phi cấu trúc, chẳng hạn như ghi chú xuất viện khi văn bản được lưu trữ trong HealthLake dưới dạng Tài nguyên có thể tương tác chăm sóc sức khỏe nhanh (FHIR) DocumentReference kiểu. Các thực thể được trích xuất sẽ được thêm lại vào FHIR DocumentReference tài nguyên dưới dạng phần mở rộng FHIR. Văn bản được nhúng trong DocumentReference nên được mã hóa base64. Khi xây dựng các mô hình dự đoán, chúng ta có thể kết hợp thông tin được trích xuất với dữ liệu có cấu trúc khác và có được cái nhìn toàn diện hơn về tiền sử bệnh của bệnh nhân.

Tổng quan về giải pháp

Sơ đồ kiến ​​trúc sau đây minh họa quy trình đào tạo mô hình, quy trình suy luận và giao diện người dùng hiển thị thông tin.

Chúng tôi sử dụng API xuất HealthLake để xuất dữ liệu đã chuẩn hóa sang Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Sau đó chúng tôi sử dụng một Keo AWS trình thu thập thông tin để tạo Danh mục dữ liệu. Chúng ta có thể sử dụng amazon Athena với Danh mục dữ liệu để chạy các truy vấn giống SQL đối với dữ liệu đã xuất. Dữ liệu phi cấu trúc của hồ sơ bệnh nhân được xử lý riêng để trích xuất dữ liệu được lập chỉ mục và kết hợp nó với thông tin có cấu trúc khác. Sau đó, chúng tôi sử dụng sổ ghi chép SageMaker có bộ chứa TensorFlow để huấn luyện mô hình mạng nơ-ron tích chập tùy chỉnh. Thành phần lạ của mô hình được lưu vào bộ chứa S3 và sau đó được dùng để kiểm tra hiệu suất của mô hình trên dữ liệu chưa được xem. Cuối cùng, chúng tôi chạy suy luận trên mô hình bằng cách sử dụng biến đổi hàng loạt SageMaker và lưu kết quả vào Amazon S3. Chúng tôi cũng phát triển các thành phần trực quan hóa và hiển thị chúng thông qua Cổng API Amazon để cải thiện khả năng diễn giải của mô hình.

Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn các bước sau:

  1. Tạo tập dữ liệu huấn luyện và kiểm tra.
  2. Sử dụng các kỹ thuật nhúng để thể hiện dữ liệu phi cấu trúc phong phú hơn.
  3. Huấn luyện người mẫu.
  4. Đánh giá kết quả của chúng tôi.
  5. Trực quan hóa kết quả với các thành phần giao diện người dùng tùy chỉnh.

Tạo tập dữ liệu huấn luyện và kiểm tra

Đầu tiên, chúng tôi tạo một biến nhị phân cho mục tiêu—tỷ lệ tử vong trong khoảng thời gian 90 ngày sau khi xuất viện. Một bệnh nhân có thể có nhiều bản ghi với giá trị biến mục tiêu là 0 trước khi tình trạng tử vong của bệnh nhân này được đặt thành 1. Tình huống này cũng áp dụng cho nhiều biến mục tiêu dự đoán kết quả bệnh nhân khác. Do đó chúng tôi chia dữ liệu theo patient_id vào các tập dữ liệu đào tạo, xác nhận và thử nghiệm để ngăn chặn rò rỉ thông tin. Bằng cách này, nhiều hồ sơ của một bệnh nhân sẽ không xuất hiện trong nhiều danh mục tập dữ liệu.

Trước tiên, chúng tôi dành 20% số bệnh nhân cho mục đích xét nghiệm và xử lý những hồ sơ bệnh nhân này theo cách mà thuật toán chưa từng thấy. Trong số 80% bệnh nhân còn lại, chúng tôi lấy 80% dữ liệu khác để đào tạo và 20% để xác nhận. Chúng tôi tải các tập dữ liệu này lên bộ chứa S3 để sử dụng sau.

Sử dụng kỹ thuật nhúng

Các phương pháp ML truyền thống có thể sử dụng các kỹ thuật mã hóa dựa trên số tần số, chẳng hạn như thuật ngữ tần số tài liệu nghịch đảo tần số (TF-IDF). Trong bài đăng này, chúng tôi sử dụng các kỹ thuật nhúng tận dụng khả năng thể hiện dữ liệu phi cấu trúc phong phú hơn bằng cách tìm hiểu mối quan hệ giữa các mã y tế khác nhau.

Trước tiên, chúng tôi lấy một chuỗi mã y tế và sử dụng Skip-gram để tìm hiểu mối quan hệ giữa các mã khác nhau. Việc nhúng đã học cho mỗi mã y tế thường là một vectơ có độ dài n (chẳng hạn như 300) đặc trưng cho phần tử riêng lẻ. Các kích thước này thường không có ý nghĩa rõ ràng, tuy nhiên, các khái niệm y tế tương tự sẽ được chiếu gần nhau hơn trong không gian đặc trưng. Chúng tôi đã học các vectơ như vậy cho tất cả các từ vựng trong quá trình đào tạo và xếp chúng lại với nhau thành một ma trận. Sau đó, chúng tôi sử dụng ma trận nhúng này để huấn luyện mô hình mạng nơ-ron tích chập và thực hiện thử nghiệm trên dữ liệu chưa nhìn thấy.

Đào tạo mô hình

Trước tiên, chúng tôi xác định cấu trúc của mạng lưới thần kinh, sau đó sử dụng hình ảnh đào tạo TensorFlow do SageMaker lưu trữ để huấn luyện mô hình của mình. Các lớp được xác định như sau:

  • Lớp nhúng – Nhận các chuỗi mã y tế thô và chuyển đổi từng mã riêng lẻ thành các phần nhúng
  • Lớp chập – Thực hiện các phần nhúng và kết hợp với các bộ lọc có thể điều chỉnh
  • Lớp gộp – Áp dụng các phép tính tổng hợp để giảm kích thước cho đầu vào của các lớp tiếp theo
  • Lớp bỏ học – Tắt ngẫu nhiên các kết nối để giảm tình trạng quá khớp
  • Lớp nối – Kết hợp thông tin được xử lý từ các lớp trước với thông tin có cấu trúc như tuổi hoặc giới tính của bệnh nhân
  • Lớp được kết nối đầy đủ với kích hoạt sigmoid – Xuất ra xác suất dự đoán cuối cùng

Trong quá trình đào tạo, chúng tôi sử dụng các xác suất dự đoán này để tính toán số liệu và hướng dẫn định hướng cho quá trình đào tạo. Trong quá trình thử nghiệm, các xác suất này được xuất ra dưới dạng tệp trên Amazon S3.

Khi quá trình đào tạo hoàn tất, chúng tôi lưu thành phần lạ của mô hình và tải nó lên bộ chứa S3 để sử dụng sau.

Xem lại kết quả

Hình ảnh trực quan sau đây hiển thị đường cong ROC (Đặc điểm vận hành máy thu) và báo cáo phân loại trên dữ liệu thử nghiệm.

Đường cong ROC cho thấy hiệu suất của mô hình ở các ngưỡng khác nhau. AUC (Diện tích dưới đường cong) cho đường cong ROC là 0.82, đo lường khả năng của mô hình trong việc phân tách các lớp mục tiêu khác nhau. Báo cáo phân loại cung cấp cho bạn cái nhìn tổng quan về độ chính xác, khả năng thu hồi và điểm F1 của mô hình cho từng lớp. Điểm F1 trung bình có trọng số của mô hình là 0.74.

Trực quan hóa với các thành phần giao diện người dùng tùy chỉnh

Chúng ta có thể hình dung kết quả dự đoán bằng nhiều cách. Đối với bài đăng này, chúng tôi chỉ trình bày cách hiển thị các giá trị SHAP (SHapley Additive exPlanations) để cải thiện khả năng diễn giải của mô hình. SHAP là một cách tiếp cận lý thuyết trò chơi để giải thích đầu ra của mô hình ML. Hình ảnh trực quan có thể hiển thị chi tiết về từng yếu tố góp phần của dự đoán để bạn có thể hiểu một cách trực quan những đặc điểm nào đang đẩy xác suất được dự đoán lên cao hơn (về 1) hoặc thấp hơn (về 0) so với giá trị cơ bản.

Trước tiên, chúng tôi xác định mẫu HTML và tiếp tục thêm các thành phần trực quan hóa vào mẫu. Sau đó, chúng tôi tải tệp HTML lên vùng lưu trữ S3 và thiết lập AWS Lambda để truy xuất nội dung HTML và nội dung được gửi đến Cổng API để hiển thị trang web.

Thiết lập mẫu HTML

Chúng ta có thể xác định một mẫu HTML có các khối mã trống trong đó bằng mã sau:

<div>
<h1>Dashboard</h1>
<div> <h2>Indicators</h2> {shap_value} </div>
</div>

Chúng ta có thể tạo ra {<html-code-block>} sau đó thông qua thư viện Python hoặc JavaScript và cắm mã vào các khối.

Tạo các thành phần trực quan

Một ví dụ về việc tạo trực quan hóa giá trị SHAP có thể trông giống như đoạn mã sau:

explainer = shap.KernelExplainer (tf_model, X_train)
shap_values = explainer.shap_values(X_test, nsamples=100)
shap.initjs()
shap.force_plot(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0,:])

Điều này có thể tạo ra lời giải thích trực quan về các yếu tố thúc đẩy các dự đoán. Như được hiển thị trong hình ảnh trực quan sau đây, các dấu hiệu màu đỏ đang đẩy xác suất dự đoán kết quả của bệnh nhân lên mức cao hơn (về 1) và các dấu hiệu màu xanh lam đang đẩy xác suất xuống mức thấp hơn (về 0). Kết quả là bệnh nhân này có xác suất là 0.34 so với giá trị cơ bản của đoàn hệ huấn luyện là 0.4481. Do đó, bệnh nhân này có ít khả năng dương tính với biến mục tiêu hơn.

Tạo hàm Lambda để phân tích tệp HTML

Một ví dụ về hàm Lambda có thể đơn giản như đoạn mã sau:

import json
import boto3
def lambda_handler(event, context): s3 = boto3.client('s3') response = s3.get_object(Bucket='<bucket>', Key='<key>') return response['Body'].read().decode('utf-8')

Mục đích của chức năng này là truy xuất thông tin cần hiển thị mà không để lộ tài nguyên Amazon S3 ra công chúng và gửi thông tin đến Cổng API.

Tạo Cổng API để hiển thị tệp HTML

Chúng ta có thể sử dụng Bộ công cụ phát triển đám mây AWS (AWS CDK) để tự động hóa các cài đặt này. Ví dụ:

api = apigw.LambdaRestApi( self, ‘visualization’, handler=lambda_handler, proxy=False) integration = apigw.LambdaIntegration( lambda_handler, proxy=False,
passthrough_behavior=apigw.PassthroughBehavior.WHEN_NO_TEMPLATES, integration_responses=[{ "statusCode": "200", "responseTemplates": {"text/html": "$input.path('$')"}, "responseParameters": { "method.response.header.Content-Type": "'text/html'"}
}])

Sản phẩm integration_responses đảm bảo rằng nội dung trả về được API Gateway hiển thị chính xác dưới dạng HTML. Khi API Gateway được triển khai, bạn sẽ nhận được URL gọi. Bạn có thể sao chép và dán URL này vào trình duyệt web để kiểm tra kết quả hiển thị.

Kết luận

Trong bài đăng này, chúng tôi đã trình bày cách sử dụng Amazon SageMaker và Amazon HealthLake để xây dựng mô hình deep learning nhằm giải quyết thách thức về chăm sóc sức khỏe và khoa học đời sống, đồng thời diễn giải kết quả thông qua kỹ thuật trực quan. Với giải pháp này, các bệnh viện có thể chăm sóc bệnh nhân tốt hơn và đưa ra biện pháp can thiệp phù hợp bằng cách dự đoán kết quả của bệnh nhân. Chúng tôi đã chứng minh giải pháp này để dự đoán tỷ lệ tử vong trong vòng 90 ngày sau khi xuất viện ICU, bạn có thể áp dụng phương pháp tương tự cho các trường hợp sử dụng dự đoán kết quả bệnh nhân khác.

HealthLake giúp bạn dễ dàng làm việc với dữ liệu sức khỏe và trích xuất các điểm dữ liệu liên quan từ các văn bản lâm sàng phi cấu trúc. Kỹ thuật lập mô hình học sâu cung cấp cho chúng tôi các tùy chọn để xây dựng các mô hình chính xác hơn với ít nỗ lực kỹ thuật tính năng hơn và công nghệ AWS giúp có thể trực quan hóa diễn giải mô hình bằng giải pháp ngoại vi gọn nhẹ.

Để tìm hiểu thêm về HealthLake, hãy xem Tài nguyên Amazon HealthLakeTạo ý nghĩa về dữ liệu sức khỏe của bạn với Amazon HealthLake. Để có hướng dẫn thực hành, hãy truy cập Hội thảo Amazon HealthLake. Để biết thêm ví dụ về cách sử dụng HealthLake và sức khỏe cộng đồng, hãy xem Các ứng dụng sức khỏe dân số với Amazon HealthLake - Phần 1: Phân tích và giám sát bằng Amazon QuickSight.

dự án

[1] MIMIC-III, cơ sở dữ liệu chăm sóc quan trọng có thể truy cập miễn phí. Johnson AEW, Pollard TJ, Shen L, Lehman L, Feng M, Ghassemi M, Moody B, Szolovits P, Celi LA và Mark RG. Dữ liệu khoa học (2016). DOI: 10.1038/sdata.2016.35. Có sẵn từ: http://www.nature.com/articles/sdata201635


Về các tác giả

 Soái Cao là Nhà khoa học dữ liệu trong nhóm Dịch vụ chuyên nghiệp tại Amazon Web Services. Chuyên môn của anh ấy là xây dựng các ứng dụng máy học trên quy mô lớn cho các khách hàng chăm sóc sức khỏe và khoa học đời sống. Ngoài công việc, anh ấy thích đi du lịch vòng quanh thế giới và chơi hàng chục loại nhạc cụ khác nhau.

Garin Kessler là Giám đốc Khoa học Dữ liệu Cấp cao tại Amazon Web Services, nơi ông lãnh đạo nhóm các nhà khoa học dữ liệu và kiến ​​trúc sư ứng dụng để cung cấp các ứng dụng học máy theo yêu cầu cho khách hàng. Ngoài AWS, ông giảng dạy về máy học và các mô hình ngôn ngữ thần kinh tại Georgetown. Khi không làm việc, anh ấy thích nghe (và tạo) những bản nhạc có chất lượng đáng ngờ với bạn bè và gia đình.

Kartik Kannapur là Nhà khoa học dữ liệu với Dịch vụ chuyên nghiệp của AWS. Anh có bằng thạc sĩ về Toán ứng dụng và Thống kê tại Đại học Stony Brook và tập trung vào việc sử dụng máy học để giải quyết các vấn đề kinh doanh của khách hàng.

Coinsmart. Đặt cạnh Bitcoin-Börse ở Europa
Nguồn: https://aws.amazon.com/blogs/machine-learning/build- Patient-outcome-prediction-applications-using-amazon-healthlake-and-amazon-sagemaker/

tại chỗ_img

Tin tức mới nhất

tại chỗ_img