資料探勘演算法跟資料結構中的演算法有區別嗎

蕉爺發表於2019-05-09

學習資料探勘演算法也有一段時間了,某天小夥伴問我,你學的這個跟我們之前學校學的資料結構演算法有什麼區別嗎。我很快回答:當然有區別啊。其實過後細想,究竟有啥區別。就是因為這個問題,才有了今天這篇文章。

那麼在我們開始前,可以先暫停閱讀一分鐘,回憶下已瞭解資料結構的演算法還有資料探勘演算法,思考下這兩種演算法有區別嗎。

下面我們稱資料結構演算法為經典演算法。

首先我們來看看演算法是什麼

看看維基百科的定義

演算法(algorithm),在數學(算學)和電腦科學之中,為任何良定義的具體計算步驟的一個序列,常用於計算、資料處理和自動推理。精確而言,演算法是一個表示為有限長列表的有效方法。

好吧有點拗口,解釋成大白話就是:

是解決問題的一系列步驟。

 

經典演算法是什麼

是對儲存的資料進行處理,最終得到問題的答案。

再翻譯成大白話就是

是對確定的資料 使用如陣列,連結串列,佇列,圖等一系列儲存結構進行儲存,通過優化時間複雜度以及空間複雜度提高效率來對資料進行處理,得出問題答案的過程。

下面是一些重要的經典演算法類別

搜尋,排序,插入,更新。

常見的經典演算法有

分治法,動態規劃法,貪心演算法等。

 

下面我們看下例子,加深理解。

例如,對已知的一組亂序的數字進行排序。又或者如果一個陣列包含多個重複元素,如何找到這些重複的數字?

像上面的問題我們就可以運用選擇我們熟悉的排序演算法進行排序。對於第二個問題可以運用雜湊表這種資料結構進行儲存,然後遍歷統計元素出現次數得出我們問題的答案。

我們可以發現,經典演算法主要針對確定的資料進行合適的儲存處理,並通過增刪改查一系列操作後達到一個比較確定的結果,不存在不確定成分。同時非常注重效率。

資料探勘演算法是什麼

資料探勘演算法是一類從資料中運用數學工具自動分析獲得規律,並利用規律對未知資料進行預測的演算法,注重資料來源以及資料規律。

一般分為三類:監督學習( Supervised Learning ),非監督學習( Unsupervised Learning ),還有強化學習( Reinforcenment Learning )。比較常見的資料探勘演算法有KNN演算法,決策樹,貝葉斯,線性迴歸,支援向量機,神經網路等等

 

下面我們看下例子,加深理解。

例如根據已有的房價資訊預測某一樓盤的房價;或者給某部電影分類

像上面的問題我們可以運用線性迴歸方法對房價進行預測。可以根據電影特徵使用KNN或者決策樹等分類演算法進行分類。

我們可以發現資料探勘演算法要解決的問題一般是沒有精確解的,並側重於從已有資料裡面挖掘出未知的知識。像上面的例子,我們一開始並不知道房價 具體是有哪些影響因素,電影分類有哪些影響特性,全都是演算法依據統計原理,資料規律自己在‘學習’中得出的,而且最後得出的結果也不一定確定

下面我們從不同角度再具體比較兩種演算法

從目的做比較

經典演算法:對確定的資料進行顯而易見的操作,並注重效率(時間複雜度和空間複雜度)。例如排序。

資料探勘演算法:建立一個模式,學會對未知的資料進行預測或者分類。

 

從應用數學的深度以及廣度做比較

經典演算法:初等數學;簡單概率論,簡單離散數學。

資料探勘:高等數學;概率論,線性代數,數理統計,微積分,運籌學,資訊理論,最優化方法。

 

從評價標準做比較

經典演算法:執行效率;時間複雜度,空間複雜度。

資料探勘: 準確率;泛化能力,經驗風險,結構風險。例如正確率,召回率。

 

從解決問題的種類做比較

經典演算法:解決傳統 CS 領域問題;對資料進行組織並進行'CURD'操作。

資料探勘:預測,分類等未知問題;研究資料內在的規律。

 

舉個通俗的例子,比如你要去某個風景區,經典演算法可以跟你說怎麼走最快,資料探勘演算法告訴你在那個風景區哪個地方可能最好玩。

總結

區分它們二者是為了讓我們更好得運用它們解決問題。 實際操作上,運用資料探勘演算法時會大量應用經典演算法來提升計算效率。

演算法的核心是建立問題抽象的模型和明確求解目標,之後可以根據具體的問題選擇不同的模式和方法完成演算法的設計。 而經典演算法和資料探勘演算法就是運用了不同的模式和方法去解決不同的問題而已,各司其職。

所以最後我們可以得出,經典演算法和資料探勘演算法本質都是演算法,但是運用的底層邏輯以及解決的問題的種類不一樣。不同的時代有不同的問題要解決,沒有高低之分,沒有說哪個更重要哪個更不重要的說法。

 

本文首發微信公眾號“哈爾的資料城堡”.

相關文章