如果您對資料探勘和資料統計分析感興趣,又對python和r等語言不熟悉,那您可以參考本文的「特徵抽取演算法」示例,在oracle資料庫或者資料倉儲中,利用sql來實現資料探勘和資料統計分析演算法。
在資料探勘的過程中,過多的資訊會減低挖掘的有效性。一些資料屬性對於模型的建立和測試並沒有意義而且這些屬性可能會降低模型的質量和準確率。不相關的屬性增加了資料的雜訊進而影響了模型的準確性。在模型的建立和評價的過程中,雜訊資料的存在增加了模型的生成時間和系統資源的消耗。
比如,在影象壓縮演算法中,經常會用到奇異值分解(svg)1技術提取影象特徵,如下圖當奇異值個數為5時雖有明顯雜訊,但已經基本能表達影象特徵了。(大家可以估算下奇異值為12和奇異值為5時的檔案大小)。
feature selection(特徵選擇): selecting the most relevant attributes選擇最相關的屬性
feature extraction(特徵抽取): combining attributes into a new reduced set of features將屬性合併成乙個新的簡化功能集
在oracle資料探勘演算法中特徵選擇(feature selection)、特徵提取(feature extraction)和屬性重要性(attribute importance)是三個非常重要的概念。
特徵選擇和屬性重要性feature selection and attribute importance
找到最重要的業務因子是一些資料探勘的專案的目標,例如找到產生信用卡風險的最主要特徵因子。oracle的資料探勘支援屬性重要性attribute importance演算法,在**目標的時候根據屬性的重要性進行等級rank排序。屬性重要性(ai)演算法不進行特徵選擇,所有的待測因子predictors都繼續保留在模型中;而在特徵選擇(fs)演算法中,rank後低於某個閥值的「屬性」會從模型中被移除掉。
特徵選擇在**模型(predictive modeling)中作為預處理的步驟用於提公升效率。當oracle資料庫 automatic data preparation開啟的情況下(odm 自動按照演算法執行所需的資料轉換)。
oracle在決策樹和樸素貝葉斯演算法中實現了特徵選擇作為「優化演算法」,廣義線性模型(generalized linear model)在預處理步驟中可以通過配置實現特徵選擇。
oracle資料探勘演算法不支援在屬性重要性(attribute importance)中進行評價scoring操作。oracle資料探勘演算法使用最小描述長度演算法(minimum description length)作為屬性重要性(attribute importance)的實現。
特徵提取feature extraction
與上面提到的特徵選擇不同,特徵抽取是屬性減少的過程,選擇並保留最重要的屬性。特徵抽取實際上是轉換了這些屬性,這些被轉換的屬性(特徵)是原始屬性的線性組合。
特徵抽取的處理過程產生出小而豐富的屬性集合。最大的特徵數可以是使用者指定或由演算法決定,預設情況下是演算法決定。
在特徵抽取後的資料基礎上的建立的模型質量是比較高的,因為經過特徵抽取的資料更少更有意義。特徵抽取將多維度的資料對映成小維度(降維),使之更易於進行資料視覺化。
特徵抽取演算法的應用場景包括:潛在語義分析、資料壓縮、資料分解和投影以及模式識別。特徵抽取可以用於加速監督學習的速度和有效性。特徵抽取也可以被用於文件集的主題抽取,每個主題是一組詞的組合。
oracle特徵抽取挖掘演算法支援scoring操作。作為非監督挖掘函式,特徵抽取不需要目標資料集。
oracle資料探勘演算法datamining包含的特徵抽取演算法有:(11.2時僅有nmf)
非負矩陣 non-negative matrix factorization (nmf).
奇異值分解 singular value decomposition (svd)
主成分分析 principal component analysis (pca)
顯性語義分析explicit semantic analysis (esa).
模型引數解釋
模型名、函式名、演算法名的關係如下:
在oracle自製資料倉儲adw的sql notebook中,有個attribute importance的示例程式。比較簡單,在此不做展開,本文主要講解feature extraction演算法在adw中的應用。
在adw sql notebook中的核心指令碼如下:
其中nmf_mode_settings是演算法的參數列,通過此參數列修改feature extraction演算法中的預設值。比如,當您需要修改svds_scoring_mode這個引數時,可以按照如下配置示例。
begin
execute immediate 'create table nmf_mode_settings (setting_name varchar2(30),setting_value varchar2(4000))';
--execute immediate 'insert into svg_mode_settings (setting_name, setting_value) values (''svds_scoring_mode'', ''svds_scoring_pca'')';
--insert into svg_mode_settings (setting_name, setting_value) values (dbms_data_mining.algo_name, dbms_data_mining.algo_support_vector_machines);
--dbms_output.put_line ('created model build settings table: nmf_mode_settings ');
end;
參數列中可以不指定任何引數,演算法自帶預設值。關於具體預設值可參考本文附錄。
計算結果會存到使用者檢視中,可以在sql notebook中檢視:
select * from all_mining_model_views where model_name = 'ai_nmf_output' order by view_name。
如果採用svg演算法,生成的結果檢視為:
結果中包含演算法定義,引數值表,屬性相關性等內容,您可以直接寫sql語句查詢結果。其中,特徵矩陣h儲存在上圖第一條記錄dm$veai_nmf_output檢視中。解讀特徵矩陣比較簡單,本文不做贅述。
參考文件
1、oracle data mining 12.2 演算法說明
2、oracle data mining 18演算法說明
掃瞄下方qr code即刻預約adw演示
跟我學XSL XSL入門
跟我學xsl xsl入門 上期我們講到用css 層疊樣式表 來格式化xml文件,其效果並不很令人滿意。實際上css用來格式化html標記比較合適些,只是因為它簡單才在上例中採用。xml在更多的時候只是一種資料檔案,怎樣將它變為我們日常所看到的html格式那樣的檔案呢?如果我們將xml檔案比作結構化的...
跟我學XSL(六)
今天我們學習xsl的各種運算子,滿足編寫更大靈活性的xsl樣式的要求。表 一 運算子與特殊字元 運算子描述選擇子元素,返回左側元素的直接子元素 如果 位於最左側表示選擇根結點的直接子元素 遞迴下降,不論深度,搜尋指定的元素 如果位於最左側表示從根結點出發遞迴下降搜尋指定元素 表示當前元素 萬用字元,...
跟我學XSL(三)
經過前幾日的學習,我們學習了xhtml文件的編寫和以及三個xsl元素,已能編寫相當靈活的xsl文件,今天將學習的是xsl模板的編寫。我們都知道,短的文件 程式十分好讀,但當規模增大後,其複雜性也以更快的速度增加。前面我們學了 xsl for each xsl value of 等,可以用它們對xml...