簡介
數據挖掘使專家、分析師和用戶可以洞察大量數據集中存在的模式,并使之成為日常業務流程中的一部分。在過去,數據挖掘一直是統計和數據分析專家的任務。另一方面,數據挖掘的結果又常常與公司中各種不同的用戶有關聯。
考慮以下場景。您收集關于符合特定的人口特征(例如年齡、職業和居住地點)的客戶以及過去的事務(例如售出的產品以及合同)的數據。商場營銷部門希望針對具有相似特點的特定客戶群開發新的定制產品。如何發現那樣的獨特用戶群?數據集群為這個問題提供了一個解決方案。它自動根據數據集的屬性或特征對數據集進行分組。然后,分析師查看這些組,并交互式地對它們進行微調,直到滿足他/她的需要。而市場營銷專家將發現,有一群為數不多、但是在經濟上有重大意義的客戶,他們的年齡超出了平均年齡,不使用 Internet 銀行。根據這樣的信息,可以為這些客戶開發專門的產品。在分析過程中,一個關鍵的步驟就是讓用戶理解數據集群步驟的結果。專業的分析師通常并不擅長低級的數據庫編程。
如何將數據挖掘的結果交付給需要它的分析師和雇員?如何顯示結果,以反映用戶所涉及的業務流程?如何滿足安全性需求,使每個用戶只看到他/她應該看到的內容。對于這些問題,要想給出令人滿意的答案,必須將視角從統計分析轉變到實際的終端用戶以及他/她所涉及的業務流程上來。InfoSphere Warehouse 是企業數據倉庫的強有力的基礎。InfoSphere Warehouse 直接在存儲數據的底層 DB2 數據庫中提供數據挖掘功能。整個數據挖掘功能可以通過一個容易使用的、基于 Eclipse 的工具平臺來訪問,而且部署任務可以直接在工具中觸發。
是報告解決方案中的領先者之一。在很多公司中,報告扮演著一個重要的角色,因為它有助于以不同的方式為不同的目標人群合并和可視化相關信息。報告的結果通常是通過對存儲在數據倉庫中的信息應用基本的算術運算而得到的(例如,每月的平均銷售額)。對于高級的分析,例如上面的例子,則超出了報告框架的范圍和能力。因此,可以將兩者相結合,既使用 InfoSphere Warehouse 的可伸縮的、高級的分析功能,又使用 IBM Cognos 已有的、先進的報告功能。接下來的小節展示如何靈活地將 IBM InfoSphere Warehouse Data Mining 與 IBM Cognos 相結合,以實現這個目標。這種集成不需要任何復雜的編程或設置,只需使用純 DB2 SQL 就能完成。
接下來的小節簡要地介紹 InfoSphere Warehouse 和的基本架構。然后將描述如何集成它們。最后,通過一個簡單的、逐步講解的來自醫療保健領域的例子來演示這種集成。這個系列接下來的文章將描述這種集成的一些更高級的技巧和概念。
產品組件
IBM InfoSphere Warehouse
InfoSphere Warehouse 以 DB2 作為數據存儲。它提供了數據庫分區功能(DPF),以便以可伸縮的、安全的、高性能的方式存儲數據倉庫中的數據,并將在線事務處理(OLTP)數據庫的優點與大型數據倉庫的存儲需求相結合。InfoSphere Warehouse 提供了很多不同的用于倉庫管理和分析的工具。這些分析組件有:
InfoSphere Warehouse Design Studio 是基于 Eclipse 的工具平臺,用于為數據挖掘和文本分析設計工作負載規則、數據轉換流和分析流。然后,可以將這些流部署到 InfoSphere Warehouse 管理控制臺,以根據需要進行調度和運行。InfoSphere Warehouse 數據挖掘是用 DB2 存儲過程和用戶定義函數構建的,以利用 DB2 作為執行環境,從而獲得高性能的數據庫內執行。可以通過 SQL 接口或通過 InfoSphere Warehouse 的挖掘流訪問它。
數據挖掘是一項從大型數據集中發現有用信息的任務。一個典型的場景是醫療保健,本文將用它作為實例。如今可以收集到大量的衛生保健數據,這些數據描述很多不同的病人數年來的狀態。這種數據的一個重要用途是在早期發現潛伏性疾病的指標。例如,出于這個目的,可以收集患有心臟病的病人的數據,并分析什么因素與這種疾病有關,例如血壓和體重。這種數據必須在收集后進行轉換,使之能用于數據挖掘。更具體而言,需要有一個表,每個病人對應于其中的一行記錄,表中有一些列,表示關于病人的信息。而且,還應該有一個專門的列表明這個病人是否真正患病。圖 1 顯示了一種可能的模式:
圖 1. 心臟病數據庫表的模式(InfoSphere Warehouse 例子的一部分)
基于這種數據,InfoSphere Warehouse 中的存儲過程可以構建一個模型,對于任何新的病人,該模型可以預測他/她是否可能有潛伏性心臟病。這個過程稱作 “建模”。這樣得到的 XML 數據挖掘模型存儲在數據庫中,可以通過 SQL/XQuery 進行訪問。這個模型可用于兩個目的:首先,可以從這個模型提取信息,以洞察哪些是心臟病的重要指標以及其他統計信息。其次,可以將該模型自動應用到新的數據記錄上。因此,對于在心臟病這一列上還沒有值的任何記錄,可以自動添加這個值,另外再添加一個表示預測的置信度的一個值。這個過程稱作 “評價”。圖 2 通過示意圖顯示了這個過程:
圖 2. 基于歷史數據構建預測模型,然后將此模型應用到新數據上
InfoSphere Warehouse 幾乎包含目前所有數據挖掘算法的極為高效的實現。要調用數據挖掘,首先要將數據寫到一個表中。然后創建一個模型,再將這個模型應用到目標值尚且未知的記錄上,以產生一個預測和該預測的置信度值。所有數據挖掘函數都是作為常規的 SQL 命令來調用的,后面您將看到這一點。這樣便很容易集成到幾乎所有的設置中,例如 Web 服務。
11 Business Intelligence
IBM Cognos 11 Business Intelligence 提供一套完整的商業智能(BI)功能,并且基于一個靈活的面向服務架構(SOA)。它的主要功能有報告、分析、指示板(dashboard)和計分卡(scorecarding)。
報告用于聚合關于業務流程的相關數據,并將它分發給最能從這種特定信息中受益的人。在數據挖掘環境中,這意味著將結果傳遞給最能從生成的業務洞察力中受益的人。
創建和發布業務報告所需的 Cognos 8 組件有:
- Cognos Connection:Cognos 11 功能的 Web 門戶和入口點。用戶可以從這里管理、組織和查看已有的內容,例如報告或指示板。可以從 Cognos Connection 啟動基于 Web 的 authoring studio,例如 Report Studio,以創建新的資源或編輯已有的資源。它還可以用于管理 Cognos 服務器,例如更改訪問限制、導入內容或者更改將一份報告發送給哪些人的列表。
- Cognos Framework Manager:用于 Cognos 11 中使用的數據源的建模工具。例如,在 Cognos 報告中,可以通過在 Framework Manager 中描述一個元數據層,來訪問大多數數據庫和其他數據源,例如 Web 服務中的數據。可以將數據庫表、視圖和存儲過程作為查詢主題添加到 Cognos 包中。Framework Manager 用于導入和合并公司中不同數據源中的信息,以便在 Report Studio 等的 Cognos 11 BI 工具中以一致的方式使用該信息。需要特別注意的是,創建報告時,數據本身還是存放在數據源中,并在那里被訪問。
- Cognos Report Studio:Cognos 11 BI 中的一個基于 Web 的 authoring studio。它用于創建和編輯關于 Framework Manager 中描述的數據的高級報告。它提供了一些強大的功能,例如下鉆(drill-down)、提示和豐富的圖表庫。
要將這種數據放入報告中,需要執行兩個步驟:
- 在 Framework Manager,數據建模者創建 Cognos 元數據,這種元數據從業務的角度描述數據庫中的數據(包括表之間的關系、值的業務名稱等)。
- 創建好元數據后,將它作為一個包部署到 Cognos 8 內容存儲中。然后可以通過 Cognos Connection 和 authoring studio 從這里訪問它。
- 報告設計者進入 Cognos Connection,并在部署的包上創建一個新報告。創建報告后,可以管理目標組和分發形式(例如 email 或 Web 門戶)。
能夠從關系數據源創建報告是 InfoSphere Warehouse 數據挖掘與 IBM Cognos 集成的關鍵。
集成架構
如前所述,報告的內容由一個關系數據源交付的一個結果集組成。一個特定報告的內容由針對一個或多個數據源的一個(動態的)SQL 查詢決定。可以通過以下方式,利用這個基本的通信模式將數據挖掘與 Cognos 報告集成:
- Cognos 可以顯示有評價信息的表,還可能一起顯示置信度信息。
- Cognos 可用于顯示模型信息。該信息是通過表提取器函數或 XQuery 查詢從實際的 XML 模型中提取的。
- Cognos 可以通過調用 SQL 存儲過程來動態地調用數據挖掘和評價。這樣便允許:
- 在報告界面中以用戶提供的不同設置調用數據挖掘
- 在數據的不同子集上調用數據挖掘(例如,創建遞歸下鉆報告)
- 根據用戶的輸入動態地進行記錄
圖 3 總結了所有這些案例中使用的調用模式。
圖 3. IBM InfoSphere 數據挖掘與 IBM Cognos 報告的基本集成架構
可以通過一個存儲過程調用來調用數據挖掘,數據挖掘將在數據庫中創建一個 XML 挖掘模型。可以根據新的數據記錄這個模型,或者將模型信息提取到一個表中。然后,Cognos 可以使用這些表。從 Cognos 報告中,用戶可以通過調用數據庫上相應的存儲過程,交互式地調用數據挖掘。
這種集成帶來了很多好處:
- 它非常簡單,只需要 SQL 方面的知識,而不需要附加的編程。
- 挖掘模型存儲在數據庫中,可以從 Cognos 中安全、有效地訪問它們。
- 通過使用存儲過程,可以從 Cognos 中觸發和控制整個數據挖掘過程。
接下來的小節是這種集成的一個逐步講解的例子,這也是最簡單的例子:對數據庫中的記錄進行評價,并將結果顯示在一個 Cognos 報告中。模型信息的提取和從 Cognos 中對數據挖掘的動態調用將在本系列接下來的文章中談到。
在 報告中使用數據挖掘結果:衛生保健部門的一個例子
這個例子分析一家醫院的病人數據。這家醫院的心臟科有他們的病人的主記錄,以及一些度量指標,例如心率、血壓、膽固醇等。這家醫院針對四種不同的心臟病對病人進行檢查。病人的記錄中有一個列表明他們是否患有四種心臟病之一,y 表示是,n 表示否。圖 1 中描繪了相應的心臟病數據庫表。這個表可以在 InfoSphere Warehouse 附帶的例子中找到。
分析的目標是預測新的病人患上這四種心臟病之一的風險。如果風險較高,則應該立即進行體檢。
這里啟用了風險管理,雖然沒有針對這四種心臟病之一做過專門的檢查,但是已經從一些早期的在其他地方做的體檢得到度量指標。
創建預測模型
首先,基于 HEART 表創建一個預測模型,通過該模型可以預測病人患上心臟病的風險。
創建一個 Data Warehouse 項目:
右鍵單擊 Project Explorer,并選擇 New > Data Warehouse Project(如下面的圖 4 所示)。
圖 4. 創建一個 Data Warehouse 項目
在接下來的向導中,輸入項目名稱,例如:AdvancedAnalytics。然后單擊 Finish。
創建一個空的挖掘流:
- 展開新創建的項目。
- 右鍵單擊文件夾 Mining Flows,并選擇 New > Mining Flow。
- 在出現的向導中,輸入挖掘流的名稱 Heart Disease Risk。
- 在這個例子中,您將使用數據庫。因此,保留默認設置,單擊 Next。
- 選擇 DWESAMP 數據庫,并單擊 Finish。
創建挖掘流:
這時會打開 Mining Flow 編輯器。在挖掘編輯器的右側可以看到一個面板,其中有一些操作符(見圖 5)。可以通過將這些操作符拖放到編輯器畫布上來構建一個挖掘流。
圖 5. Design Studio 中的挖掘流
為了創建用于預測病人患病風險的挖掘模型,可遵循以下步驟:
- 在面板中,從 Sources and Targets 區中選擇一個 Table Source 操作符,將它拖到編輯器上。
- 在表選擇對話框中,展開 HEALTHCARE 模式并選擇 HEART 表,然后單擊 Finish。
- 在面板中,從 Preprocessing Operators 區中選擇一個 Random Split 操作符并將它拖到編輯器上。
- 通過拖動鼠標,將第一個操作符的 Output 端連接到第二個操作符的 Input 端。
- 選擇 Random Split 操作符。
- 在挖掘編輯器下面的 Properties 選項卡中,將測試數據屬性 Percentage 設為 20。這意味著之后我們將使用 20% 的數據來驗證我們的模型。因此,在構建預測模型之前,必須先劃分數據。
- 在面板中,從 Mining Operators 區選擇一個 Predictor 操作符并將它拖到編輯器上。
- 將 split 操作符的 Training Output 端與 Predictor Input Port 相連。
- 選擇 Predictor 操作符。
- 在挖掘編輯器下面的 Properties 選項卡中,選擇左邊的 Mining Settings 選項卡。
- 在 Target column 選擇列表中,選擇 DISEASED 作為要預測的列。
- Design Studio 自動識別出您要預測一個標稱值列,并自動提供可用于這一目的設置(在同一個選項卡中)。在 Algorithm 選擇列表中,選擇 Naïve Bayes。
- 在 Mining Settings properties 選項卡上,選擇 Model Name 選項卡。保留前綴,但是將模型名稱改為 HeartDiseasePrediction。
- 另外,從面板中的 Mining 區選擇 Tester 操作符,并將它拖到編輯器上。
- 將 Predictor 的 Model output 端與 Tester 的 Model input 端相連,再將 Random Split 的 Test output 端與 Tester 的 input 端相連。
- 保存挖掘流,例如單擊編輯器區并按 Ctrl+S。
現在,挖掘流已經可以執行了。
執行挖掘流:
可以執行整個挖掘流編輯器,或者通過右鍵單擊一個操作符并選擇 Run to this step… 只執行挖掘流中特定的路徑。在這個場景中,右鍵單擊 Tester 操作符,選擇 Run to this step…,然后單擊 Finish。這個流生成一個模型,該模型預測患上心臟病的風險,并將它存儲在數據庫中。先在 80% 的數據上對它進行訓練,然后在剩下的數據上對它進行測試。這樣可以估計該模型在新數據上執行的效果。這里只需右鍵單擊 Tester 操作符的 Test Result 端。您也可以看看模型本身。為此,右鍵單擊 Predictor 操作符的 Model 端。
使用挖掘模型對新數據進行評價
評價是指將之前經過學習的模型應用到新數據上。新的數據沒有分類別(這里是指還沒有做過心臟病檢查),評價過程根據挖掘模型將一個預測賦給每個新的記錄。
為評價創建一個新的挖掘流:
執行與創建新的挖掘流中相同的步驟,但是為它提供另一個名稱,例如 Classify New Patients。
創建評價流:
為了創建用于對新病人分類的評價流,可執行以下步驟:
- 在面板中,從 Sources and Targets 區選擇一個 Model Source 操作符并將它拖到編輯器上。
- 在挖掘模型選擇對話框中,展開 classification 模型,并選擇 AdvancedAnalytics.HeartDiseasePrediction 模型。
- 從面板的 Sources and Targets 區中將一個 Table Source 操作符拖到編輯器上。
- 在表選擇對話框中,展開 HEALTHCARE 模式并選擇 HEART 表。可以每晚將這個表裝載到倉庫中,或者每當有新的病人來醫院,并且有必要的度量指標時實時地將這個表裝載到倉庫中。
- 從面板的 Mining Operators 區中將一個 Scorer 操作符拖到編輯器上。
- 將模型和 table source 操作符連接到 scorer。
- scorer 附加 2 個列,其中一個列包含類別(y 和 n),另一個列指定這個類別的確定性。為了存儲這個有評價信息的表,必須以 Table Target 操作符的形式創建一個包含這些列的適當的表。
為此,右鍵單擊 scorer 的輸出端,并選擇 Create Suitable Table…。
- 在出現的對話框中,指定新表的名稱:NEW_PATIENT_CLASSIFICATION,以及將在其中創建這個表的模式:HEALTHCARE。 單擊 Finish。
- 保存評價流。
- 最后,通過右鍵單擊 table target 操作符并選擇 run to this step,執行這個流。
執行這個流后,下方的視圖會顯示有評價信息的表中的示例數據(見圖 6)。如果向右滾動,可以看到 scorer 添加的兩個列。
圖 6. 有示例結果的評價流
第一個附加的列 PREDICTED_CLASS 包含預測。它表明挖掘模型將當前病人歸為哪種類型,將患上(y)還是不會患上(n)這種病。第二個附加的列 CLASS_CONFIDENCE 包含介于 0 到 1 之間的數字,它表明 scorer(根據模型)對于預測有多大的確定性。1 表示 “100% 確信預測的類別是正確的”。
在 Cognos Framework Manager 中創建元數據
在使用挖掘結果創建報告之前,需要定義應該使用哪些資源(數據庫、表或視圖???。Framework Manager 還允許通過定義連接和新列(用表達式)來增加數據源。
這個簡單的例子創建一個 Cognos Framework Manager 報告。定義有評價信息的結果表,并發布元數據。
打開 Framework Manager 并創建一個新項目:
- 可以從桌面啟動 Cognos Framework Manager。
- 啟動后,單擊 Create a new project…。
- 在出現的對話框中,指定名稱 HeartMetaData,并單擊 OK。
- 選擇 English 作為語言,并按 OK 按鈕。
- 由于要從一個 DB2 表創建元數據,所以選擇一個常見的 Data Sources,并單擊 Next。
- 選擇 DWESAMP 數據庫, 并單擊 Next。
- 現在需要選擇要導入為元數據的數據對象。展開 HEALTHCARE 模式和 table 文件夾,選擇在評價流執行期間創建的 NEW_PATIENT_CLASSIFICATION 表。單擊 Next。
- 這個頁面上的設置就完成了,單擊 Import,然后單擊 Finish。
圖 7. Cognos 8 Framework Manager
在 Project Viewer 的左側,可以瀏覽新創建的項目。現在,定義一個附加列,以組合評價流創建的 2 個預測列的洞察力。其思想是以一種容易理解的方式為醫生提供挖掘出的洞察力。
為此,執行以下步驟:
- 展開 DWESAMP。可以看到評價流中創建的表 NEW_PATIENT_CLASSIFICATION。
- 雙擊該表。
- 這時出現 Query Subject Definition 對話框。進入 Calculations 選項卡(見圖 8)。
圖 8. Query Subject Definition 對話框
- 單擊 Add 創建一個通過一個計算定義的新列。這時出現 Calculation Definition 對話框。
- 在 name 域中輸入 Check,并在 Expression definition 文本域中輸入以下表達式(在桌面上的 Calculation Definition.txt 文件中也可以找到這個表達式):
IF ( [DWESAMP].[NEW_PATIENT_CLASSIFICATION].[PREDICTED_CLASS] = 'y')
THEN (IF ([DWESAMP].[NEW_PATIENT_CLASSIFICATION].[CLASS_CONFIDENCE]>0.83)
THEN('necessary') ELSE('maybe'))
ELSE (IF([DWESAMP].[NEW_PATIENT_CLASSIFICATION].[CLASS_CONFIDENCE] > 0.9)
THEN('not necessary')
ELSE('maybe'))
上面的表達式根據 PREDICTED_CLASS(y 和 n)和 CLASS_CONFIDENCE 創建 3 個新的類別。該表達式將預測類別為 y 且相應的置信度超過 83% 的病人定義為高風險病人(意味著需要體檢)。而預測類別為 n 且相應置信度超過 90% 的病人則屬于低風險病人(意味著不必做體檢)。其他病人歸類為中等風險(可能需要體檢)。圖 9 是 Calculation Definition 對話框的一個例子。
圖 9. Calculation Definition 對話框
- 單擊 OK 關閉 Calculation Definition 對話框。
- 可以通過進入 Test 選項卡并單擊 Test Sample 測試這個表達式。
- 單擊 OK 關閉 Query Subject Definition 對話框。
創建一個包并發布它:
- 為了使新創建的元數據可被使用,進入 Project Viewer 并右鍵單擊 Packages 文件夾,然后選擇 Create > Package。
- 在 name 域中,輸入 Heart,并單擊 Next。
- 直接單擊 Next,因為不用做其他事情。
- 在接下來的對話框中,將 DB2 添加到 Available function sets 列表中,然后單擊 Finish。
- 在接下來的對話框中,單擊 Yes 繼續發布過程。
- 在 Publish 向導的 Select publish location 部分,單擊 Next,因為不需要更改什么。
- 這個例子中不必指定安全設置。因此,單擊 Next。
- 然后按下 “Publish” 按鈕。
- 在提示您已成功地發布包的對話框中,單擊 Finish。
創建一個簡單的 Cognos 挖掘報告
Cognos Report Studio 是一個完全基于 Web 的應用程序。可以通過從桌面雙擊 Internet Explorer 圖標(左上角)啟動 Report Studio。
為創建一個簡單的挖掘報告,必須執行以下步驟:
- 在 Welcome 屏幕上,單擊 Create professional reports。
- 在 Select a package 瀏覽器中,單擊您在 Framework Manager 中發布的 Heart 包。
- 在 Welcome 對話框中,單擊 Create a new report or template。
- 選擇空白模板,然后單擊 OK。
- 在 Insertable Objects 面板中,可以在不同的選項卡之間進行選擇。這里選擇 source(Data sources)選項卡。在將數據添加到報告之前,需要一個布局結構。可以從 Toolbox 選項卡得到布局結構,所以現在進入該選項卡。
圖 10. Report Studio
- 從顯示的對象列表中,將一個 Text Item 拖到報告編輯器區(見圖 10)。
- 在文本框中,輸入名稱 Patient checkup recommendation report。
- 在工具箱中找到 List 項,并將它拖到編輯器區。
- 回到 Source 選項卡(Data sources),將 NEW_PATIENT_CLASSIFICATION 表拖到編輯器區中的列表中。
- 可以看到經過分類的病人表,如果向右滾動,還可以看到附加的列。由于只需要在 Framework Manager 中創建的附加列 Check,所以去掉另外兩個列 <PREDICTED_CLASS> 和 <CLASS_CONFIDENCE>。選擇這兩個列的列標題(按住 Ctrl),在選擇的標題上單擊右鍵,并從上下文菜單中選擇 Delete。對于當前的例子,還要移除列 <DISEASED>、<KEYWORDS> 和 <MEDICAL_HISTORY>。
- 現在,需要用綠色突出顯示那些不需要體檢(not necessary)的病人,用紅色突出顯示需要體檢(necessary)的病人,其他人(maybe)則不突出顯示。為此,右鍵單擊 Check 列(注意:單擊列的主體,而不是標題),并選擇 Style > Conditional styles…。
- 在 Conditional Styles 對話框上,單擊左下角的圖標,創建一個新的條件樣式。
- 在接下來的對話框中,Check 列已經被選中。從 Type of conditional style 下拉列表中,選擇 String,并單擊 OK。
- 在接下來的對話框中,單擊左下角的圖標,并選擇 Select Multiple Values…。 Report Studio 直接從數據庫獲取可能的值(注意:Report Studio 可能要求提供 DB2 用戶 ID 和密碼)。
- 首先將值 necessary 添加到選擇的列表中,并單擊 OK。
- 重復步驟 14 到 15,添加值 not necessary。
- 對于值 not necessary,從 Style 下拉列表中選擇 Excellent。
- 對于值 necessary,從 Style 下拉列表中選擇 Poor。
- 連續兩次單擊 OK。
- 選擇標題,單擊 Properties 面板上的 Font 彈出菜單,更改標題的樣式。
- 單擊 Run report 按鈕查看產生的報告。
圖 11 顯示最后的報告。最右邊的列顯示風險類別。
圖 11. 心臟病風險報告
結束語
本文描述了可以將 InfoSphere 數據挖掘簡單地集成到 報告中的基本架構。集成對于接受數據挖掘有重要的影響,因為結果的使用者不必知道關于挖掘過程的任何細節。本文提供了源于衛生保健部門的一個實用的例子,這個例子展示了如何通過很少的開發實現簡單的集成。
除此之外,還有其他可能性。接下來的文章將討論一些更高級的話題,例如鉆取、framework manager 中度量指標的使用以及從 Cognos 報告中動態調用數據挖掘。
cognos下載地址提供給感興趣的朋友,可以去試試,效果非常驚艷喲!!!
詳情請咨詢!
客服熱線:023-66090381
標簽:
大數據BI數據可視化數據分析
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn