本人機器學習初學者,已看吳恩達的機器學習課程,但是後面內容就有點看不懂了,以至於沒有動力進行後續學習,大學學過一點高數,其他數學方面的完全沒有學過,所以想問一下學習機器學習之前是不是得先了解數學方面的知識?那有沒有這方面的書籍推薦?另外,想了解一下機器學習入門的整個的一個流程,比如先學啥再學啥,有無其他注意事項等。感謝!!!


隨著人工智慧的火熱,數據科學領域逐漸被人們所熟知,相信你肯定也聽說過諸如一些機器學習,深度學習之類讓人聽不懂的術語,而隨著概念的火熱,想進入人工智慧這個領域的人越來越多,原因無他,隨著這個領域的火爆未來的發展機會,發展潮流乃至薪資都是非常可人的,但是許多人雖然想進入這個領域,卻發現無從下手,或者說已經了解了人工智慧這個概念想開始學習機器學習,卻不知道如何入門的人,今天就講述一下,機器學習應該怎麼樣入門。

數據挖掘要了解機器學習,首先就不得不談到數據挖掘,所謂數據挖掘,是指在數據中挖掘有價值的信息,最早定義的數據挖掘是KDD的一個步驟,後隨著挖掘的應用場景不斷豐富,其技術有了長足的發展,如今的數據挖掘,其概念無論從內涵還是外延角度而言都已獨立成為一門學科。

數據挖掘的特徵是對客觀世界的抽象,演算法則是對事物運行規律內嵌邏輯的還原,演算法作用於特徵從而無限逼近客觀事物運行規律的過程則是機器學習或者數據挖掘的過程。

數據挖掘演算法分類但凡從數據中進行有價值信息的挖掘,均可稱為數據挖掘,時至今日,數據挖掘核心演算法主要可分為數理統計分析演算法和機器學習演算法兩大類
  • 數理統計分析演算法核心演算法理論基於統計學相關理論,所有模型均經過嚴格數學理論驗證,建模過程本質上是由現有模型理論出發向外求的過程機器學習演算法和數理統計分析演算法不同,機器學習演算法側重於學習的過程,即利用數據訓練模型,具體問題具體分析

數理統計分析一般流程

基於數理統計原理進行的分析,現在稱作數理統計分析,也是數據挖掘的一個分支,如線性回歸、時間序列等演算法,至今仍然是使用最廣泛的演算法

數理統計分析一般遵循假設檢驗-建模參數選擇-構建模型-建設檢驗評估模型-參數調優這五個步驟。機器學習一般流程機器學習的定義:一個計算機程序可以從經驗E中學習某些類型的任務T和性能度量P,而且它在任務T中的性能(用P度量)可以隨著經驗E的提高而提高

機器學習鼻祖:感知機理論隨著計算機運算能力不斷提升,數理統計分析大行其道。但人們並不止步於此,50年代就被提出的感知機理論在80年代再次進入公眾視野,人們開始嘗試使用計算機訓練多層感知機,也就是現在所謂的神經網路。

神經網路演算法的計算機實踐是成功的,這即是神經網路演算法本身諸多優秀特性所導致,也是計算機運算讓神經網路迭代運算如虎添翼演算法分類從演算法理論層面來說,數理統計是基於統計學原理設計的一系列演算法,大多是基於少量樣本的統計推斷,其演算法雖然大多誕生實踐較早,但在當今數據環境中仍然能夠發揮巨大價值。機器學習是需要更多的計算資源及數據量支撐,計算前無需預設過多條件,運算過程會不斷迭代,直至收斂。

從演算法應用情景來分的話可以分為三個方面:

  • 有監督學習:在有標籤數據上執行的分類、回歸或者預測類演算法。無監督學習:在無標籤的數據上執行聚類、頻繁項挖掘等演算法。半監督學習、強化學習…

數據挖掘常用演算法

數理統計機器學習有監督學習線性回歸、邏輯回歸、時間序列、嶺回歸、貝葉斯網路KNN、決策樹、神經網路、支持向量機無監督學習假設檢驗、參數估計聚類分析、協同過濾、關聯規則

機器學習演算法分類

演算法大類代表演算法距離類模型KNN、K-Means線性方程模型線性回歸、嶺回歸、Lasso、彈性網、邏輯回歸規則類模型樹模型、Apriori、FP-Growth條件概率模型

