大數據和人工智能工程上的一些點

大數據

大數據這個詞最早出現在上世紀90年代的美國,直到2012年後才火起來。大數據沒有一個明確的概念,之所以稱之為大是因為數據量太大超過了單臺計算機的資源,這時就需要分佈式的數據處理工具,以便能在用戶可容忍的時間內進行數據處理。大數據從業人員肯定會去了解谷歌的mapreduce論文和hadoop開源工具。然而海量數據本來是靜態,只有通過對數據進行分析和利用才能讓數據產生價值。正所謂量變產生質變。

人工智能

人工智能在1956年的達特茅斯會議上被提出來,它研究的是如何製造智能機器或模擬人類的智能行為。大數據與人工智能之間可以說是相輔相成,人工智能的基礎是數據,而數據的利用又離不開人工智能。各個領域海量數據的收集,並進行人工處理標識後成為人工智能學習的指導數據。人工智能研究的方向主要有:模式識別、機器學習、機器翻譯、自然語言處理、計算機視覺、專家系統、邏輯推理等等。

機器學習

機器學習就是利用事物本身具有的數據特徵用數學來表達並構建模型,然後完成既定任務,總的來說模型就是特徵到任務結果的某種數學規律。對於實際工程中,我們的模型是能儘量簡單就儘量簡單,模型並非是看起來高端才牛逼,真正牛逼的模型是簡單又有效。機器學習的數學知識涉及到高等數學、線性代數、概率論、數理統計、最優化理論、數理邏輯等等。

常見機器學習算法

機器學習常見的算法涉及以下:

  • 線性迴歸,比較簡單且直觀的迴歸算法,線性迴歸可以有n個屬性值,然後每個屬性的線性組合組成一個預測函數,通過定義誤差函數然後最小化樣本整體的誤差來確定預測函數的參數。
  • 邏輯斯蒂迴歸,可以說它是廣義線性模型,原來的線性迴歸無法用於分類任務,那麼通過一個sigmoid函數可以將其用於分類任務,這便是邏輯斯蒂迴歸。線性函數被映射到了S函數中,以0.5為分割點可作為二分類。邏輯斯蒂迴歸往多分類推廣則變為softmax迴歸,可用於多分類任務。
  • 樸素貝葉斯,它是概率論中非常經典的方法,核心就是貝葉斯定理,通過條件獨立假設來簡化模型,通過樣本來學習聯合概率分佈,其中涉及到先驗概率分佈和條件概率分佈。
  • 決策樹,根據屬性構造一個樹形的決策策略,按各個屬性值不斷往下便能確定最終的結果。訓練時可以以信息增益作為準則。
  • 支持向量機,它規定了最優分類線不僅能正確將兩類分開,而且還要使分類間隔最大,當然對於高維空間則是超平面。它的本質問題是凸二次規劃問題的極小問題,這方面涉及到凸優化理論。對於線性不可分的情況可以引入核函數,將低維空間線性不可分的點映射到高維空間中,從而使得它們可分。
  • 集成學習(boosting、bagging、stacking),集成學習核心思想是結合多個模型算法來完成任務,這個假設了單個算法學習的知識是侷限的,多個算法組合則能發揮各個算法模型的長處,從而增加模型性能。boosting、bagging、stacking分別是三種不同的集成方式,boosting的個體學習器有強依賴關係,每個個體學習器依賴於前一個個體學習器的輸出,bagging個體學習器之間沒有依賴關係且通過一定的結合策略產生最終輸出,stacking則是一種分層特徵學習的結構。
  • 神經網絡(感知機、BP神經網絡、卷積神經網絡、循環神經網絡),神經網絡基礎版本是感知機和BP神經網絡,通過模擬人腦神經一樣構建起一個神經網絡,並通過梯度下降之類的學習模型參數。後面通過加深網絡層數和引入卷積等操作發展成卷積神經網絡,此外還有改造成循環神經網絡等,也就是後來的深度學習。
  • 聚類(kmeans、密度聚類、層次聚類),聚類就是通過一定的算法將屬性相近的個體聚集到一起,並將屬性不同的個體儘量隔離遠一點。kmeans是基於距離的聚類,密度聚類則是尋找被低密度區域分離的高密度區域,層次聚類從上往下將大集群進行分割。
  • 降維(PCA、LDA),PCA主成分分析將數據從原來的座標轉換到新座標使得可以用更少維度來表示數據,LDA線性判別分析將高維樣本投印到最佳鑑別矢量空間以達到壓縮特徵空間維度的效果。

數據工程流程

  • 數據獲取,從不同數據源收集數據獲取數據到統一裝置中。
  • 數據存儲,藉助存儲介質將收集到的數據持久化保存,比如硬盤。
  • 數據清洗,將不符合規範的數據進行特定處理,使得數據達到準確完整一致等要求。
  • 數據建模,定義滿足業務所需要的數據要求的過程,一般需要業務建模師參與。
  • 數據處理,對數據的採集、存儲、檢索、加工、變換、傳輸等操作,從海量數據中抽取提取有價值的數據。
  • 數據分析,使用數據挖掘技術從海量數據中獲取有價值的信息。
  • 數據可視化,將數據以直觀的可視化方式展示給用戶。

常用大數據工具

hadoop受谷歌MapReduce論文啟發而實現的經典的開源大數據處理工具,現在的大數據工具主要包括以下。

  • HDFS,分佈式文件系統。
  • HBase,分佈式數據庫。
  • MapReduce,由用戶編寫的運行在hadoop集群上的並行程序。
  • zookeeper,作為分佈式程序的協調中心。
  • hive,基於hadoop的數據倉庫管理工具。
  • pig,大數據分析工具。
  • yarn,hadoop集群資源管理系統。
  • sqoop,hadoop與傳統數據庫之間進行數據交換的工具。
  • chukawa,分佈式數據收集分析系統。
  • hcatalog,管理hadoop產生的數據表存儲管理系統。
  • redis,分佈式緩存系統。
  • kafka,分佈式消息系統。
  • Cassandra,分佈式結構和數據存儲。
  • neo4j,nosql圖數據庫。
  • spark,分佈式計算引擎。
  • storm,分佈式實時計算系統。
  • elasticsearch,分佈式全文搜索。
  • flume,分佈式日誌採集系統。
  • flink,分佈式流處理引擎。


分享到:


相關文章: