彙整

SAS 文字分析 (13)

教學目標

初步了解 SAS 文字分析的基本概念。

重點概念

首先在許多行業的商業環境中文字分析的應用非常受歡迎,像是我們能夠使用社交媒體的文字資料應用於預防犯罪和詐欺偵測,其中文字分析包含用於從非結構化資料中獲取洞察力的工具和技術。而典型的資料探勘預測問題主要是以數字形式處理資料,但是文字資料通常僅以可讀的文件檔形式提供,其內容可以是電子郵件、客戶評論、公司報告、新聞文章、網頁、…等。而文字探勘會先嘗試獲得文件檔的定量表示,一旦文字被轉換成一組數字,足夠獲取文字資料中的模式,任何傳統的統計或預測模型或資料探勘演算法皆可以用於產生洞察或預測建模。

接著常見的文字探勘專案主要涉及以下任務:

  1. 資料收集:任何文字探勘研究專案的第一步是收集分析所需的文字資料。
  2. 文字解析:解析文字主要使用自然語言處理從文件檔中提取、清理和建立單詞詞典,其中包括識別句子,確定詞性和詞幹,以及涉及解析提取的單詞以識別實體、刪除停用詞和拼寫檢查,此外從文檔中提取單詞之外,還檢索與文本相關聯的變數。
  3. 文字過濾:過濾文字主要在數千個文件檔的語料庫中,可能會有許多與區分文件檔或總結文件檔無關的術語,此時我們必須手動瀏覽術語才能消除不相關的術語,這通常是所有文字探勘步驟中最耗時和主觀的任務之一,因為其需要相當的相關主題或領域專業知識。
  4. 文字轉換:轉換文字主要使用基於線性代數的方法處理文字的數字表示,像是潛在語義分析、潛在語義索引和向量空間模型,其中矩陣的維度由文件檔數量和集合中的術語數量決定,該步驟主要使用奇異值分解逐個文件檔矩陣的降維。
  5. 文字探勘:探勘文字主要涉及應用傳統的資料探勘演算法,像是分群、分類、關聯分析和連接分析,此外文字探勘是一個迭代過程,也就是文字過濾 -> 文字轉換 -> 文字探勘,其涉及使用不同的設定進行重複分析,包括或排除術語以獲得更好的結果。

再來文字探勘專案的資料收集步驟很大程度取決於業務問題,這涉及回答以下簡單問題:

  1. 該專案需要哪些資料?電子郵件、客戶評論、公司報告、新聞文章、網頁、…等。
  2. 資料在哪裡?資料庫、資料倉儲、網頁、…等。
  3. 資料如何提供? PDF 檔案,XML 檔案,Word 檔案,Excel 檔案,網頁、…等。
  4. 資料何時應收集 (非靜態資料)? 在特定事件之前或之後,來自維基百科或部落格的資料需經常更新。

當確定了解決當前問題所需的資料,下一個挑戰就是收集資料,並且將其轉換為 SAS 文字分析能夠進行處理的格式,此時我們很可能在專案中遇到以下任何一種情況:

  1. 資料隨時可用作 SAS 資料集。
  2. 資料在資料庫中以檔案提供。
  3. 需要從網際網路上收集資料。

請注意在 SAS 中進行文字探勘的過程中要求資料作為 SAS 資料集提供,並不代表著來源資料必須以 SAS 資料集的格式存在,若是 SAS 資料集,則我們可以直接建立資料來源進行文字探勘,若不是 SAS 資料集,則來源資料必須轉換為 SAS 資料集,有多種方法可以使用 SAS 資料存取功能從資料庫中可用的資料建立 SAS 資料集,我們可以使用 SAS Enterprise Guide 導入資料或 SAS Enterprise Miner 中的檔案匯入節點輕鬆將常用格式檔案件,像是 CSV 檔案或 Excel 檔案,以及 SAS Text Miner 更能夠從目錄或網頁上的文字檔案動態建立 SAS 資料集,主要是是使用文字匯入節點。該節點需要包含所有來源檔案、目標目錄的來源目錄以儲存所有已轉換的檔案,SAS Text Miner 會瀏覽來源目錄,從該目錄中的檔案中提取文字,並在目標目錄中創建純文字檔案,文字轉換中會省略 SAS Text Miner 無法讀取的任何形式的源文件,以及若每個檔案中的字符數超過 32,000,則檔案將被截斷。此外若從網頁收集來源資料,則該節點將在提取過程之前對網站進行爬蟲,檢索文件並將其放入來源目錄中。

