打破認知:程序設計=算法+數據結構?

大家好,我是陳暘,也是極客時間《數據分析實戰 45 講》專欄作者。很榮幸接到極客時間的邀請,來到極客Live和大家分享關於“數據分析”的話題。這次分享會共分爲五部分,來爲大家答疑解惑。

我們爲什麼要學數據分析?

學習新的數據結構和新的數據算法將會是新時代我們的使命。

很多寫程序的人都聽說過一個公式:程序設計=算法+數據結構,我也相信很多人認爲算法是編程裏的基礎。

在我看來,這個公式應該過時了。從我10歲開始學編程時,我就被灌輸了這個認知。所以,那時候我們學二叉樹,學隊列,學一些數組的表達方式,包括一些快速排序、排序的方法等等。

而現在,很多的數據結構,包括我們排序的算法,都已經不需要我們去編寫代碼了。我們直接調用一行命令,通過封裝的方式,就可以拿來即用。

我再舉個簡單例子,在我很小的時候,有一門課叫彙編語言。它非常基礎,比如,把一個字母A打到這個顯示屏裏面分多少步?它分了32個步驟,是如何從計分器裏面讀出去,最後讓顯示器裏面顯示出來。這是一個很簡單的事,現在大家已經不需要關注到彙編語言的底層,很多的語言越來越高級,我們的知識已經封裝的越來越完善。

我覺得在新的時代裏面,如何去更新我們新的數據結構和新的數據算法,這是我們的使命。再給大家一個數據,我們近三年,所有互聯網數據的總和等於4萬年數據的總和。知識處於一個非常爆炸的過程,而且我們相信,在未來的三年,它整個的總和又是以前的雙倍。

在這個海量的數據時代裏面,它需要更加新型的存儲的方式,舉個例子,我們現在會接觸到矩陣的運算,包括這些大型矩陣之間的向量表達方式和特徵的抽取,包括以前我們可能會關注到一些快速排序等一系列的算法。我們現在最主要關心的是,如何從這些數據裏面找出關聯關係出來,如何進行分類,如何進行聚類?

這個是在新的一個時代裏面的算法的數據結構和基礎的能力,也是一個非常重要的核心,也是這個市場上一個新的需求。我專門做了一個關於“程序員薪資情況”的調查,我發現在招數據分析,尤其是算法數據挖掘工程師,他們的薪資普遍比其他的工程師薪資要高。

爲什麼?一方面是企業及整個市場的需求都很大,以數據挖掘爲例,三到五萬的月薪並不奇怪,甚至更高的月薪都會存在;另一方面市場缺口也很大,在2020年,就是一年之後,整個數據人才的需求量是現在的兩倍,而且它能創造出來更多的價值。

總結而言,我們是不是需要更新我們20年前的認知?那一陣學的算法和數據結構基礎,是否能讓我們更跟上時代的步伐?

這也是我開設《數據分析實戰 45講》專欄的一個初衷,想讓大家通過這個專欄的學習,掌握到新的數據結構和新的算法的能力。

沒有編程基礎,也能學好數據分析

請,不要灰心。

有編程基礎和沒有編程基礎是相對的,就算你有編程基礎,但你未必有數據編程的能力。我想說的是,如果你沒有編程基礎,也不要灰心。因爲數據分析是一個很新的領域,這幾年也是非常的火爆,而且出現了很多新的理論。可能在 5 年前,有些理論是之前沒有的。所以,無論是新人還是老人,起跑線都是很接近的。請,你不要灰心。

第二方面,我在這個專欄着重重強調的學習方法是 MAS 學習方法。

M-Multi-Dimension:想要掌握一個事物,就要從多個角度去認識它。也就是說要學習數據分析,你需要從不同的緯度跟人家去打交道,不管是知識概念的緯度,從工具的緯度,還是從實戰的緯度,你都需要與其建立起聯繫。

