第1章 機器學習基礎
機器學習 概述
機器學習(Machine Learning,ML)
是使用計算機來彰顯數據背後的真實含義,它爲了把無序的數據轉換成有用的信息。是一門多領域交叉學科,涉及機率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,從新組織已有的知識結構使之不斷改善自身的性能。 它是人工智能的核心,是使計算機具備智能的根本途徑,其應用遍佈人工智能的各個領域,它主要使用概括、綜合而不是演繹。python
- 海量的數據
- 獲取有用的信息
機器學習 研究意義
機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特別是如何在經驗學習中改善具體算法的性能」。 「機器學習是對能經過經驗自動改進的計算機算法的研究」。 「機器學習是用數據或以往的經驗,以此優化計算機程序的性能標準。」 一種常常引用的英文定義是: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.git
機器學習已經有了十分普遍的應用,例如:數據挖掘、計算機視覺、天然語言處理、生物特徵識別、搜索引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰略遊戲和機器人運用。github
機器學習 場景
-
例如:識別動物貓算法
- 模式識別(官方標準):人們經過大量的經驗,獲得結論,從而判斷它就是貓。
- 機器學習(數據學習):人們經過閱讀進行學習,觀察它會叫、小眼睛、兩隻耳朵、四條腿、一條尾巴,獲得結論,從而判斷它就是貓。
- 深度學習(深刻數據):人們經過深刻了解它,發現它會'喵喵'的叫、與同類的貓科動物很相似,獲得結論,從而判斷它就是貓。(深度學習經常使用領域:語音識別、圖像識別)
-
模式識別(pattern recognition): 模式識別是最古老的(做爲一個術語而言,能夠說是很過期的)。apache
- 咱們把環境與客體統稱爲「模式」,識別是對模式的一種認知,是如何讓一個計算機程序去作一些看起來很「智能」的事情。
- 經過融於智慧和直覺後,經過構建程序,識別一些事物,而不是人,例如: 識別數字。
-
機器學習(machine learning): 機器學習是最基礎的(當下初創公司和研究實驗室的熱點領域之一)。網絡
- 在90年代初,人們開始意識到一種能夠更有效地構建模式識別算法的方法,那就是用數據(能夠經過廉價勞動力採集得到)去替換專家(具備不少圖像方面知識的人)。
- 「機器學習」強調的是,在給計算機程序(或者機器)輸入一些數據後,它必須作一些事情,那就是學習這些數據,而這個學習的步驟是明確的。
- 機器學習(Machine Learning)是一門專門研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,從新組織已有的知識結構使之不斷改善自身性能的學科。
-
深度學習(deep learning): 深度學習是很是嶄新和有影響力的前沿領域,咱們甚至不會去思考-後深度學習時代。機器學習
- 深度學習是機器學習研究中的一個新的領域,其動機在於創建、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。
-
參考地址:ide
機器學習已應用於多個領域,遠遠超出大多數人的想象,橫跨:計算機科學、工程技術和統計學等多個學科。函數
- 搜索引擎: 根據你的搜索點擊,優化你下次的搜索結果,是機器學習來幫助搜索引擎判斷哪一個結果更適合你(也判斷哪一個廣告更適合你)。
- 垃圾郵件: 會自動的過濾垃圾廣告郵件到垃圾箱內。
- 超市優惠券: 你會發現,你在購買小孩子尿布的時候,售貨員會贈送你一張優惠券能夠兌換6罐啤酒。
- 郵局郵寄: 手寫軟件自動識別寄送賀卡的地址。
- 申請貸款: 經過你最近的金融活動信息進行綜合評定,決定你是否合格。
機器學習 組成
主要任務
- 分類(classification):將實例數據劃分到合適的類別中。
- 應用實例:判斷網站是否被黑客入侵(二分類 ),手寫數字的自動識別(多分類)
- 迴歸(regression):主要用於預測數值型數據。
監督學習(supervised learning)
- 必須肯定目標變量的值,以便機器學習算法能夠發現特徵和目標變量之間的關係。在監督學習中,給定一組數據,咱們知道正確的輸出結果應該是什麼樣子,而且知道在輸入和輸出之間有着一個特定的關係。 (包括:分類和迴歸)
- 樣本集:訓練數據 + 測試數據
- 訓練樣本 = 特徵(feature) + 目標變量(label: 分類-離散值/迴歸-連續值)
- 特徵一般是訓練樣本集的列,它們是獨立測量獲得的。
- 目標變量: 目標變量是機器學習預測算法的測試結果。
- 在分類算法中目標變量的類型一般是標稱型(如:真與假),而在迴歸算法中一般是連續型(如:1~100)。
- 監督學習須要注意的問題:
- 偏置方差權衡
- 功能的複雜性和數量的訓練數據
- 輸入空間的維數
- 噪聲中的輸出值
知識表示
:
- 能夠採用規則集的形式【例如:數學成績大於90分爲優秀】
- 能夠採用機率分佈的形式【例如:經過統計分佈發現,90%的同窗數學成績,在70分如下,那麼大於70分定爲優秀】
- 可使用訓練樣本集中的一個實例【例如:經過樣本集合,咱們訓練出一個模型實例,得出 年輕,數學成績中高等,談吐優雅,咱們認爲是優秀】
非監督學習(unsupervised learing)
- 在機器學習,無監督學習的問題是,在未加標籤的數據中,試圖找到隱藏的結構。由於提供給學習者的實例是未標記的,所以沒有錯誤或報酬信號來評估潛在的解決方案。
- 無監督學習是密切相關的統計數據密度估計的問題。然而無監督學習還包括尋求,總結和解釋數據的主要特色等諸多技術。在無監督學習使用的許多方法是基於用於處理數據的數據挖掘方法。
- 數據沒有類別信息,也不會給定目標值。
- 非監督學習包括的類型:
- 聚類:在無監督學習中,將數據集分紅由相似的對象組成多個類的過程稱爲聚類。
- 密度估計:經過樣本分佈的緊密程度,來估計與分組的類似性。
- 此外,無監督學習還能夠減小數據特徵的維度,以便咱們可使用二維或三維圖形更加直觀地展現數據信息。
強化學習
這個算法能夠訓練程序作出某一決定。程序在某一狀況下嘗試全部的可能行動,記錄不一樣行動的結果並試着找出最好的一次嘗試來作決定。 屬於這一類算法的有馬爾可夫決策過程。工具
訓練過程
算法彙總
機器學習 使用
選擇算法須要考慮的兩個問題
- 算法場景
- 預測明天是否下雨,由於能夠用歷史的天氣狀況作預測,因此選擇監督學習算法
- 給一羣陌生的人進行分組,可是咱們並無這些人的類別信息,因此選擇無監督學習算法、經過他們身高、體重等特徵進行處理。
- 須要收集或分析的數據是什麼
舉例
機器學習 開發流程
- 收集數據: 收集樣本數據
- 準備數據: 注意數據的格式
- 分析數據: 爲了確保數據集中沒有垃圾數據;
- 若是是算法能夠處理的數據格式或可信任的數據源,則能夠跳過該步驟;
- 另外該步驟須要人工干預,會下降自動化系統的價值。
- 訓練算法: [機器學習算法核心]若是使用無監督學習算法,因爲不存在目標變量值,則能夠跳過該步驟
- 測試算法: [機器學習算法核心]評估算法效果
- 使用算法: 將機器學習算法轉爲應用程序
機器學習 數學基礎
機器學習 工具
Python語言
- 可執行僞代碼
- Python比較流行:使用普遍、代碼範例多、豐富模塊庫,開發週期短
- Python語言的特點:清晰簡練、易於理解
- Python語言的缺點:惟一不足的是性能問題
- Python相關的庫
- 科學函數庫:
SciPy
、NumPy
(底層語言:C和Fortran)
- 繪圖工具庫:
Matplotlib
- 數據分析庫
Pandas
數學工具
附:機器學習專業術語
- 模型(model):計算機層面的認知
- 學習算法(learning algorithm),從數據中產生模型的方法
- 數據集(data set):一組記錄的合集
- 示例(instance):對於某個對象的描述
- 樣本(sample):也叫示例
- 屬性(attribute):對象的某方面表現或特徵
- 特徵(feature):同屬性
- 屬性值(attribute value):屬性上的取值
- 屬性空間(attribute space):屬性張成的空間
- 樣本空間/輸入空間(samplespace):同屬性空間
- 特徵向量(feature vector):在屬性空間裏每一個點對應一個座標向量,把一個示例稱做特徵向量
- 維數(dimensionality):描述樣本參數的個數(也就是空間是幾維的)
- 學習(learning)/訓練(training):從數據中學得模型
- 訓練數據(training data):訓練過程當中用到的數據
- 訓練樣本(training sample):訓練用到的每一個樣本
- 訓練集(training set):訓練樣本組成的集合
- 假設(hypothesis):學習模型對應了關於數據的某種潛在規則
- 真相(ground-truth):真正存在的潛在規律
- 學習器(learner):模型的另外一種叫法,把學習算法在給定數據和參數空間的實例化
- 預測(prediction):判斷一個東西的屬性
- 標記(label):關於示例的結果信息,好比我是一個「好人」。
- 樣例(example):擁有標記的示例
- 標記空間/輸出空間(label space):全部標記的集合
- 分類(classification):預測是離散值,好比把人分爲好人和壞人之類的學習任務
- 迴歸(regression):預測值是連續值,好比你的好人程度達到了0.9,0.6之類的
- 二分類(binary classification):只涉及兩個類別的分類任務
- 正類(positive class):二分類裏的一個
- 反類(negative class):二分類裏的另一個
- 多分類(multi-class classification):涉及多個類別的分類
- 測試(testing):學習到模型以後對樣本進行預測的過程
- 測試樣本(testing sample):被預測的樣本
- 聚類(clustering):把訓練集中的對象分爲若干組
- 簇(cluster):每個組叫簇
- 監督學習(supervised learning):典範--分類和迴歸
- 無監督學習(unsupervised learning):典範--聚類
- 未見示例(unseen instance):「新樣本「,沒訓練過的樣本
- 泛化(generalization)能力:學得的模型適用於新樣本的能力
- 分佈(distribution):樣本空間的全體樣本服從的一種規律
- 獨立同分布(independent and identically distributed,簡稱i,i,d.):得到的每一個樣本都是獨立地從這個分佈上採樣得到的。
機器學習基礎補充
數據集的劃分
- 訓練集(Training set) —— 學習樣本數據集,經過匹配一些參數來創建一個模型,主要用來訓練模型。類比考研前作的解題大全。
- 驗證集(validation set) —— 對學習出來的模型,調整模型的參數,如在神經網絡中選擇隱藏單元數。驗證集還用來肯定網絡結構或者控制模型複雜程度的參數。類比 考研以前作的模擬考試。
- 測試集(Test set) —— 測試訓練好的模型的分辨能力。類比 考研。此次真的是一考定終身。
模型擬合程度
- 欠擬合(Underfitting):模型沒有很好地捕捉到數據特徵,不可以很好地擬合數據,對訓練樣本的通常性質還沒有學好。類比,光看書不作題以爲本身什麼都會了,上了考場才知道本身啥都不會。
- 過擬合(Overfitting):模型把訓練樣本學習「太好了」,可能把一些訓練樣本自身的特性當作了全部潛在樣本都有的通常性質,致使泛化能力降低。類比,作課後題全都作對了,超綱題也都認爲是考試必考題目,上了考場仍是啥都不會。
通俗來講,欠擬合和過擬合均可以用一句話來講,欠擬合就是:「你太天真了!」,過擬合就是:「你想太多了!」。
常見的模型指標
- 正確率 —— 提取出的正確信息條數 / 提取出的信息條數
- 召回率 —— 提取出的正確信息條數 / 樣本中的信息條數
- F 值 —— 正確率 * 召回率 * 2 / (正確率 + 召回率)(F值即爲正確率和召回率的調和平均值)
舉個例子以下:
舉個例子以下: 某池塘有 1400 條鯉魚,300 只蝦,300 只烏龜。如今以捕鯉魚爲目的。撒了一張網,逮住了 700 條鯉魚,200 只 蝦, 100 只烏龜。那麼這些指標分別以下: 正確率 = 700 / (700 + 200 + 100) = 70% 召回率 = 700 / 1400 = 50% F 值 = 70% * 50% * 2 / (70% + 50%) = 58.3%
模型
- 分類問題 —— 說白了就是將一些未知類別的數據分到如今已知的類別中去。好比,根據你的一些信息,判斷你是高富帥,仍是窮屌絲。評判分類效果好壞的三個指標就是上面介紹的三個指標:正確率,召回率,F值。
- 迴歸問題 —— 對數值型連續隨機變量進行預測和建模的監督學習算法。迴歸每每會經過計算 偏差(Error)來肯定模型的精確性。
- 聚類問題 —— 聚類是一種無監督學習任務,該算法基於數據的內部結構尋找觀察樣本的天然族羣(即集羣)。聚類問題的標準通常基於距離:簇內距離(Intra-cluster Distance) 和 簇間距離(Inter-cluster Distance) 。簇內距離是越小越好,也就是簇內的元素越類似越好;而簇間距離越大越好,也就是說簇間(不一樣簇)元素越不相同越好。通常的,衡量聚類問題會給出一個結合簇內距離和簇間距離的公式。
下面這個圖能夠比較直觀地展現出來:
特徵工程的一些小東西
-
特徵選擇 —— 也叫特徵子集選擇(FSS,Feature Subset Selection)。是指從已有的 M 個特徵(Feature)中選擇 N 個特徵使得系統的特定指標最優化,是從原始特徵中選擇出一些最有效特徵以下降數據集維度的過程,是提升算法性能的一個重要手段,也是模式識別中關鍵的數據預處理步驟。
-
特徵提取 —— 特徵提取是計算機視覺和圖像處理中的一個概念。它指的是使用計算機提取圖像信息,決定每一個圖像的點是否屬於一個圖像特徵。特徵提取的結果是把圖像上的點分爲不一樣的子集,這些子集每每屬於孤立的點,連續的曲線或者連續的區域。
下面給出一個特徵工程的圖:
其餘