文章圖片來源於 GitHub,網速不佳的朋友請點我看原文。html
順便軟廣一下我的技術小站:godbmw.com。歡迎常來♪(^∇^*)python
老師上課時候就說過:傳統算法解決肯定性問題,而機器學習解決非肯定性問題。
好吧,確實激起了個人興趣,因此係統學習一下吧。算法
機器學習算法和普通算法仍是有很大區別的。它不要求百分之百準確,而且對數學要求較高。機器學習
我認爲重點有幾下 4 點:學習
難點有幾下幾點:優化
有些算法既能夠處理分類、也能夠處理迴歸任務,而在一些狀況下,迴歸任務能夠簡化爲分類任務,以方便問題解決。
常見的有分類任務有 2 分類和多分類任務,而且二者之間能夠轉化。spa
好比 AlphaGo 下圍棋,能夠理解成一個多分類任務:由於是在選擇棋盤上的落子點。除此以外,推箱子游戲:可能有 2-4 個方向提供選擇,也能夠理解成分類任務。code
而在 ML 前沿領域,實現了多標籤分類:再也不單純的是一個分類,而是擁有多個標籤。htm
例以下面這張含有多個標籤的圖片,多標籤會讓機器對它的定位更準確:
遊戲
機器得到結果是一個連續的數字的值,而不是一個類別。連續的值能夠劃分爲無限多個小的點(能夠理解成無限多個類別),又怎麼能處理成類別呢。
交給算法的訓練數據已經被打了「標籤」,或者已經給出了分類。訓練後的算法能夠給新的數據打標籤或者分類。
所以,監督學習的訓練數據須要大量的人力來進行標記。
固然,在一些領域已經積累了一些被標記的數據信息,例如大型博客平臺,對每篇博客都有分類和標籤。這種時候,監督學習的人力成本基本就是 0 了。
給機器的訓練數據沒有任何「標籤」,或者分類。訓練後的算法仍然能夠給新的數據打標籤或者分類。
常常聽到的算法,就有聚類分析,好比每一個用戶都被電商平臺劃分到某一用戶羣體。
另外一個很是重要的用途,是對數據進行降維處理:
另外一個很是重要的用途:異常檢測。以下圖所示。以方便算法發現通常性特徵和規律。
一部分數據有「標籤」或分類,另外一部分並無。
此時,通常經過無監督學習手段對數據進行處理,以後使用監督學習作模型的訓練和預測。
根據周圍環境,採起行動,再根據行動結果,改善學習行動方式。
以下圖所示,agent 使咱們的算法,當他執行後,會根據環境反饋來執行獎賞或者懲罰,再改進行爲模式。循環往復。
而 AlphaGo、自動駕駛等前言機器人,都使用了加強學習。
批量學習是指:算法一旦根據數據訓練出模型後,不會接受新的數據來優化模型。在線學習是指:算法運行的過程當中,也會把吸取新數據進行模型訓練。
優缺點顯而易見,前者更省心,可是沒法適應數據快速變化的場景;後者能夠及時針對不一樣的數據來優化模型,可是容易受到新數據中垃圾數據影響。
參數學習是給出數據模型,剩下的工做就是利用算法找出最合適參數。好比假定數據點符合y = ax + b
的模型,剩下工做就是用最小二乘法之類的算法找到(a,b)
的最優解。
非參數學習相反,不對模型進行過多假設,不將問題理解成學習一些參數。