數(shù)據(jù)挖掘算法跟數(shù)據(jù)結(jié)構(gòu)中的算法有區(qū)別嗎

學(xué)習(xí)數(shù)據(jù)挖掘算法也有一段時間了,某天小伙伴問我,你學(xué)的這個跟我們之前學(xué)校學(xué)的數(shù)據(jù)結(jié)構(gòu)算法有什么區(qū)別嗎。我很快回答:當(dāng)然有區(qū)別啊。其實過后細(xì)想,究竟有啥區(qū)別。就是因為這個問題,才有了今天這篇文章。

那么在我們開始前,可以先暫停閱讀一分鐘,回憶下已了解數(shù)據(jù)結(jié)構(gòu)的算法還有數(shù)據(jù)挖掘算法,思考下這兩種算法有區(qū)別嗎。

下面我們稱數(shù)據(jù)結(jié)構(gòu)算法為經(jīng)典算法。

首先我們來看看算法是什么

看看維基百科的定義

算法(algorithm),在數(shù)學(xué)(算學(xué))和計算機(jī)科學(xué)之中,為任何良定義的具體計算步驟的一個序列,常用于計算、數(shù)據(jù)處理和自動推理。精確而言,算法是一個表示為有限長列表的有效方法。

好吧有點(diǎn)拗口,解釋成大白話就是:

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

image

經(jīng)典算法是什么

是對存儲的數(shù)據(jù)進(jìn)行處理,最終得到問題的答案。

再翻譯成大白話就是

是對確定的數(shù)據(jù) 使用如數(shù)組,鏈表,隊列,圖等一系列存儲結(jié)構(gòu)進(jìn)行存儲,通過優(yōu)化時間復(fù)雜度以及空間復(fù)雜度提高效率來對數(shù)據(jù)進(jìn)行處理,得出問題答案的過程。

下面是一些重要的經(jīng)典算法類別

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

常見的經(jīng)典算法有

分治法,動態(tài)規(guī)劃法,貪心算法等。

image

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

例如,對已知的一組亂序的數(shù)字進(jìn)行排序。又或者如果一個數(shù)組包含多個重復(fù)元素,如何找到這些重復(fù)的數(shù)字?

像上面的問題我們就可以運(yùn)用選擇我們熟悉的排序算法進(jìn)行排序。對于第二個問題可以運(yùn)用哈希表這種數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,然后遍歷統(tǒng)計元素出現(xiàn)次數(shù)得出我們問題的答案。

我們可以發(fā)現(xiàn),經(jīng)典算法主要針對確定的數(shù)據(jù)進(jìn)行合適的存儲處理,并通過增刪改查一系列操作后達(dá)到一個比較確定的結(jié)果,不存在不確定成分。同時非常注重效率。

數(shù)據(jù)挖掘算法是什么

數(shù)據(jù)挖掘算法是一類從數(shù)據(jù)中運(yùn)用數(shù)學(xué)工具自動分析獲得規(guī)律,并利用規(guī)律對未知數(shù)據(jù)進(jìn)行預(yù)測的算法,注重數(shù)據(jù)來源以及數(shù)據(jù)規(guī)律。

一般分為三類:監(jiān)督學(xué)習(xí)( Supervised Learning ),非監(jiān)督學(xué)習(xí)( Unsupervised Learning ),還有強(qiáng)化學(xué)習(xí)( Reinforcenment Learning )。比較常見的數(shù)據(jù)挖掘算法有KNN算法,決策樹,貝葉斯,線性回歸,支持向量機(jī),神經(jīng)網(wǎng)絡(luò)等等

image

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

例如根據(jù)已有的房價信息預(yù)測某一樓盤的房價;或者給某部電影分類

像上面的問題我們可以運(yùn)用線性回歸方法對房價進(jìn)行預(yù)測??梢愿鶕?jù)電影特征使用KNN或者決策樹等分類算法進(jìn)行分類。

我們可以發(fā)現(xiàn)數(shù)據(jù)挖掘算法要解決的問題一般是沒有精確解的,并側(cè)重于從已有數(shù)據(jù)里面挖掘出未知的知識。像上面的例子,我們一開始并不知道房價 具體是有哪些影響因素,電影分類有哪些影響特性,全都是算法依據(jù)統(tǒng)計原理,數(shù)據(jù)規(guī)律自己在‘學(xué)習(xí)’中得出的,而且最后得出的結(jié)果也不一定確定

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

從目的做比較

經(jīng)典算法:對確定的數(shù)據(jù)進(jìn)行顯而易見的操作,并注重效率(時間復(fù)雜度和空間復(fù)雜度)。例如排序。

數(shù)據(jù)挖掘算法:建立一個模式,學(xué)會對未知的數(shù)據(jù)進(jìn)行預(yù)測或者分類。

從應(yīng)用數(shù)學(xué)的深度以及廣度做比較

經(jīng)典算法:初等數(shù)學(xué);簡單概率論,簡單離散數(shù)學(xué)。

數(shù)據(jù)挖掘:高等數(shù)學(xué);概率論,線性代數(shù),數(shù)理統(tǒng)計,微積分,運(yùn)籌學(xué),信息論,最優(yōu)化方法。

從評價標(biāo)準(zhǔn)做比較

經(jīng)典算法:執(zhí)行效率;時間復(fù)雜度,空間復(fù)雜度。

數(shù)據(jù)挖掘: 準(zhǔn)確率;泛化能力,經(jīng)驗風(fēng)險,結(jié)構(gòu)風(fēng)險。例如正確率,召回率。

從解決問題的種類做比較

經(jīng)典算法:解決傳統(tǒng) CS 領(lǐng)域問題;對數(shù)據(jù)進(jìn)行組織并進(jìn)行'CURD'操作。

數(shù)據(jù)挖掘:預(yù)測,分類等未知問題;研究數(shù)據(jù)內(nèi)在的規(guī)律。

舉個通俗的例子,比如你要去某個風(fēng)景區(qū),經(jīng)典算法可以跟你說怎么走最快,數(shù)據(jù)挖掘算法告訴你在那個風(fēng)景區(qū)哪個地方可能最好玩。

總結(jié)

區(qū)分它們二者是為了讓我們更好得運(yùn)用它們解決問題。 實際操作上,運(yùn)用數(shù)據(jù)挖掘算法時會大量應(yīng)用經(jīng)典算法來提升計算效率。

算法的核心是創(chuàng)建問題抽象的模型和明確求解目標(biāo),之后可以根據(jù)具體的問題選擇不同的模式和方法完成算法的設(shè)計。 而經(jīng)典算法和數(shù)據(jù)挖掘算法就是運(yùn)用了不同的模式和方法去解決不同的問題而已,各司其職。

所以最后我們可以得出,經(jīng)典算法和數(shù)據(jù)挖掘算法本質(zhì)都是算法,但是運(yùn)用的底層邏輯以及解決的問題的種類不一樣。不同的時代有不同的問題要解決,沒有高低之分,沒有說哪個更重要哪個更不重要的說法。

本文首發(fā)微信公眾號“哈爾的數(shù)據(jù)城堡”.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容