機器學習常見的兩個大坑

2021-09-27 10:57:25 字數 972 閱讀 7738

大家都知道,不管是什麼學科都有很多陷阱,由於我們對這一知識的了解不夠,就很容易掉進這個坑里,所以說我們一定要加強知識儲備。而在機器學習中有很多前輩們總結下來的陷阱,在這篇文章中我們給大家介紹一下機器學習中常見的兩個大坑,希望能夠幫助的大家盡早脫坑。

首先我們給大家介紹一下第乙個坑,那就是系統邊界模糊和巨型系統。其實機器學習系統與其他軟體系統相比,有乙個顯著的特點,那就是它是建立在實驗性、探索性開發的基礎上的。尤其是在初次搭建系統的時候,很難做到在完整設計的指導下開發,而大多是一邊探索嘗試一邊開發,到最後達到上線要求的時候,系統也就隨之成型了。不過這樣構建出的系統,有個很大的問題,就是很容易做成乙個邊界模糊、模組耦合、結構複雜的「巨型系統」,這種系統的典型特徵包括三點,第一就是模組間不可拆分,樣本、特徵、訓練等步驟都偶合在一起。第二就是很多實驗性、探索性**遍布其中,搞不清楚哪些在用,哪些已失效。第三就是pipeline特別長,其中包括一些可能已經無用的流程。

那麼為什麼會出現這樣的系統呢?重要原因之一就是前面提到過的,機器學習系統的探索式的本質。在剛開始做系統的時候,可能樣本處理、特徵處理這些都比較簡單,所以就都寫在了一起。隨著各個流程處理的精細化、複雜化,每個步驟都在變複雜,但是由於這種變化是在慢慢發生的,導致系統慢慢變得不可控。

機器學習中第二個坑就是不重視基礎資料架構建設,一般來說,資料是機器學習系統的核心,這裡面包括各種樣本資料,原始特徵資料,處理後的特徵資料,支撐資料等等,那麼提供這些資料的系統和架構也是同樣重要的,機器學習系統在構建初期,對待各種資料的態度往往是輔助性質的,認為這些資料只是為了模型服務的原料,而沒有把它們本身作為嚴肅的子系統來對待,所以這些資料的架構往往缺乏設計,大多比較隨意,可能會有很多難以復用**。不過這容易導致出乙個嚴肅而複雜的問題,這個問題不是一兩個簡單方法就可以解決的,而是需要從資料來源開始做仔細的設計,設計時充分考慮資料可能的用法,並留有一定擴充套件性,保證資料的可用性和可探索性。

公升級php7 公升級Php 7 4帶來的兩個大坑

每日17點準時技術乾貨分享 由於我機器用的滾動更新的archlinux,不知不覺php已經公升級到7.4了,沒想到這次更新帶來了極大的麻煩。首先是php fpm的新選項protecthome會導致經典的file not found錯誤,再是php直譯器會對null型別的下標訪問直接報錯trying ...

任意長度的兩個大數的乘法

方法 一 關於大數乘法,可以使用陣列來模擬小學三年級的乘法豎式計算過程,如下 include iostream include string using namespace std int main void cout 兩個大整數相乘的結果為 for i len 1 i 0 i 如果乙個負,乙個正,...

分治法求兩個大整數的乘積

分治法求兩個大整數的乘積 分治法求兩個大整數的乘積 把兩個 n位的大整數 u.v分割成長度為 n 3的三段,可以用五次 n 3位整數的乘法求得 uv的值。按此思想設計乙個兩個大整數乘積的分治演算法把 u分成u1 u2 u3三段,即 u u1 22n 3 u2 2n 3 u3 把 v分成v1 v2 v...