最後在許多情況下,我們可能需要將這些不同形式的文字資料組合起來進行文字探勘,此時 SAS Enterprise Miner 和 SAS Text Miner 具有易於使用的功能,可以從這些檔案導入資料,並且準備 SAS 資料集,此外 SAS 中強大的網頁爬蟲功能可透過文字匯入節點使用,從而可以更輕鬆地檢索網頁上可用的資料,而 SAS中的每個資料導入任務都可以透過使用者界面或撰寫 SAS 程式碼執行,同時我們更能夠使用 Perl 的正則表達式可以獲得更多文字處理功能,以利分析師能夠透過資料提取,合併和轉換獲取無數功能,這些功能通常在開始文字探勘分析之前執行。

相關資源

SAS Viya (66)

教學目標

初步了解部署 SAS Viya 中設定 CAS 快取磁碟資料夾 (CAS_DISK_CACHE) 的基本概念。

重點概念

首先 SAS Viya 使用 CAS 伺服器提供高效能和可擴展的運算環境,為了獲得最佳效能,所以我們需要考慮 CAS 快取資料夾的設定,但是如何進行 CAS 快取磁碟資料夾的設定呢?所謂 SAS 雲端分析服務 (Cloud Analytics Services, CAS) 主要是以記憶體分析為主的伺服器。其中 CAS 伺服器主要是使用以區塊為單位組織的記憶體資料,並且對於區塊進行記憶體對應,而這些區塊作為暫時儲存在伺服器的資料夾中,此外 CAS 伺服器又可分為 CAS Controller 伺服器、 CAS Backup Controller 伺服器和 CAS Worker 伺服器,而 CAS Controller 伺服器還會暫時使用 CAS 快取磁碟資料夾來儲存上載的檔案,預設路徑為「/tmp」暫存資料夾不建議用於正式環境,請注意 SAS 僅支援 CAS 快取磁碟資料夾的本地檔案系統,像是 EXT4 和XFS,但是其不支援 GPFS 等網路檔案系統。

接著對於正式環境的 CAS 快取資料夾,我們主要會將 CAS 快取資料夾設定為使用一系列的資料夾,每個部署所需的資料夾大小不同,當指定一系列資料夾時,每次伺服器需要使用磁碟時,其皆會透過跨磁碟分配負載策略使用下一個路徑。除了建立多個檔案系統之外,還應建立具有多個的每個檔案系統,以避免多個執行緒發生競爭使用,分配給 CAS 快取磁碟資料夾總數應至少是伺服器上獲取 CAS 授權 CPU 數的兩倍,像是若 CAS 授權 CPU 數是 32 CPU,則我們會建立 64 個資料夾,並且若有 16 個磁碟,則 1 個磁碟會分配給 CAS Controller 伺服器只需要 1 個資料夾,至於每個 CAS Worker 伺服器則需要 5 個資料夾 ( 64 ÷ ( 16 - 1 ) = 4.2667)。此外我們更能夠透過檔案系統上設定 noatime 和nodiratimemount、nobarrier 掛載選項增加預讀值將會提高效能,以及減少交換記憶體頁面提高效能,主要能夠執行「sudo sysctl -w vm.swappiness = 1」此指令。