A-Ask:不懂就問,程序員大多都很羞澀,突破這一點,不懂就問最重要。以往如果我們沒有專欄可以一對一去互動,或者答疑解惑,你可能通過網上去找答案,但是網上的答案有的時候不一定是正確的,或者你不一定能找到答案,但是通過專欄留言、社羣答疑,我可以幫你來去進行解答,這是非常好的方法。(進入數據分析社羣,可加專欄運營Monica微信:imonica,瞭解入羣規則。)

S-Sharing:最好的學習就是分享。用自己的語言講出來,是對知識的進一步梳理。我看到專欄裏的很多同學,現在逐漸養成分享的習慣。當你把這個內容分享給其它人的時候,這個內容纔是你自己的,而不是老師的。我非常鼓勵大家去寫筆記,也有好多人把自己整理的內容放到幕布或者博客上面,這是非常好的方法。


其中一個用戶總結的思維導圖,很贊!

我總結以下兩點:
1、如果你沒有編程的基礎,沒有關係,你可以跟上我的專欄,你跟大家的速度是一樣的,甚至你會比別人跑得更快;
2、另外,掌握好的學習方法真的非常重要,MAS 是個很不錯的學習方法。這也是我專欄想達到的一個目的,授人以魚不如授人以漁。

即使數學高考考9分,也不妨礙你學習數據分析

高考是封閉環境下的能力測試,考的是你的計算能力


哈哈,數學高考考 9 分也是非常了不起的一件事。我是這麼看的,高考的是計算能力。舉個例子,讓你去求一個排列組式。我們知道,在實際的工作中,我們做的不是閉卷答案,在開卷環境下,你是可以用計算器或者提問的方式去解決問題。就是說,你現在的工作環境和以前上學的考試是兩種完全不同的狀態。工作上,最重要的方法是:“不懂就問“,你求助於別人,這是最省時省力的解決問題的方法。

另一方面,有些人跟我說,他的計算能力、數學能力都比較差。其實,這是有解的。在我的專欄裏,我會讓你去了解一些概念,你知道該怎麼去用就好了,你完全沒有必要去做推導。你只需要知道,我要用哪個公式,或者說我要用哪個算法,這個算法可能抽樣出來就是一行代碼,如果是可視化工具,根本就不用代碼。

總而言之,即使你的數學基礎不好,不妨礙你去學這個專欄,掌握它的概念以及方法。

很多人會望而卻步,覺得中間是否需要一些數學的推導和運用。其實,大家應該從白話的角度去理解這個專欄,因爲專欄裏會有很多案例、比喻等等,會讓大家更容易去理解概念,比如什麼叫數據挖掘,什麼叫分類,什麼叫聚類,什麼叫關聯分析。

打個比方,你同時認識了兩個漂亮女孩,你要追哪一個成功概率比較高?這就可以用到數據分析的一些原理,比如,你想知道這個漂亮女孩,她到底是御女還是蘿莉?這就會用到分類的算法;你認識女孩的渠道比較多,比說朋友會介紹,或者網上認識等等,就會要用數據集成的知識,因爲不同的渠道你需要彙總到同一個渠道里面。不同朋友推薦同一個女孩,這時候就要做數據清洗了。

再舉個例子,假設你認識的女孩數量不只兩個,假設有五萬個,這時候決策該怎麼做?那你要把這些女孩進行分組,把五萬個人劃分成五個組,每個組採用相同的決策,這叫聚類。聚類的方式是把一個個緯度的目標換成一個緯度,由原來的五萬人變成了五個組,就大大提升了效率,採用一種降緯的思維。最後,這個數據它產生什麼樣的結果,你就需要採用數據可視化的方式幫你實現:我到底得出什麼樣的規律,或者我最後採用什麼樣的決策。

通過這個例子,我們可以看習數據挖掘對我們實際的幫助是很大的,它可以幫助你解決實際中遇到的一些問題,抽象出來,利用數據挖掘、清洗等方式去解決。

數據分析學到什麼程度,能找到工作?


我把它分成三個階段:初級,中級和高級。

初級:你需要了解基本的概念,會使用簡單的工具。比如說你要做數據採集的話,你不會 Python 沒有關係,我會教你八爪魚怎麼使。因爲它是一個可視化的軟件,拿來即用。另外,我也會講解一些軟件的使用,如果你也能學會用一些軟件的話,也可以拿到很高的薪水。