樸素貝葉斯、貝葉斯網路

強學習器支持向量機、神經網路集成演算法Bagging、Boosting演算法學習的三重境界學習演算法有三種境界:
  1. 掌握演算法入口出口理解原理,靈活調優融會貫通,設計演算法

第一重境界,將演算法本身當做黑箱,在不知道演算法具體原理的情況下能夠掌握演算法的基本應用情景(有監督、無監督),以及演算法的基本使用情景,能夠調包實現演算法。

第二重境界則是能夠深入了解、掌握演算法原理,並在此基礎上明白演算法實踐過程中的關鍵技術、核心參數,最好能夠利用編程語言手動實現演算法,能夠解讀演算法執行結果,並在理解原理的基礎上對通過調參對演算法進行優化最後一重境界,實際上也是演算法(研發)工程師的主要工作任務,即能夠結合業務場景、自身數學基礎來進行有針對性的演算法研發,此部分工作不僅需要紮實的演算法基本原理知識,也需要紮實的編程能力。

機器學習的學習安排

理論基礎講完,接下來就是要介紹一下我們應該如何的去安排我們如何去學習機器學習了,當前主流的數據挖掘演算法——機器學習大類演算法並非完全由一個個獨立的演算法所組成,機器學習演算法內部有諸多相通之處,核心思想高度一致,彼此之間處理手段也有相互借鑒的地方,因此教學過程不僅對將各個演算法的核心原理、編程語言實現方法進行講解,還需要對更為一般的機器學習方法論進行系統的講解。我們的學習任務也分為三個階段:
  1. 演算法入門演算法大爆炸高階演算法

第一階段

第一階段主要是進行演算法入門,主要學習的是兩點:核心演算法和機器學習方法論
  • 核心演算法:基於距離的模型:KNN最近鄰分類器、聚類分析(K-Means、DBSCAN和層次聚類)機器學習方法論:基於距離的機器學習模型評估指標、加權距離與優化方法、學習曲線、交叉驗證方法等

第二階段

第二階段是演算法大爆炸,在有了第一階段基本演算法思維培養和基本方法論掌握的基礎上,第二階段將對當前主流機器學習演算法進行講解學習,也是分為核心演算法和機器學習方法論。
  • 核心演算法:樹模型:包括ID3、C4.5、CART等;回歸分析:包括線性回歸、嶺回歸、Lasso、廣義線性回歸(邏輯回歸)等;貝葉斯分類器;關聯規則:包括Apriori、FP-Growth、PrefixSpan等機器學習方法論:機器學習演算法一般流程、常用凸函數優化方法(梯度下降、最小二乘法、坐標軸下降、擬牛頓法等)、概率分類問題模型評估指標(ROC、AUC)、感知機模型基本原理

第三階段

第三階段也就是最後一個階段是學習講解當前機器學習演算法的高階演算法部分,主要包括由感知機模型衍生而來的兩個模型:神經網路和SVM,以及一些常用的集成方法。此部分所謂高級演算法,即指其基本原理要更加艱深,也指其使用過程難度更大。
  • 核心演算法:神經網路,多層感知機模型;SVM,包括線性SVM分類器、高斯核SVM分類器;集成演算法:Bagging和Boosting兩大類演算法,包括AdaBoost、隨機森林等。機器學習方法論:偏倚-方差評估體系、核函數方法、SMO演算法原理等

演算法

以上就是我么學習機器學習的三個階段,接下來我們簡單的討論而言,在各種領域中,演算法是何物。

  • 在計算機領域中,演算法用來調整語法結構、數據結構,從而優化程序執行效率;在數學領域中,演算法指的是在根據一定條件構建的模型是否有解、是否存在最優解,及獲取解的過程而在數據分析、數據挖掘或機器學習領域,演算法用於捕捉數據背後隱藏的客觀規律,去解決和實際業務高度相關的某些問題。某些時候演算法是為了調整數據結構、降低程序的時間複雜度,提高計算機執行效率(如FP-Growth),多數時候演算法是為了解決最優化問題(如最小二乘法、梯度下降等),更多時候演算法就是一個數學模型,作用於特定的數據,產出特定的結論,解決特定的問題。

機器學習的一般流程

機器學習的一般流程是分為六個步驟:
  1. 提出問題:回歸、分類,還是探索數據結構
  2. 底層核心邏輯,如自變數加權求和預測因變數
  3. 構建演算法體系或演算法方程,如

4. 設置模型超參數,然後根據問題構造損失函數,損失函數是一個包含模型參數的方程

5. 利用最優化演算法求解損失函數極值,常用最小二乘法、梯度下降、牛頓法、坐標軸下降演算法等,在求解損失函數極值的過程就是求解方程參數值的過程構建模型評估指標,尋找模型優化途徑,模型調參。

6. 構建模型評估指標,尋找模型優化途徑,模型調參。演算法理論、編程語言與演算法庫接下來我們討論一下演算法理論、編程語言和演算法庫這三者的關係。

首先,演算法理論是此三者中最核心的知識內容,掌握演算法基本理論、擁有演算法素養和演算法思維才能根據需求及數據情況合理選擇選法、根據模型結果進行演算法調優,併合理解讀模型結果;

其次,演算法需要利用計算機來執行,因此我們需要將演算法中的人類邏輯轉化為計算機邏輯交付計算機執行,此過程需要用到編程語言,但其只是演算法實踐的工具最終,演算法庫將進一步封裝演算法底層執行過程,提供整潔而統一的介面給用戶使用,從而降低演算法使用門檻。學習目標最後我們樹立一下我們有關機器學習的學習目標:
  • 掌握常用演算法的核心原理掌握機器學習一般方法論了解常用演算法的優化方法樹立數據挖掘思想和機器學習思想

以上就是有關機器學習入門的步驟希望大家在看完之後可以明白什麼是機器學習,並且堅定的在這條道路上走下去,緊跟時代的潮流,早日找到自己滿意的一份領域內的工作,謝謝。

最後附上Scikit-learn中文文檔:scikit-learn中文社區

我是《零基礎學機器學習》一書的作者。下面的幾位朋友提到吳恩達,李宏毅老師的視頻,對,非常好。我就是跟這兩位老師入門的。我認為學完這兩位老師的視頻入門之後,再看西瓜書才比較好,西瓜書覆蓋面廣,東西多,但是細節少。不是特別適合數學基礎一般的朋友。

那麼有沒有更快的方法,更輕鬆的入門方法,我在此安利自己的作品:《零基礎學機器學習》。我感覺我這本書非常適合類似題主這種情況:題主在看吳恩達的機器學習課程,但是後面內容就有點看不懂了,以至於沒有動力進行後續學習 —— 我這本書似乎是為你量身訂做的。找比吳恩達老師視頻還更容易理解的優秀機器學習教程,並不是很容易了。《零基礎學機器學習》算是其中之一。我這是不是自賣自誇,聽我解釋如下:

《零基礎學機器學習》(黃佳)【摘要 書評 試讀】- 京東圖書?

item.jd.com圖標

在我看來,入門機器學習,以下幾點:

  • l 知道機器學習是幹什麼的;
  • l 知道機器學習模型是怎麼跑的;
  • l 知道如何將機器學習運用到實際項目中。

至於線性數學、統計學、概率、微積分、程序設計和演算法等等等等,需要學嗎?需要,但是不急在「入門」這一時。入門終究是為了應用,只有知道了整個領域的底層邏輯,我們才能根據自己的特點查漏補缺。試想,如果連「機器學習」項目具體一步一步在幹什麼都沒有搞清楚,那麼學再多的線性數學統計學概率微積分程序設計演算法……有什麼用?

從「快快上手」這根本需求出發,我覺得這本書特別適合想要入門同學。

我具體說說:

  1. 這本書真的規划出了一條新書快速的入門路線!

這一點在我看來是最重要的。很多書上來就把機器學習劃分成很多模塊,然後一個一個模塊的解釋、推導,一本書就是一個特大號的思維導圖。我不否認這是一種有效的學習模式,但是對大部分學習能力欠缺和缺少全局思維的讀者來說,很不友好。為什麼?因為書的大部分時間都在討論細節,讀者很容易在細節推導和計算中起不了身,陷入「我是誰,我在哪,我在幹什麼」的迷茫中。一本好的「入門書」,應該更多考慮到「零基礎」讀者的困境,設計好內容,引導大家去學。

《零基礎學機器學習》是什麼思路呢?它按照上課培訓的方式,把學習過程分成了4個階段。

第1階段,了解領域概況。用基本上一兩天的學習量(頂多一周),迅速講了機器學習的知識點架構、常用平台、基本術語、Python相關知識、項目實戰套路過了一遍,讓人對這個領域有個基本的認識。

機器學習項目實戰「套路」

第2階段,學理論。又用了一兩天的學習量(這次真的是一兩天),帶著讀者回憶了一下曾經還給老師們的數學知識(求導啊張量啊的),也不求有多深,能夠做到往下繼續學習就行,就怕講得太多,太深,打消了學習積極性,更深的數學知識,等入了門之後再說。

第3階段,項目實戰。這裡,從線性回歸和邏輯回歸,再到深度學習、卷積神經網路和循環神經網路,全部套用第1階段講到的「項目常用套路」,基本上就是按照那5步不停地實戰實戰,強化固化對實戰項目的套路印象。

這時候,基本上讀者基本知道了這個領域的一個基本運行規律了。然後在這個基礎上,向讀者介紹領域內稍微深一些的概念和理論,這就是第4階段——學一些經典的演算法,集成學習,非監督學習,生成式對抗網路,強化學習,等等。

《零基礎學機器學習》的入門路線

2. 更為貼心的是,這本書設置了2個角色:小冰——即將接觸AI項目的零基礎程序媛,咖哥——小冰的臨時AI輔導師兼高中同學。用小冰的學習過程串起了整本書的學習流程,非常有代入感。

書中人物:小冰,咖哥

對於一些比較抽象的內容的介紹,書中用漫畫、故事、課堂問答、比喻等不同方法去解釋,最大程度減少理解困難的問題。隨便截一個圖看看書中講解理論的風格:

課堂的模擬,一問一答

實戰方面,書中也比較注重實操中可能出現的問題,盡量解釋初學者可能出現的問題和疑惑。

是不是這樣一看,入門還挺簡單的?

這本書其實是拋去了「思維導圖」的模塊化概念,用老師上課的方式引導學生去學,簡單的知識背後是深思熟慮的結果。為什麼老師需要設計教案?是要把知識分區嗎?當然是為了設計課程,讓學生更快、更高效的領會知識。大家可以去看看網上的一些優秀的教學課視頻,(可以舉一些例子),仔細研究一下都能看出來,講師在其中的主觀能動性更高。其間要充分考慮到學生在學習過程中哪些地方會遇到哪些難點,如何解決這些難點,而不是簡單地鋪陳一下知識,給一些代碼,需要考慮的更多,當然效果也更明顯。

人郵君對此書的妙評:

機器學習中較為簡單的演算法有哪些??

www.zhihu.com圖標

不多說。希望我這本書,能夠幫助到你,在你入門機器學習的道路上,助一臂之力。

共勉!


可以關注這個細節的分享:

https://zhuanlan.zhihu.com/p/105888234?

zhuanlan.zhihu.com圖標

有個小建議:

可以先把機器學習當成工程類的學科,初步了解理論,做些小項目,再實踐中慢慢補足理論。

機器學習流程:

前言

機器學習 作為人工智慧領域的核心組成,是計算機程序學習數據經驗以優化自身演算法,併產生相應的「智能化的」建議與決策的過程。

一個經典的機器學習的定義是:

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

1 機器學習概論

機器學習是關於計算機基於數據分布,學習構建出概率統計模型,並運用模型對數據進行分析與預測的方法。按照學習數據分布的方式的不同,主要可以分為監督學習和非監督學習

1.1 監督學習

從有標註的數據(x為變數特徵空間, y為標籤)中,通過選擇的模型及確定的學習策略,再用合適演算法計算後學習到最優模型,並用模型預測的過程。

按照模型預測結果Y的取值有限或者無限的,可再進一步分為分類模型或者回歸模型

1.2 非監督學習:

從無標註的數據(x為變數特徵空間),通過選擇的模型及確定的學習策略,再用合適演算法計算後學習到最優模型,並用模型發現數據的統計規律或者內在結構。

按照應用場景,可以分為聚類,降維和關聯分析等模型。

2 機器學習建模流程

2.1 明確業務問題

明確業務問題是機器學習的先決條件,這裡需要抽象出現實業務問題的解決方案:需要學習什麼樣的數據作為輸入,目標是得到什麼樣的模型做決策作為輸出。

(如:一個簡單的新聞分類問題的場景,就是學習已有的新聞及其類別標籤數據,得到一個文本分類模型,通過模型對每天新的新聞做類別預測,以歸類到每個新聞頻道。)

