不作數據「搬運工」,一樣玩起色器學習

專屬圖1.png

每一個和機器學習打交道的人,都有資格得到一個「數據搬運工」的稱號!爲何這樣說?你不管訓練模型,或是分析理解內容,總得涉及到海量的數據吧。這些數據,尤爲是結構化的數據,一般都在哪?大部分狀況下可能都保存在各個數據庫裏。html

而爲了將機器學習與關係數據庫中的數據結合使用,這就須要開發一個自定義應用程序來讀取數據庫中的數據,而後再應用機器學習模型。開發這樣的應用程序須要多種技能才能和數據庫進行交互並進行機器學習。固然,開發好這樣的程序後,免不了還得考慮它的性能、可用性、安全性等一系列問題。git

那麼問題來了:咱們可否更輕鬆地對關係數據庫中數據應用機器學習?github

Amazon Aurora 新功能瞭解一下

最近更新後的 Amazon Aurora 已經在本地集成了兩種 AWS 機器學習服務:算法

  • Amazon SageMaker,一項讓咱們可以快速構建、訓練和部署自定義機器學習模型的服務。
  • Amazon Comprehend,一項使用機器學習來查找文字中的看法的天然語言處理(NLP)服務。

aurora-ml-integrations.png

經過使用這項新的功能,咱們能夠在查詢中使用 SQL 函數來對關係數據庫中的數據應用機器學習模型。例如,咱們可使用 Comprehend 檢測用戶評論的情緒,或應用經過 SageMaker 構建的自定義機器學習模型來估計客戶「流失」風險。客戶流失是一個摻雜着「變化」和「轉變」的詞語,主要用於描述客戶中止使用您的服務。數據庫

藉助該功能,咱們還能夠將大型查詢的輸出(包括機器學習模型中的其餘信息)存儲到一個新的表格中,或經過僅更改客戶端運行的 SQL 代碼來在應用程序中交互式使用此功能,無需任何機器學習經驗。安全

接下來就一塊兒看兩個具體的示例(第一個示例使用 Comprehend,第二個使用 SageMaker)。app

配置數據庫權限

首先須要授予數據庫訪問想要使用的服務的權限:Comprehend、SageMaker 或這二者。請在 RDS 控制檯中建立一個新的 Aurora MySQL 5.7數據庫,該數據庫可用後,在區域終端節點的鏈接和安全選項卡中找到管理 IAM 角色部分。機器學習

aurora-ml-service-role.png

在這裏,咱們須要將 Comprehend 和 SageMaker 鏈接到此數據庫集羣。對於 SageMaker,須要提供已部署機器學習模型的終端節點Amazon 資源名稱(ARN)。若是想要使用多個終端節點,則須要重複執行此步驟。控制檯負責建立服務角色,讓 Aurora 數據庫訪問這些服務,以便新的機器學習模型集成工做。ide

aurora-ml-service-role-connected.png

經過 Amazon Aurora 使用 Comprehend

爲此須要使用 MySQL 客戶端鏈接到數據庫。爲了運行測試,咱們能夠建立一個用於存儲博客平臺評論的表格,並插入一些示例記錄:函數

CREATE TABLE IF NOT EXISTS comments (
       comment_id INT AUTO_INCREMENT PRIMARY KEY,
       comment_text VARCHAR(255) NOT NULL
);
 
INSERT INTO comments (comment_text)
VALUES ("This is very useful, thank you for writing it!");
INSERT INTO comments (comment_text)
VALUES ("Awesome, I was waiting for this feature.");
INSERT INTO comments (comment_text)
VALUES ("An interesting write up, please add more details.");
INSERT INTO comments (comment_text)
VALUES ("I don’t like how this was implemented.");

若要檢測表格中的評論情緒,可使用 aws_comprehend_detect_sentiment 和aws_comprehend_detect_sentiment_confidence 這兩個 SQL 函數:

SELECT comment_text,
       aws_comprehend_detect_sentiment(comment_text, 'en') AS sentiment,
       aws_comprehend_detect_sentiment_confidence(comment_text, 'en') AS confidence
  FROM comments;

aurora-ml-comprehend-select.png

其中 aws_comprehend_detect_sentiment 函數將返回最合適的輸入文本情緒:積極、消極或中性 aws_comprehend_detect_sentiment_confidence 函數將返回情緒檢測的置信度:0(徹底不可信),- 1(徹底可信)。

經過 Amazon Aurora 使用 SageMaker 終端節點

與使用 Comprehend 時的狀況相似,咱們能夠訪問 SageMaker 終端節點來豐富存儲在數據庫中的信息。爲了查看實際的使用案例,讓咱們以此文開頭處提到的客戶流失爲例。

手機運營商擁有的歷史記錄上存在兩種最終結果:一種是客戶流失;另外一種是繼續使用服務。咱們可使用此歷史記錄信息來構建機器學習模型。做爲模型的輸入,咱們瞄準的是當前的訂閱套餐、一天中不一樣時段經過手機通話的客戶數量以及呼叫客戶服務的頻率。

如下是客戶表的結構:

SHOW COLUMNS FROM customers;

aurora-ml-customer-table-1.png

爲了可以肯定客戶流失風險,可使用 XGBoost 算法在此示例 SageMaker 筆記本以後訓練一個模型。當該模型建立完畢以後,將它部署到一個託管的終端節點。

當 SageMaker 終端節點處於服務狀態後,返回到控制檯的管理 IAM 角色部分,以授予 Aurora 數據庫訪問終端節點 ARN 的權限。
隨後須要建立一個新的 will_churn SQL 函數,爲終端節點輸入提供模型所需的參數:

CREATE FUNCTION will_churn (
       state varchar(2048), acc_length bigint(20),
       area_code bigint(20), int_plan varchar(2048),
       vmail_plan varchar(2048), vmail_msg bigint(20),
       day_mins double, day_calls bigint(20),
       eve_mins double, eve_calls bigint(20),
       night_mins double, night_calls bigint(20),
       int_mins double, int_calls bigint(20),
       cust_service_calls bigint(20))
RETURNS varchar(2048) CHARSET latin1
       alias aws_sagemaker_invoke_endpoint
       endpoint name 'estimate_customer_churn_endpoint_version_123';

能夠看到,該模型經過使用客戶的手機訂閱詳細信息和服務使用模式來識別客戶流失風險。使用 will_churn SQL 函數對 customers 表運行了一次查詢,根據機器學習模型對客戶進行標記。爲了存儲查詢結果,咱們還須要建立一個新的 customers_churn 表:

CREATE TABLE customers_churn AS
SELECT *, will_churn(state, acc_length, area_code, int_plan,
       vmail_plan, vmail_msg, day_mins, day_calls,
       eve_mins, eve_calls, night_mins, night_calls,
       int_mins, int_calls, cust_service_calls) will_churn
  FROM customers;

讓咱們看一看 customers_churn 表中的一些記錄:

SELECT * FROM customers_churn LIMIT 7;

aurora-ml-sagemaker-select-1024x301.png

很幸運,前面7位客戶顯然不會流失。但整體狀況如何呢?存儲 will_churn 函數的結果後,能夠對 customers_churn 表運行 SELECT GROUP BY 語句。

SELECT will_churn, COUNT(*) FROM customers_churn GROUP BY will_churn;

aurora-ml-group-by-1.png

從這裏開始,就能夠深刻了解哪些因素致使客戶流失。

當咱們建立新版本機器學習模型及新的終端節點 ARN 時,能夠從新建立 will_churn 函數而無需更改 SQL 語句。

當即體驗

新的機器學習集成已於近日在 Aurora MySQL 5.7中推出,其中 SageMaker 集成已正式推出,Comprehend 集成提供預覽版。你們能夠在文檔中瞭解更多信息。咱們即將推出其餘引擎和版本:Aurora MySQL 5.6,而且 Aurora PostgreSQL 10和11也即將推出。

Aurora 機器學習集成已在基礎服務可用的全部區域推出。例如,若是 Aurora MySQL 5.7和 SageMaker 在某一區域都可用,則您可使用SageMaker集成。如需完整的服務可用性列表,請參閱AWS 區域表

使用集成不會額外收費,只需以正常費率支付基礎服務費用。使用 Comprehend 時,請注意查詢的大小。例如,若是對客戶服務網頁中的用戶反饋進行情緒分析,若要聯繫作出特別積極或消極評論的客戶以及天天作出10,000條評論的客戶,須要支付3美圓/天。爲了下降成本,請記住要存儲結果。

底圖2.png

相關文章
相關標籤/搜索