再來我們主要有兩種方式更改 CAS 快取磁碟資料夾的路徑,分別為:

  1. 部署 SAS Viya 之前進行設定。
  2. 部署 SAS Viya 之後進行設定。

當我們在部署 SAS Viya 之前,主要會先設定「vars.yml」設定檔中的相關參數設定,請注意為了避免 CAS 磁碟暫存空間可能填滿根目錄檔案系統而導致問題,所以請不要指定與根目錄檔案系統位於同一分區或邏輯卷上的任何目錄。

vars.yml 設定檔中的相關參數設定

1
2
3
CAS_CONFIGURATION:
env:
CAS_DISK_CACHE: /disk1:/disk2:/disk3

其中當我們建立專用於暫存目錄時,這些目錄會由執行 CAS 伺服器的使用者 ID,預設情況下為 cas 帳號所擁有,應在每個 CAS 節點上以相同方式設定每個目錄,所有 CAS 程序必須具有對這些目錄的讀取,寫入和執行權限,所以我們必須先授予透過 SAS 和 Python 等程式界面連接至任何 CAS 伺服器的使用者 ID 所有相關的權限。此外每個 CAS Controller 伺服器和 CAS Worker 伺服器上的目錄結構必須相同,但是 CAS Controller 伺服器不需要與每個 CAS Worker 伺服器有相同的空間量。

最後當我們部署 SAS Viya 之後,主要會設定「casconfig_usermods.lua」設定檔,我們主要可以在 CAS Controller 伺服器中 casconfig_usermods.lua 設定檔進行,而在 CAS Controller 伺服器啟動期間,其主要會將設定分享至每個 CAS Worker 伺服器和 CAS Backup Controller 伺服器進行連線,預設情況設定檔位於「/opt/sas/viya/config/etc/cas/default/」 資料夾路徑中,當我們使用「service sas-viya-cascontroller-default start」命令啟動服務器時,將會讀取此設定檔中的選項。

casconfig_usermods.lua 設定檔中的相關參數設定

1
env.CAS_DISK_CACHE='path [[:path] . . . ]'

相關資源

SAS 優化研究 (2)

教學目標

初步了解 SAS 優化研究的基本概念。(此篇主要為準備考試的心得筆記)

重點概念

首先我們可以透過優化改善決策過程,分別為:

  1. 結構性 (Structure):了解決策的動機。
  2. 一致性 (Consistency):推動所有決策目標。
  3. 可重複性 (Repeatability):隨著時間推移以相同方式做出決策。
  4. 適應性 (Adaptability):更新且保持相同的原則。
  5. 持久性 (Persistence):與個人經驗無關。
  6. 可擴展性 (Scalability):解決更大且複雜的問題。

接著數學優化的分類問題,主要能夠分為四種類型,請參考下表。

所有連續變數 一些整數變數 所有整數變數
線性函數 線性規劃 (LP) 混合整數線性規劃 (MILP) 整數線性規劃 (ILP)
非線性函數 非線性規劃 (NLP)

至於解決數學優化問題就是代表著找到最佳解或確定數學優化問題沒有最佳解。

再來線性規劃的條件限制在多個維度下決定了可行區域,若滿足所有條件約束,則解決方案是可行的,像是下述線性程序有決策變數 X 和 Y,而可行區域的維度由限制中包含的決策變數的數量確定,因此下述線性規劃為二個維度,此外線性規劃問題將具有有限數量的極值點解,但是兩個最佳解之間的任何點也將是最佳的,因此也可能是獨特、無限或沒有最佳解。

線性規劃問題範例

1
2
3
4
5
maximize 15x + 20y
subject to x + 4y <= 220
x + y <= 120
3x + 5y <= 360
x >= 0, y >= 0

最後極端點是可行區域的角落,最佳解是一種可行的解決方案,可以是最大化或最小化的目標函數,若有可行的解決方案,則總有一個極值點最佳解任何解決方案,若沒有可行的解決方案,則我們會認為線性規劃問題是不可行的,像是若限制條件 3x + 5y <= 360 被限制 3x + 5y >= 360 代替,則問題是不可行的,若目標可以任意大或在最小化,則線性規劃問題是無限的。