2.2 數據選擇:收集及輸入數據

數據決定了機器學習結果的上限,而演算法只是儘可能逼近這個上限。 意味著數據的質量決定了模型的最終效果,在實際的工業應用中,演算法通常佔了很小的一部分,大部分工程師的工作都是在找數據、提煉數據、分析數據。數據選擇需要關注的是:

① 數據的代表性:代表性差的數據,會導致模型擬合效果差;

② 數據時間範圍:監督學習的特徵變數X及標籤Y如與時間先後有關,則需要明確數據時間窗口,否則可能會導致數據泄漏,即存在和利用因果顛倒的特徵變數的現象。(如預測明天會不會下雨,但是訓練數據引入明天溫濕度情況);

③ 數據業務範圍:明確與任務相關的數據表範圍,避免缺失代表性數據或引入大量無關數據作為噪音;

2.3 特徵工程:數據預處理及特徵提取

特徵工程就是將原始數據加工轉化為模型可用的特徵,按技術手段一般可分為:

數據預處理:缺失值/異常值處理,數據離散化,數據標準化等;

特徵提取:特徵表示,特徵衍生,特徵選擇,特徵降維等;

2.3.1 數據預處理

  • 異常值處理 收集的數據由於人為或者自然因素可能引入了異常值(噪音),這會對模型學習進行干擾。

通常需要處理人為引起的異常值,通過業務/技術手段(如3σ準則)判定異常值,再由(python、正則式匹配)等方式篩選異常的信息,並結合業務情況刪除或者替換數值。
  • 缺失值處理 數據缺失的部分,通過結合業務進行填充數值、不做處理或者刪除。 根據缺失率情況及處理方式分為以下情況: ① 缺失率較高,並結合業務可以直接刪除該特徵變數。經驗上可以新增一個bool類型的變數特徵記錄該欄位的缺失情況,缺失記為1,非缺失記為0; ② 缺失率較低,結合業務可使用一些缺失值填充手段,如pandas的fillna方法、訓練隨機森林模型預測缺失值填充; ③ 不做處理:部分模型如隨機森林、xgboost、lightgbm能夠處理數據缺失的情況,不需要對缺失數據做任何的處理。
  • 數據離散化 數據離散化能減小演算法的時間和空間開銷(不同演算法情況不一),並可以使特徵更有業務解釋性。 離散化是將連續的數據進行分段,使其變為一段段離散化的區間,分段的原則有等距離、等頻率等方法。
  • 數據標準化 數據各個特徵變數的量綱差異很大,可以使用數據標準化消除不同分量量綱差異的影響,加速模型收斂的效率。常用的方法有: ① min-max 標準化: 將數值範圍縮放到(0,1),但沒有改變數據分布。max為樣本最大值,min為樣本最小值。

② z-score 標準化:

將數值範圍縮放到0附近, 經過處理的數據符合標準正態分布。u是平均值,σ是標準差。

2.3.2 特徵提取

  • 特徵表示 數據需要轉換為計算機能夠處理的數值形式。如果數據是圖片數據需要轉換為RGB三維矩陣的表示。

字元類的數據可以用多維數組表示,有Onehot獨熱編碼表示、word2vetor分散式表示及bert動態編碼等;

  • 特徵衍生

基礎特徵對樣本信息的表述有限,可通過特徵衍生出新含義的特徵進行補充。特徵衍生是對現有基礎特徵的含義進行某種處理(聚合/轉換之類),常用方法如:

① 結合業務的理解做衍生: 聚合的方式是指對欄位聚合後求平均值、計數、最大值等。比如通過12個月工資可以加工出:平均月工資,薪資最大值 等等;

轉換的方式是指對欄位間做加減乘除之類。比如通過12個月工資可以加工出:當月工資收入與支出的比值、差值等等;

② 使用特徵衍生工具:如Featuretools等;

  • 特徵選擇

特徵選擇篩選出顯著特徵、摒棄非顯著特徵。特徵選擇方法一般分為三類:

① 過濾法:按照特徵的發散性或者相關性指標對各個特徵進行評分後選擇,如方差驗證、相關係數、IV值、卡方檢驗及信息增益等方法。

② 包裝法:每次選擇部分特徵迭代訓練模型,根據模型預測效果評分選擇特徵的去留。

