什麼是機器學習方法

  你知道。現在請欣賞小編帶來的。

  一

  儘管供應商和演算法多的讓人有些眼花繚亂,但事實上機器學習方法只有那麼幾類。首先,從你需要解決的問題開始識別方法,然後你就可以縮小供應商和支援此方法的最佳工具。這看起來可能很明顯,但我都不知道有多少次看到一些公司在理解需求或方法之前就開始使用特定的工具了***Hadoop,還有其它的嗎?***。

  最常見的方法如下:

  Feature Extraction ***特徵提取***:這種方法需要一個類似文字、影象、視訊、音訊的原始輸入,然後提取可以在隨後的機器學習演算法中使用的相關“特徵”和模式。這與其自身並不是息息相關,但卻是一個重要的預處理步驟。

  Clustering***聚類*** :此方法也稱作”unsupervised learning***無監督學習***”,它基於相似性原理將原始資料或特徵和組物件組放到一起。唯一真正的要求就是物件需要一種比較相似性的手段,例如,比較它們相似或不同的方法。

  Classification***分類*** :此方法也稱作“supervised learning***監督學習***”,分類需要原始資料或特徵,以及一個使用者定義的類別,然後開發規則將這些物件歸入到這些類別中。這種規則接著可以用來預測新的、沒有類別的物件。這種技術也有助於標記內容,例如,圖片、視訊和產品。

  Prediction***預測*** :此方法根據已知的資料來確定關係,並制定規則,然後預測未來的事件,例如,一個客戶的離開***“客戶流失”***或一個人會不會買這件商品***“推薦引擎”***。預測的過程真的很有趣,做預測的一個最佳理由就是:誰不想預測未來呢?

  該列表看似很短,然而很多公司在實踐中都曾在其中絆倒過,簡而言之就這幾個。即使更先進的解決方案,如谷歌的無人駕駛汽車使用的也是這些基本的構建模組:特徵提取***將其三維空間降解為一系列機器可讀的物件***,分類***這些物體看起來像一輛車,那些物件看起來像行人***,預測***如果是紅燈,我前面的車將會停止***。

  這些模組的選擇***無論是單獨使用還是組合***,取決於你需要解決的問題,並且你可以以你的方式更好地完成一個成功的機器學習專案。

  二

  在先前的Thinking Big Data? Think Bold Questions Instead一文中我指出,在大資料時代,我鼓勵人們從一個問題開始學習而不是從一個工具開始。這個道理同樣適用於AI/機器學習領域。在我們如今生活的年代,讓人興奮的是我們可以提出真正無所畏懼的問題。因為我們已經不再受到硬體或軟體的限制。

  首先花時間徹底弄清楚你正在解決的問題的型別。使用“五個為什麼”***問為什麼?五次***的方法來追朔問題的根源。根據我的經驗,我發現了一些常規形式:

  Top Line***收入 ***:哪一個是我們最好/最有利可圖的產品、客戶、期望等,採取什麼行動可以獲取最大利益?這是一個擴充套件的經典市場細分和商業智慧報告。使用大資料和人工智慧領域的新工具,我們可以分析海量的資料和組,或者做出高精度和細微差別的預測。

  Bottom Line ***成本代價***:在我們的操作過程中,效率低下的地方有哪些,如何優化才能降低成本?這也是一個擴充套件的傳統報表技術。

  消費者經驗 :促使消費者最佳/積極消費經歷的因素是什麼,要怎麼做才可以提升它?除了上面提到的方法和工具,推薦引擎***類似於Amazon和Netflix***在這個領域裡也扮演了重要的角色。面向客服服務的自動助手也成為可能。

  知識發現/決策支援 :我們從已知的資訊中能夠挖掘到什麼新知識,並且應該如何使用它來做出決策呢?這是我個人最喜歡的一個方向,我職業生涯的大部分時間都在做這個。決策支援工具已經出現了一段時間,但技術的進步持續地提高了計算機的處理分析能力,讓我們從處理分析能力的限制裡解脫出來,不用擔心處理能力的不足,從而專注發現。

  智慧機器/軟體 :其他領域都集中於使企業或消費者變得更好,然而這一領域專注於創造智慧機器來處理世界上特定的問題:從導航真實世界到資料的實時分析和反應。機會仍然存在,即使你不是一個核心軟體開發公司。如果你在這個領域有商業理念,你可以永遠與那些能給你的生活帶來願景的人合作。

  如果這些問題帶領你去尋找一個非技術性解決方案,那麼請不要驚訝。有時候,最好的解決方案並不是實現一個軟體,而是從人以及處理方法上做改進。

  比如,我曾被帶去幫助一個出版社組織去評估新的分析工具。在挖掘詳細資訊之後,我發現他們面臨的真實問題是“創新者的窘境”。任何一種新技術都可能腐蝕他們已存的商業模式,除非他們先解決自己市場上的混亂。我對此給出了一些適度的技術改進方法,但我還是鼓勵他們把大部分精力集中在解決商業模式的問題上。

  你可能也會發現,很多傳統的商業智慧工具都是有必要的,或許你有一個不需要人工智慧的大資料規模問題。請牢牢記住,成功往往是問正確的問題,而不是挑選閃亮的新玩具。

  三

  1、迴歸演算法

  在大部分機器學習課程中,迴歸演算法都是介紹的第一個演算法。原因有兩個:一.迴歸演算法比較簡單,介紹它可以讓人平滑地從統計學遷移到機器學習中。二.迴歸演算法是後面若干強大演算法的基石,如果不理解迴歸演算法,無法學習那些強大的演算法。迴歸演算法有兩個重要的子類:即線性迴歸和邏輯迴歸。

  線性迴歸就是我們前面說過的房價求解問題。如何擬合出一條直線最佳匹配我所有的資料?一般使用“最小二乘法”來求解。“最小二乘法”的思想是這樣的,假設我們擬合出的直線代表資料的真實值,而觀測到的資料代表擁有誤差的值。為了儘可能減小誤差的影響,需要求解一條直線使所有誤差的平方和最小。最小二乘法將最優問題轉化為求函式極值問題。函式極值在數學上我們一般會採用求導數為0的方法。但這種做法並不適合計算機,可能求解不出來,也可能計算量太大。

  電腦科學界專門有一個學科叫“數值計算”,專門用來提升計算機進行各類計算時的準確性和效率問題。例如,著名的“梯度下降”以及“牛頓法”就是數值計算中的經典演算法,也非常適合來處理求解函式極值的問題。梯度下降法是解決迴歸模型中最簡單且有效的方法之一。從嚴格意義上來說,由於後文中的神經網路和推薦演算法中都有線性迴歸的因子,因此梯度下降法在後面的演算法實現中也有應用。

  邏輯迴歸是一種與線性迴歸非常類似的演算法,但是,從本質上講,線型迴歸處理的問題型別與邏輯迴歸不一致。線性迴歸處理的是數值問題,也就是最後預測出的結果是數字,例如房價。而邏輯迴歸屬於分類演算法,也就是說,邏輯迴歸預測結果是離散的分類,例如判斷這封郵件是否是垃圾郵件,以及使用者是否會點選此廣告等等。

  實現方面的話,邏輯迴歸只是對對線性迴歸的計算結果加上了一個Sigmoid函式,將數值結果轉化為了0到1之間的概率***Sigmoid函式的影象一般來說並不直觀,你只需要理解對數值越大,函式越逼近1,數值越小,函式越逼近0***,接著我們根據這個概率可以做預測,例如概率大於0.5,則這封郵件就是垃圾郵件,或者腫瘤是否是惡性的等等。從直觀上來說,邏輯迴歸是畫出了一條分類線。

  假設我們有一組腫瘤患者的資料,這些患者的腫瘤中有些是良性的***圖中的藍色點***,有些是惡性的***圖中的紅色點***。這裡腫瘤的紅藍色可以被稱作資料的“標籤”。同時每個資料包括兩個“特徵”:患者的年齡與腫瘤的大小。我們將這兩個特徵與標籤對映到這個二維空間上,形成了我上圖的資料。

  當我有一個綠色的點時,我該判斷這個腫瘤是惡性的還是良性的呢?根據紅藍點我們訓練出了一個邏輯迴歸模型,也就是圖中的分類線。這時,根據綠點出現在分類線的左側,因此我們判斷它的標籤應該是紅色,也就是說屬於惡性腫瘤。

  邏輯迴歸演算法劃出的分類線基本都是線性的***也有劃出非線性分類線的邏輯迴歸,不過那樣的模型在處理資料量較大的時候效率會很低***,這意味著當兩類之間的界線不是線性時,邏輯迴歸的表達能力就不足。下面的兩個演算法是機器學習界最強大且重要的演算法,都可以擬合出非線性的分類線。

  2、神經網路

  神經網路***也稱之為人工神經網路,ANN***演算法是80年代機器學習界非常流行的演算法,不過在90年代中途衰落。現在,攜著“深度學習”之勢,神經網路重灌歸來,重新成為最強大的機器學習演算法之一。

  神經網路的誕生起源於對大腦工作機理的研究。早期生物界學者們使用神經網路來模擬大腦。機器學習的學者們使用神經網路進行機器學習的實驗,發現在視覺與語音的識別上效果都相當好。在BP演算法***加速神經網路訓練過程的數值演算法***誕生以後,神經網路的發展進入了一個熱潮。BP演算法的發明人之一是前面介紹的機器學習大牛Geoffrey Hinton***圖1中的中間者***。

  具體說來,神經網路的學習機理是什麼?簡單來說,就是分解與整合。在著名的Hubel-Wiesel試驗中,學者們研究貓的視覺分析機理是這樣的。

  比方說,一個正方形,分解為四個折線進入視覺處理的下一層中。四個神經元分別處理一個折線。每個折線再繼續被分解為兩條直線,每條直線再被分解為黑白兩個面。於是,一個複雜的影象變成了大量的細節進入神經元,神經元處理以後再進行整合,最後得出了看到的是正方形的結論。這就是大腦視覺識別的機理,也是神經網路工作的機理。

  讓我們看一個簡單的神經網路的邏輯架構。在這個網路中,分成輸入層,隱藏層,和輸出層。輸入層負責接收訊號,隱藏層負責對資料的分解與處理,最後的結果被整合到輸出層。每層中的一個圓代表一個處理單元,可以認為是模擬了一個神經元,若干個處理單元組成了一個層,若干個層再組成了一個網路,也就是”神經網路”。在神經網路中,每個處理單元事實上就是一個邏輯迴歸模型,邏輯迴歸模型接收上層的輸入,把模型的預測結果作為輸出傳輸到下一個層次。通過這樣的過程,神經網路可以完成非常複雜的非線性分類。

  下圖會演示神經網路在影象識別領域的一個著名應用,這個程式叫做LeNet,是一個基於多個隱層構建的神經網路。通過LeNet可以識別多種手寫數字,並且達到很高的識別精度與擁有較好的魯棒性。

  進入90年代,神經網路的發展進入了一個瓶頸期。其主要原因是儘管有BP演算法的加速,神經網路的訓練過程仍然很困難。因此90年代後期支援向量機***SVM***演算法取代了神經網路的地位。

  3、SVM***支援向量機***

  支援向量機演算法是誕生於統計學習界,同時在機器學習界大放光彩的經典演算法。

  支援向量機演算法從某種意義上來說是邏輯迴歸演算法的強化:通過給予邏輯迴歸演算法更嚴格的優化條件,支援向量機演算法可以獲得比邏輯迴歸更好的分類界線。但是如果沒有某類函式技術,則支援向量機演算法最多算是一種更好的線性分類技術。

  但是,通過跟高斯“核”的結合,支援向量機可以表達出非常複雜的分類界線,從而達成很好的的分類效果。“核”事實上就是一種特殊的函式,最典型的特徵就是可以將低維的空間對映到高維的空間。

  我們如何在二維平面劃分出一個圓形的分類界線?在二維平面可能會很困難,但是通過“核”可以將二維空間對映到三維空間,然後使用一個線性平面就可以達成類似效果。也就是說,二維平面劃分出的非線性分類界線可以等價於三維平面的線性分類界線。於是,我們可以通過在三維空間中進行簡單的線性劃分就可以達到在二維平面中的非線性劃分效果。

  支援向量機是一種數學成分很濃的機器學習演算法***相對的,神經網路則有生物科學成分***。在演算法的核心步驟中,有一步證明,即將資料從低維對映到高維不會帶來最後計算複雜性的提升。於是,通過支援向量機演算法,既可以保持計算效率,又可以獲得非常好的分類效果。因此支援向量機在90年代後期一直佔據著機器學習中最核心的地位,基本取代了神經網路演算法。直到現在神經網路藉著深度學習重新興起,兩者之間才又發生了微妙的平衡轉變。

  4、聚類演算法

  前面的演算法中的一個顯著特徵就是我的訓練資料中包含了標籤,訓練出的模型可以對其他未知資料預測標籤。在下面的演算法中,訓練資料都是不含標籤的,而演算法的目的則是通過訓練,推測出這些資料的標籤。這類演算法有一個統稱,即無監督演算法***前面有標籤的資料的演算法則是有監督演算法***。無監督演算法中最典型的代表就是聚類演算法。

  讓我們還是拿一個二維的資料來說,某一個數據包含兩個特徵。我希望通過聚類演算法,給他們中不同的種類打上標籤,我該怎麼做呢?簡單來說,聚類演算法就是計算種群中的距離,根據距離的遠近將資料劃分為多個族群。

  聚類演算法中最典型的代表就是K-Means演算法。

  5、降維演算法

  降維演算法也是一種無監督學習演算法,其主要特徵是將資料從高維降低到低維層次。在這裡,維度其實表示的是資料的特徵量的大小,例如,房價包含房子的長、寬、面積與房間數量四個特徵,也就是維度為4維的資料。可以看出來,長與寬事實上與面積表示的資訊重疊了,例如面積=長 × 寬。通過降維演算法我們就可以去除冗餘資訊,將特徵減少為面積與房間數量兩個特徵,即從4維的資料壓縮到2維。於是我們將資料從高維降低到低維,不僅利於表示,同時在計算上也能帶來加速。

  剛才說的降維過程中減少的維度屬於肉眼可視的層次,同時壓縮也不會帶來資訊的損失***因為資訊冗餘了***。如果肉眼不可視,或者沒有冗餘的特徵,降維演算法也能工作,不過這樣會帶來一些資訊的損失。但是,降維演算法可以從數學上證明,從高維壓縮到的低維中最大程度地保留了資料的資訊。因此,使用降維演算法仍然有很多的好處。

  降維演算法的主要作用是壓縮資料與提升機器學習其他演算法的效率。通過降維演算法,可以將具有幾千個特徵的資料壓縮至若干個特徵。另外,降維演算法的另一個好處是資料的視覺化,例如將5維的資料壓縮至2維,然後可以用二維平面來可視。降維演算法的主要代表是PCA演算法***即主成分分析演算法***。

  6、推薦演算法

  推薦演算法是目前業界非常火的一種演算法,在電商界,如亞馬遜,天貓,京東等得到了廣泛的運用。推薦演算法的主要特徵就是可以自動向使用者推薦他們最感興趣的東西,從而增加購買率,提升效益。推薦演算法有兩個主要的類別:

  一類是基於物品內容的推薦,是將與使用者購買的內容近似的物品推薦給使用者,這樣的前提是每個物品都得有若干個標籤,因此才可以找出與使用者購買物品類似的物品,這樣推薦的好處是關聯程度較大,但是由於每個物品都需要貼標籤,因此工作量較大。

  另一類是基於使用者相似度的推薦,則是將與目標使用者興趣相同的其他使用者購買的東西推薦給目標使用者,例如小A歷史上買了物品B和C,經過演算法分析,發現另一個與小A近似的使用者小D購買了物品E,於是將物品E推薦給小A。

  兩類推薦都有各自的優缺點,在一般的電商應用中,一般是兩類混合使用。推薦演算法中最有名的演算法就是協同過濾演算法。

  7、其他

  除了以上演算法之外,機器學習界還有其他的如高斯判別,樸素貝葉斯,決策樹等等演算法。但是上面列的六個演算法是使用最多,影響最廣,種類最全的典型。機器學習界的一個特色就是演算法眾多,發展百花齊放。

  下面做一個總結,按照訓練的資料有無標籤,可以將上面演算法分為監督學習演算法和無監督學習演算法,但推薦演算法較為特殊,既不屬於監督學習,也不屬於非監督學習,是單獨的一類。