中級:需要自己動手去寫一些代碼。在這個專欄裏,我會主推 Python 去做數據分析,比如分類的算法、聚類的算法、關聯分析的算法,包括數據預測。而一個算法需要一個好的語來實現言而,Python 是非常直接的語言,會讓你得到更多可視化的結果。

高級:熟練度,還有就是效率上的提升。我舉個例子,我之前做過深度學習,最開始是去調試一個圖像識別算法過程,需要兩到三週的時間。後來,我有了更多的經驗之後,我知道哪些參數該進行優化,且這個參數在什麼樣的情況下可以採用什麼樣的收斂模型,中間的層次該怎麼去調。之前需要花三週時間去完成的事情,就被縮短爲三天,整個工作效率提升了 10 倍。

在我的專欄裏,我特意設置了一個專屬題庫。爲什麼我要做題庫吶?因爲,我覺得知識要被消化吸收最快的方法,就是練習,不斷地反覆練習。只有練習了,把知識點融會貫通,知識才會是你的。這些題庫,我也都做會講解。

我在專屬題庫裏列了十多個項目,都是非常實戰的項目。多練習、多實戰,你完全可以把這些項目寫到自己的簡歷裏,包括數據的描述及解題過程,最好用自己的話去做總結,並用博客的方式去呈現。這是非常棒的經歷。

Q&A

問:本人已經工作7年了,做運維開發也有5年之多,主流語言也是Python,個人對大數據開發,數據分析,數據挖掘之類的工作也特別感興趣,所以毫不猶豫就買了老師的課程。之前空閒之餘也看過相關數據挖掘的知識,比如svm xgboot 手寫體之類的。但找類似的工作突然發現沒有底氣,原因是沒有數據挖掘相關的工作經驗,我怕以後轉行越來越困難,再加上一旦轉行沒有我現在的工資高,想想又放棄了,又不甘心,我該如何抉擇?

答:首先這是一個先有雞,還是先有蛋的問題。
我想你是認可數據挖掘,也對數據分析很有興趣。最着急的是簡歷中沒有相關的經驗。
確實很多公司很看重背景,而且你工作7年,又不能從初級職位開始,即使你對數據分析很感興趣。
我建議你還是以豐富簡歷爲目標,在簡歷中要想辦法增加 數據分析,數據挖掘的比例。
我的專欄裏會有10+個項目,當然這些項目都不是太複雜。我建議你把它都做一遍,然後用自己的語言做項目總結,這些可以放到簡歷中。作爲數據分析,數據挖掘的經驗
沒有其他的捷徑,如果你在這方面的簡歷不豐富 HR很難給你一個滿意的薪水。所以你就需要在工作之外,自己來訓練,整理這些項目筆記。我專欄中的很多數據都來自於Kaggle,這裏有很多實戰的項目,你如果完成了我的專欄,還想進一步豐富項目經驗,可以做更多Kaggle項目。同樣採用我的方式,把它作爲項目背景,自己寫項目總結,作爲項目經驗。

問:數據挖掘預測部分會有哪些內容?

答:數據挖掘,我列了10大算法,都是最經典的算法,包括:決策樹C4.5,CART,樸素貝葉斯、SVM、KNN、K-means、EM聚類、Apriori、PageRank、Adaboost。這些主要是分類、聚類、關聯分析、連接分析的算法。當然現在深度學習很火,後面如果大家有需求的話,可以在算法介紹完之後,加餐個深度學習。不過這裏最好要有GPU運行環境了,要不運行起來會有些吃力。

問:推薦一些數據分析的書

答:思維:《思維簡史:從叢林到宇宙》;
數據處理:《數據挖掘:概念與技術》;《Pentaho Kettle解決方案》;《精益數據分析》;《Small Data》;《利用Python進行數據分析》

點擊《數據分析實戰45講》,現在正在限時優惠,原價 ¥99,限時優惠 ¥79,僅限3天!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章