相關資源

SAS 優化研究 (1)

教學目標

初步了解 SAS 優化研究的基本概念。(此篇主要為準備考試的心得筆記)

重點概念

首先優化是作業研究,工業工程與管理所組成的科學,其是選擇產生最佳效果的可用操作之過程結果。而數學優化主要有三個階段,分別為:

  1. 描述分析 (Descriptive):發生了什麼?
  2. 預測分析 (Predictive):將會發生什麼?
  3. 指示分析 (Prescriptive):應該怎麼做?

接著優化的業務案例,主要有:

  1. 計劃生產:確定應生產幾種可能的產品組合中的哪一種實現最高利潤。
  2. 設施位置:找到與該位置相關的最佳站點,像是新工廠,材料供應商和配送中心。
  3. 投資組合選擇:最大化投資回報率,同時平衡回報與風險。
  4. 人員分配:使人員符合工作要求,以便滿足當前需求和預期的變化,取決於預算和人力資源要求。
  5. 供應鏈計劃:找到將產品從工廠轉移到配送中心的最低成本方式到商店,併計劃可能的中斷或擴展。
  6. 促銷營銷:確定促銷優惠,投放渠道的最佳組合,和客戶最大化營銷投資的整體回報。
  7. 供應商選擇和評估:選擇要處理的供應商滿意要求和最大化槓桿,使用各種標準對供應商進行評級。
  8. 庫存補貨:重新訂購級別和最大庫存水平,以滿足要求客戶服務目標和最小化成本。
  9. 定價決策:根據成本和區域需求建立並維持最佳日常價格模式和有競爭力的價格資訊。

再來從 SAS 資料集中讀取集合和參數值,並將模型輸出寫入 SAS 資料集是 OPTMODEL 程序應用優化分析的重要部分,其中 SOLVE 語句導致數學優化模型從宣告建立陳述並解決,其產生包含最佳目標值的解決方案摘要和解決時間。

1
2
3
4
5
6
proc optmodel;
/* 宣告集合 (Sets) 和參數 (Parameters) */
/* 宣告模型元素 (Elements) */
solve;
/* 輸出摘要統計 */
quit;

最後優化建模處理流程主要為定義業務問題代表著做出必要的假設和近似將其表示為理想地在合理的時間內解決之優化模型,若無法在業務問題的上下文中解釋優化問題的最佳解決方案,模型就有可能必須進行修改,所以我們針對商業問題會透過公式產生優化模型,產生解決方案以利解釋商業問題,同時再度修改優化模型。

相關資源

SAS 系統管理 (108)

教學目標

初步了解 SAS 平台中日誌事件的基本概念。

重點概念

首先許多企業在選擇導入解決方案時,解決方案的日誌事件維運管理機制會是非常關鍵的考量因素,而在 SAS 9 平台中網站應用程式伺服器日誌事件主要以 Log4j 為主,而有許多非網站應用程式伺服器日誌事件相關的記錄檔則預設不是以 Log4j 為主,相關伺服器的日誌事件相關的記錄檔位置請參考下表。

伺服器 記錄檔位置
SAS Metadata Server Lev1/SASMeta/MetadataServer/Logs
SAS Object Spawner Lev1/ObjectSpawner/Logs
SAS OLAP Server Lev1/SASApp/OLAPServer/Logs
SAS Pooled Workspace Server Lev1/SASApp/PooledWorkspaceServer/Logs
SAS Stored Process Server Lev1/SASApp/StoredProcessServer/Logs
SAS/SHARE Server Lev1/ShareServer/Logs
SAS/CONNECT spawner Lev1/ConnectSpawner/Logs
SAS DATA Step Batch Server Lev1/SASApp/BatchServer/Logs
SAS Web InfrastructurePlatform Data Server Lev1/WebInfrastructurePlatformDataServer/Logs