③ 嵌入法:使用某些模型進行訓練,得到各個特徵的權值係數,根據權值係數從大到小來選擇特徵,如XGBOOST特徵重要性選擇特徵。

  • 特徵降維

如果特徵選擇後的特徵數目仍太多,這種情形下經常會有數據樣本稀疏、距離計算困難的問題(稱為 「維數災難」),可以通過特徵降維解決。 常用的降維方法有:主成分分析法(PCA), 線性判別分析法(LDA)等。

2.4 模型訓練

模型訓練是選擇模型學習數據分布的過程。這過程還需要依據訓練結果調整演算法的(超)參數,使得結果變得更加優良。

  • 2.4.1 數據集劃分 訓練模型前,一般會把數據集分為訓練集和測試集,並可再對訓練集再細分為訓練集和驗證集,從而對模型的泛化能力進行評估。 ① 訓練集(training set):用於運行學習演算法。 ② 開發驗證集(development set)用於調整參數,選擇特徵以及對演算法其它優化。常用的驗證方式有交叉驗證Cross-validation,留一法等; ③ 測試集(test set)用於評估演算法的性能,但不會據此改變學習演算法或參數。

  • 2.4.2 模型選擇 常見的機器學習演算法如下:

模型選擇取決於數據情況和預測目標。可以訓練多個模型,根據實際的效果選擇表現較好的模型或者模型融合。

  • 2.4.3 模型訓練 訓練過程可以通過調參進行優化,調參的過程是一種基於數據集、模型和訓練過程細節的實證過程。 超參數優化需要基於對演算法的原理的理解和經驗,此外還有自動調參技術:網格搜索、隨機搜索及貝葉斯優化等。

2.5 模型評估

模型評估的標準:模型學習的目的使學到的模型對新數據能有很好的預測能力(泛化能力)。現實中通常由訓練誤差及測試誤差評估模型的訓練數據學習程度及泛化能力。

  • 2.5.1 評估指標 ① 評估分類模型: 常用的評估標準有查准率P、查全率R、兩者調和平均F1-score 等,並由混淆矩陣的統計相應的個數計算出數值:

查准率是指分類器分類正確的正樣本(TP)的個數占該分類器所有預測為正樣本個數(TP+FP)的比例;

查全率是指分類器分類正確的正樣本個數(TP)占所有的正樣本個數(TP+FN)的比例。 F1-score是查准率P、查全率R的調和平均:

② 評估回歸模型: 常用的評估指標有RMSE均方根誤差 等。反饋的是預測數值與實際值的擬合情況。

③ 評估聚類模型:可分為兩類方式,一類將聚類結果與某個「參考模型」的結果進行比較,稱為「外部指標」(external index):如蘭德指數,FM指數 等; 另一類是直接考察聚類結果而不利用任何參考模型,稱為「內部指標」(internal index):如緊湊度、分離度 等。

  • 2.5.2 模型評估及優化

根據訓練集及測試集的指標表現,分析原因並對模型進行優化,常用的方法有:

2.6 模型決策

決策是機器學習最終目的,對模型預測信息加以分析解釋,並應用於實際的工作領域。

需要注意的是工程上是結果導向,模型在線上運行的效果直接決定模型的成敗,不僅僅包括其準確程度、誤差等情況,還包括其運行的速度(時間複雜度)、資源消耗程度(空間複雜度)、穩定性的綜合考慮。

3 Python實戰

# 這是一個簡單的demo。使用iris植物的數據,訓練iris分類模型,通過模型預測識別品種。
import pandas as pd

# 載入數據集
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df.head()

# 使用pandas_profiling庫分析數據情況
import pandas_profiling

df.profile_report(title=iris)

# 劃分標籤y,特徵x
y = df[class]
x = df.drop(class, axis=1)

#劃分訓練集,測試集
from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y = train_test_split(x, y)

# 模型訓練
from xgboost import XGBClassifier

# 選擇模型
xgb = XGBClassifier(max_depth=1, n_estimators=1)

xgb.fit(train_x, train_y)

from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score, roc_curve, auc

def model_metrics(model, x, y, pos_label=2):
"""
評估函數
"""
yhat = model.predict(x)
result = {accuracy_score:accuracy_score(y, yhat),
f1_score_macro: f1_score(y, yhat, average = "macro"),
precision:precision_score(y, yhat,average="macro"),
recall:recall_score(y, yhat,average="macro")
}
return result

