一篇文章看懂數據挖掘,大數據,機器學習
01-26
由於實驗室的項目需要,從研二起我開始學習數據挖掘與機器學習。秋招時很幸運拿到了觸寶數據挖掘工程師的offer,可以在這個方向一直做下去。因為這個方向近年來比較火,我接觸的一些朋友聽到我做這方面都蠻好奇,也經常有朋友或學弟妹問我數據挖掘該怎麼學習,今天我就用這篇文章介紹這一點。
推薦閱讀:
數據挖掘,大數據可以做什麼?
它可以讓我們擁有先知的力量,以下是說明。1.我們的生活被數字化了。現在我們出行可能要靠滴滴,靠摩拜單車,上班要打卡,吃飯點美團,手機記錄了我們的生活軌跡。
對於一家商店,一個企業,它們的經營數據都被各種管理軟體記錄下來了。未來當可穿戴設備流行起來,我們的心跳呼吸都會被記錄下來作為數據。也就是說當發生的事都被數據化。世界的運行可以被計算機「理解」了。2.如果模式不變,過去=未來。一個人的生活軌跡,大多數時候是工作日三點一線,節假日度假或者在家窩著。這個規律是穩定的。一個商店在一天內什麼時候生意最好,什麼時候生意最差,這個是穩定的。一家企業什麼季節用工量大,什麼季節用工量小,這個是穩定的。由1、2點得到結論=>計算機可以根據歷史預測未來。計算機獲取了過去的數據,如果過去的規律在未來不變。它能夠預測出一個人在工作日,節假日的生活軌跡。=>給出相應的促銷,廣告信息。它能夠預測出一個商店什麼時候生意好,什麼時候生意差。=>給出最好的商店經營策略。
它能夠預測出一家企業什麼季節用工量大,用工量小。=>制定出最優的企業運營策略。當未來會發生的一切都可以預料,你就可以採取最佳的應對辦法。就好像黑客帝國中里昂,能夠清晰地看到子彈襲來的軌跡,他就能夠輕易地躲開所有子彈。這就是數據挖掘的力量。之所以媒體的宣傳中數據挖掘和大數據總是一起出現,是因為在數據量很小的情況下,計算機是無法總結出規律的,大數據是預測的基礎。數據挖掘的就業前景如何?
數據挖掘的行業前景是看好的,上一個行業革命中,我們使用各種電子管理軟體取代了人力。現在這些軟體產生了越來越多的數據,行業的下一個訴求是從這些數據中提取信息。Glassdoor是美國一家做企業點評與職位搜索的網站,它新發布的全美國50個最佳工作名單,數據科學家排名第一。top10中有一半與數據有關[1]。但它在國內的就業形勢並不好,找一份對口的崗位很難,見知乎問題"今年進互聯網公司為什麼這麼難?(數據挖掘方向)"下「嚴昕」的回答[2]。原因1是國內的數據挖掘仍在初始探索的階段,並沒有大規模的進入應用。崗位也沒有大數量的產生。原因2是該崗位門檻較高。企業很需要能熟練進行數據分析,帶來商業價值的員工,但大部分剛進入這一領域的同學無法做到這一點。另一方面看,高門檻也是機會,一旦你跨過了這個門檻,你所掌握的技能就擁有更大的稀缺性。數據挖掘,大數據,機器學習,他們分別是什麼?
大數據(big data)
當數據量很大時,一台電腦就無法處理了。比如一個很大的txt文件,10個GB,你在windows下是打不開的,雙擊後電腦會卡死半天,最後報個錯了事。在企業中的數據,比如一個網站運行的日誌,或一家企業的經營信息,很容易到達這個級別,這個時候用任何普通的分析軟體,打都打不開,機器直接卡死,更別說分析了。大數據技術就是用來解決這個問題的,它可以理解為一個特別的軟體,使得可以把一個文件分成很多小的片段。用多台電腦分別處理,進行你想要的操作,最後把操作結果匯總到一台電腦上展示。這個分散再合併的過程,我們稱作MapReduce。執行這一操作最常用的軟體,叫hadoop。hadoop本身解決了最基本的問題,圍繞它還有一系列相關軟體(pig,zookeeper,hive),讓這個過程變得更加容易使用。hadoop以及這些圍繞它的相關軟體就可以稱為大數據技術。這些軟體都是免費的,所有人都可以無償使用,或根據自己的需要對軟體做改動。還有一些其他的大數據軟體,hadoop是最具代表性的。其實hadoop的原理最早是google發明的,google因為業務量大的原因,最早遭遇了大數據處理問題。他們解決了這一問題後用一篇論文把hadoop的原理公布了出來,但自用的軟體源碼沒有公布。後來隨著數據量的增大,大家也紛紛遭遇大數據問題,通過谷歌論文知道怎麼解決,但沒有軟體用,只好合力自己擼了一個山寨產品hadoop出來。再後來因為hadoop免費,很多公司都紛紛把它應用在自己的產品中,它變成了事實上的標準。機器學習(machine learning)我們上文提到了對數據文件進行操作,假設這個數據文件里是消費者的購物信息,統計總購物數量,某個消費者買了多少東西。這都是簡單的分析操作。但如果要統計不同消費者間的相似度,對某個消費者的喜好進行猜測,甚至預測某些消費者的年齡性別。這就需要更複雜的計算了。這些更複雜的計算,我們稱之為演算法。機器學習就指代這樣一大堆用於數據挖掘的演算法,它們包括邏輯回歸,決策樹,協同過濾等。這些演算法的總數量可能非常多,但在企業中常用的可能只有十幾種。近來非常火熱的神經網路也是機器學習演算法中的一種。數據挖掘(data mining)利用機器學習演算法可以做到利用舊數據預測新數據@#,也就是說數據挖掘的神奇之處是與它密切相關的。然而任何機器學習演算法缺乏了大量歷史數據的支持,其效果也會大打折扣,一個演算法再奇妙,也沒法根據一兩條數據得到什麼信息。可見大數據技術為機器學習提供了運行的基礎。因此可以把數據比喻成食材,大數據技術比喻為廚具,機器學習比喻為烹飪的過程。把食材變成一頓滿漢全席,從數據中提煉價值就是數據挖掘的概念。數據挖掘從業者的方向有哪些?
上文談了大數據與機器學習,最主要的就是這兩個方向:
1.大數據工程師的任務是維護大數據架構,數據倉庫等的正常運行。2.機器學習演算法工程師的職責是為演算法調優,選擇最符合業務要求,性能又最好的演算法。其他方向有:3.進行初期數據分析,或對小批量數據進行分析主要使用統計學知識,專職統計學分析的崗位稱為數據分析師。ps:其實運用機器學習演算法的場景其實不多。4.對數據分析結果進行展示,畫出餅狀圖,柱狀圖等,要用到數據可視化技術。專職這一崗位的稱為數據可視化工程師。事實上:1與2的描述是極端的兩級,大多數人可能是數據挖掘工程師的角色,他們既要懂演算法,也要會使用大數據工具操作數據。對兩方面都有了解才能展開工作。包括3,4。數據團隊的一份子可能會有其中的多種技能,但就好像復聯一樣,最好每人有不同的專長。總結來說,數據團隊成員的選修技能:1.計算機基礎2.機器學習演算法3.統計學
4.可視化技能5.大數據技術必修技能:1.高等數學:這是推導一些演算法的基礎。2.英語閱讀:很多該領域的工具是全英文的,最新的的學習資料也都是英文的。3.編程技能:所有和數據有關的操作都需要在計算機上運行,都需要編寫代碼。自學成為數據挖掘工程師,有可能嗎?需要怎麼做?我的數據挖掘知識就是自學的,偏重於機器學習方向,因為是自己摸索,在一些沒用的資料上浪費了很多時間 /(ㄒoㄒ)/~~。現在你的運氣很好啦,經我反思總結的最優學習路徑和學習資料在「機器學習自學指南」這篇文章中給出。大概學習時間是半年。文章地址是: 機器學習自學指南 - 知乎專欄1. Data Scientist - best job in America2. 今年進互聯網公司為什麼這麼難?(數據挖掘方向) - 知乎推薦閱讀:
※【機器學習】如何做出一個更好的Machine Learning預測模型
※R之方差分析
※玩點好玩的--使用馬爾可夫模型自動生成文章
※RStudio | R語言應用及發展峰會(精華分享)