接著 SAS 日誌記錄工具是一個有彈性的框架,我們能夠透過收集,分類和過濾將日誌事件進行不同的輸出,同時日誌事件支援診斷問題,效能和容量管理以及稽核和法規遵循的客製參數設定,我們能夠透過分層命名系統對日誌事件進行分類,以利我們能夠產生廣泛或細化等級別的日誌事件,以及將日誌事件輸出至不同目標,像是固定檔案,滾動檔案,作業系統工具,客戶端應用程式,資料庫資料表,訊息佇列和自定義的 Java 類別,而對於每個輸出目標,我們能夠指定以下記錄檔工具的元件,分別為:

  1. 日誌事件的輸出等級,像是 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL 。
  2. 日誌事件的資訊格式,像是資料類型,資料順序以及資料格式。
  3. 日誌事件的標準過濾,像是診斷等級別和資訊內容。

此外我們更能夠動態調整記錄等級別,無需啟動和停止程序,以及透過應用程式回應測量 (Application Response Measurement, ARM) 產生與效能相關的日誌事件。

再來若要使用 SAS 日誌記錄工具,則我們必須設定日誌的記錄環境,主要有以下三步驟,分別為:

  1. 我們能夠透過設定 XML 檔案或使用SAS 程式語言元素來定義日誌記錄的設定,若執行計劃部署,則會為 SAS 伺服器提供日誌記錄設定檔案。
  2. 我們若要使用設定檔案,請指定 LOGCONFIGLOC = system 選項以啟用日誌記錄,若執行計劃部署,則此系統選項將包含在 SAS 伺服器中的設定檔案中。
  3. 我們若要客製化程式,則可以透過日誌記錄工具輸出不同日誌事件的格式,以及不同輸出方式,像是以不同日期或以檔案大小切檔。

而當我們的日誌記錄環境設定之後,SAS 日誌記錄工具將會開始處理以下步驟,分別為:

  1. SAS 程序發出日誌事件,每個事件皆會包括以下屬性,分別為訊息類別的名稱、診斷級別以及描述事件內容的資訊。
  2. 日誌記錄工具接收日誌事件,並且根據事件的名稱屬性確定要將其分配給哪個記錄器。
  3. 日誌事件的等級別與日誌記錄設定中為記錄器指定的門檻值進行比較,若事件的等級等於或高於指定的門檻值,則繼續處理,反之低於門檻值,則忽略該事件。

當完成以上步驟之後,日誌事件會分配給日誌記錄器和其日誌記錄設定中的 Appender 設定進行比較,若事件的等級等於或高於指定的門檻值,則繼續處理,反之低於門檻值,則忽略該事件,以及若 Appender 設定包含過濾器,則將事件與過濾條件進行比較,並且根據比較結果,處理繼續或停止。當比較完事件的等級和過濾條件之後,就會根據 Appender 設定中定義的規範將事件寫入輸出目標,所謂規範主要包括模式佈局,日誌資料夾,日誌檔案名,滾動策略,區域設置和編碼等參數設定。

最後對於每個伺服器皆提供一個名為 logconfig.xml 的日誌記錄設定檔案,該檔案位於伺服器的設定資料夾中,請注意若非必要請勿使用 TRACE 和 DEBUG 級別,因為這些日誌記錄等級會影響效能。此外企業客戶會期望針對記錄檔能夠提供以不同日期或以檔案大小切檔的功能,此時我們能夠透過 RollingFileAppender 將訊息寫入指定路徑中的指定檔案,並且在滿足指定條件時開始將訊息寫入具有不同名稱的新檔案,其主要有三種設定,分別為每天滾動到新日誌檔案、新連線開始時轉到新日誌檔案以及當文件到達到特定大小時轉到新日誌檔案。

相關資源