# 模型評估結果
print("TRAIN")
print(model_metrics(xgb, train_x, train_y))

print("TEST")
print(model_metrics(xgb, test_x, test_y))

# 模型預測
xgb.predict(test_x)

參考資源:

歡迎關注公眾號 演算法進階。可查看下GitHub資源。

http://weixin.qq.com/r/GTjp8VnEmATnrR2S920L (二維碼自動識別)


我是聽說機器學習要用到PYTHON,所以在大四後的暑假學了學,就是從中國大學慕課上搜的課程,好像是北京理工的老師講的,當時完全感覺不到機器學習和語言的緊密關係。

然後同學告訴我去看吳恩達的視頻,從網易公開課上,當時還是看的比較舊的一版,現在吳恩達錄了好多課了吧!

一開始確實數學就相當蒙圈,後來看了一遍就好些了。

其實可以直接找一些經典的訓練模型源碼,我看過一本 機器學習實戰。

當然Python的優勢不就是庫嘛,寫【拼】一些簡單的訓練還是非常簡單的。。

其實,周志華的西瓜書寫的蠻好的,也可以作為工具書,上面還有推薦的閱讀材料。

再有就是從拼多多上淘了幾本書,有和自己研究方向接近的,也就是交叉機器學習和其它專業知識的那種。還有深度學習(這個一點也沒看)啊!

多了解一下總是有用處的,觸類旁通嘛!

我用的京東讀書,會員還合適的,可以翻一翻很多書。

當然我也是入門水平,以上僅供參考。


MIT的線性代數公開課,特別是從行列空間的角度看待矩陣和向量乘法。奇異值分解的意義,向量空間變換的含義。

複習一下高數里的微積分,特別是偏導數和梯度,離不開這兩樣東西。而且不是光推公式就完了,要理解物理含義,學一些優化演算法的時候才能理解更深入。

複習一下概率論,概率密度、常見概率分布、條件概率、貝葉斯、極大似然估計。

李航老師的《統計學習方法》第二版,周志華老師的西瓜書,想學推薦的話,王喆老師的《深度學習推薦系統》。深度學習花書。都是業界良心。

能看論文就多看論文原文,書、博客、專欄都是對論文原文的匯總和整理,再加上筆者的一些思考和理解。有的時候,會忽略掉論文原文的一些動機和細節,導致理解有偏差,或者總感覺少了什麼。

把一些關鍵節點的論文多看幾遍,事半功倍,一節更比六節強。關鍵節點是說,論文不太舊,但是能代表一類方法或者一類思想,或者說是集大成者。比如,xgb和lgb,代表了決策樹和gbdt。Transformer,代表了注意力機制和encoder、decoder框架。

了解演算法和模型的動機,優化或者解決了什麼問題,優缺點有哪些。演算法和模型的發展進化路徑要有所了解。

紙上得來終覺淺,絕知此事要躬行。我個人覺得,學任何東西都不要騙自己。自己到底懂不懂,懂多深,自己心裡要有數。是大概理解演算法是做什麼的,還是清楚演算法和模型各部分的設計動機,每一步計算過程都可以一張紙一支筆自己手動模擬。當然時間和精力有限,也要把握好深度和廣度的平衡。

有時間多看看優秀源碼。

多了解一下業界在工程上的實現。自己學習的時候跑模型可以單機抗,公司里用戶和數據起來了都是大數據和分散式環境,不一樣的。

愚見,共勉。


機器學習要想入門的話,就先看周志華老師的西瓜書先搞懂機器學習相關的概念和基礎知識,最好是學習python語言找相應的代碼看看效果,然後如果想深入學習的話,就去學習一些深度學習的框架,比如tensorflow等這些,來進一步提高。


還是建議理論與實踐相結合。可以一邊看理論知識,一邊找一些開源的項目做一些編程實踐,這樣能夠提升成就感,在做了一定的項目實踐之後,再重新去溫習理論知識。這樣理論與實踐相結合,循環往複,有助於慢慢加深自己的知識理解,搭建好自己的知識架構。


李航老師的統計學習方法和周志華老師的機器學習 過兩遍,機器學習實戰python寫寫代碼,吳恩達的課程和李宏毅的學學,算是可以入門了


推薦閱讀:
相关文章