1. 程式人生 > 其它 >機器學習知識體系

機器學習知識體系

技術標籤:機器學習pythonCDA機器學習

機器學習

1 機器學習基本知識

1.1 什麼是機器學習

機器學習是從資料中自動分析獲得規律(模型),並利用規律(模型) 對未知資料進行預測

1.2 機器學習中的資料型別

最終能夠代⼊到模型中的只有兩種:離散型、連續型資料。
  • 離散型資料:數值的個數是有限的,不能無限向下劃分。
  • 連續型資料:在一定範圍內,變數的取值可以是連續的。

1.3 常用概念

  • 樣本(sample):資料群體,通常是行
  • 特徵(feature):樣本的特定屬性,通常是列
  • 標籤(target):也可以看作一種特殊的特徵,通常在監督資料集中是監督標籤
  • 分類(Classification)
  • 迴歸(Regression)
  • 聚類(Clustering)
  • 降維(Dimensionality reduction)
  • 模型選擇(Model selection)
  • 預處理(Preprocessing)

1.4 機器學習中模型的分類

  • 有監督學習
    • 特點:有y標籤
    • 作用:可以根據y標籤進行資料擬合,對未知資料進行預測分類
    • 種類:分類(y標籤是離散型資料);迴歸(y標籤是連續型資料)
  • 無監督學習
    • 特點:沒有y標籤
    • 作用:非預測類分析
    • 種類:聚類、降維

1.5 sklearn演算法庫API總結

  • sklearn.culster : Clustering 聚類
  • sklearn.datasets : Datasets 資料集
    • fetch 資料集比較大,需要聯網下載
    • load_
      • load_boston() 波斯頓房價資料集 迴歸
      • load_breast_cancer() 乳腺癌資料集 分類
      • load_diabetes() 糖尿病資料集 迴歸
      • load_digits() 畫素8*8的手寫數字識別資料集 10分類
      • load_files() 從本地磁碟載入資料的函式
      • load_iris() 鳶尾花資料集 3分類
      • load_linnerud() 未知
      • load_sample_image() 將單個影象轉換成numpy資料集
      • load_sample_images() 上面的複數
      • load_wine() 酒類資料集
    • make_
      • 生成資料集
      • 根據某種規則去生成對應的資料
  • sklearn.decomposition: Matrix Decomposition 矩陣分解(降維)
  • sklearn.ensemble: Ensemble Methods 整合演算法
  • sklearn.feature_extraction:Feature Extraction 特徵抽取(特徵工程)
  • sklearn.feature_selection: Feature Selection 特徵選擇
  • sklearn.linear_model: Linear Models 線性模型(線性迴歸、邏輯迴歸、嶺迴歸)
  • sklearn.metrics: Metrics 指標系統
  • Classification metrics 分類指標
  • Regression metrics 迴歸指標
  • Clustering metrics 聚類指標
  • sklearn.model_selection: Model Selection 模型選擇:調參
    • model_selection.train_test_split 切分訓練集測試集
    • model_selection.GridSearchCV 引數網格搜尋
    • model_selection.cross_val_score 交叉驗證
  • sklearn.naive_bayes: Naive Bayes 樸素貝葉斯模型
  • sklearn.neighbors: Nearest Neighbors 最近鄰模型 KNN
  • sklearn.neural_network: Neural network models 神經網路模型
  • sklearn.preprocessing: Preprocessing and Normalization 資料預處理:資料歸⼀化
    • 解決的問題: 資料集中的量綱不統⼀問題
    • 應用的模型: ⼀般來說是要將資料投影到高維特徵空間中去的模型,需要進行歸⼀化
    • preprocessing.MinMaxScaler
      • x ∗ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^*=\frac{x-min(x)}{max(x)-min(x)} x=max(x)min(x)xmin(x) (0-1標準化)
  • sklearn.svm: Support Vector Machines SVM支援向量機
  • sklearn.tree: Decision Trees 決策樹模型

1.6 sklearn中API的基本結構

  • Parameters 引數:建模時,可配置的模型的超引數
  • Attributes 模型屬性:模型建好之後,模型的特性資料
  • Methods 模型方法:fit / score / predict

1.7 sklearn建模的基本流程

  • 1 例項化模型(傳模型引數)
  • 2 模型擬合fit(訓練模型)
  • 3 模型評估(常用score函式)
  • 4 預測新的資料(predict函式)

1.8 sklearn的調參方法

  • 學習曲線
    • 引數學習曲線是⼀條以不同的引數取值為橫座標,不同引數取值下的模型結果為縱座標的曲線,我們往往選擇模型表現最佳點的引數取值作為這個引數的取值
    • ⼀般是通過for迴圈對這個引數進行遍歷,找到每個引數對應的模型結果
  • 交叉驗證
    • 測試集評估模型效果,有⼀定隨機性,可能存在不穩定問題。
    • 解決方案: 我們為了讓結果更加可信,所有對訓練集再次進行拆了成多份,然後重複建立多次模型,然後利用多次結果平均值作為交叉驗證結果,來代表模型的表現情況。
    • K-fold K折交叉驗證
  • 網格搜尋
    • 詳盡搜尋估計器的指定引數範圍內的所有組合的可能值。
    • sklearn.model_selection.GridSearchCV

1.9 不平衡資料集

  • 含義:資料集中樣本類別(y標籤)分類不均
  • 解決方法:
    • 取樣法:過取樣和欠取樣
    • class_weight:為類別新增權重
    • 引入新的評估指標
      • sklearn.metrics.confusion.matrix 混淆矩陣
        在這裡插入圖片描述
      • sklearn.metrics.accuracy_score 準確率 accuracy
        • A c c u r a c y = 11 + 10 11 + 10 + 01 + 00 Accuracy=\frac{11+10}{11+10+01+00} Accuracy=11+10+01+0011+10
      • sklearn.metrics.precision_score 精確度 precision
        • P r e c i s i o n = 11 11 + 01 Precision=\frac{11}{11+01} Precision=11+0111
        • 精確度是" 將多數類判錯後所需付出成本 "的衡量。
      • sklearn.metrics.recall_score 召回率 recall
        • R e c a l l = 11 11 + 10 Recall=\frac{11}{11+10} Recall=11+1011
        • 表示所有真實為1的樣本中,被我們預測正確的樣本所佔的比例
      • sklearn.metrics.precision_recall_score 精確度-召回率平衡曲線
        • 召回率和精確度是此消彼長的,兩者之間的平衡代表了捕捉少數類的需求和儘量不要誤傷多數類的需求的平衡。
      • sklearn.metrics.f1_score F1 measure
        • F − m e a s u r e = 2 1 P r e c i s i o n + 1 R e c a l l = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l F-measure=\frac{2}{\frac{1}{Precision}+\frac{1}{Recall}}=\frac{2*Precision*Recall}{Precision+Recall} Fmeasure=Precision1+Recall12=Precision+Recall2PrecisionRecall
        • 同時兼顧精確度和召回率,我們創造了兩者的調和平均數作為考量兩者平衡的綜合性指標,稱之為F1 measure。

2 演算法介紹

2.1 KNN

  • 算距離 : 給定測試物件,計算它與訓練集中每個物件的距離
  • 找鄰居 : 圈定距離最近的k個訓練物件,作為測試物件的近鄰
  • 做分類 : 根據這k個近鄰歸屬的主要類別,來對測試物件進行分類

2.2 K-means

  • 聚類演算法: 將物理或抽象物件的集合分成由類似的物件組成的多個類的過程被稱為聚類。
  • 評估指標
    • inertia:樣本組內距離平方和。缺點:隨著聚類簇的增加,這個⼀定會下降,所以⽤來調參不太方便
    • 輪廓係數:sklearn.metrics.silhouette_score 輪廓係數的值是介於 [-1,1] ,越趨近於1代表內聚度和分離度都相對較優,-1代表最差,0代表沒有什麼效果,大於0就是有效果

2.3 決策樹

2.3.1 基本術語

  • 根節點:沒有進邊,有出邊。包含最初的,針對特徵的提問。
  • 中間節點:既有進邊也有出邊,進邊只有⼀條,出邊可以有很多條。都是針對特徵的提問。
  • 葉子節點:有進邊,沒有出邊,每個葉子節點都是⼀個類別標籤。
  • 子節點和父節點:在兩個相連的節點中,更接近根節點的是父節點,另⼀個是子節點。

2.3.2 不純度的衡量指標

  • 錯誤度: C l a s s i f i c a t i o n e r r o r ( t ) = 1 − i = 1 m a x [ p ( i / t ) ] Classification\ error(t)=1-_{i=1}^{max}[p(i/t)] Classificationerror(t)=1i=1max[p(i/t)]
  • 資訊熵: E n t r o p y ( t ) = − ∑ i = 0 c − 1 p ( i / t ) l o g 2 p ( i / t ) Entropy(t)=-\sum_{i=0}^{c-1}p(i/t)log_2p(i/t) Entropy(t)=i=0c1p(i/t)log2p(i/t)
  • 基尼指數: G i n i = 1 − ∑ i = 0 c − 1 [ p ( i / t ) ] 2 Gini=1-\sum_{i=0}^{c-1}[p(i/t)]^2 Gini=1i=0c1[p(i/t)]2

2.3.3 分裂過程

  • 就是計算用每一個不同的屬性去對模型進行劃分的過程當中,哪一個屬性使得資料集中的不純度下降的最多,那麼就選擇哪個進行分裂
  • I ( c h i l d ) = ∑ j = 1 k N ( v j ) N I ( v j ) I(child)=\sum_{j=1}^{k}\frac{N(v_j)}{N}I(v_j) I(child)=j=1kNN(vj)I(vj)
  • Δ = I ( p a r e n t ) − I ( c h i l d ) \Delta=I(parent)-I(child) Δ=I(parent)I(child)

2.3.4 C4.5

  • 引入分支度計算,對多分類特徵進行懲罰
    • I n f o r m a t i o n V a l u e = − ∑ i = 1 k P ( v j ) l o g 2 P ( v j ) Information\ Value=-\sum_{i=1}^kP(v_j)log_2P(v_j) InformationValue=i=1kP(vj)log2P(vj)
    • G a i n R a t i o = I n f o r m a t i o n G a i n I n f o r m a t i o n V a l u e Gain\ Ratio=\frac{Information\ Gain}{Information\ Value} GainRatio=InformationValueInformationGain
  • 連續變數處理
    • 演算法首先會對這一列數進行從小到大的排序
    • 選取相鄰的兩個數的中間數作為切分資料集的備選點,若⼀個連續變數有N個值,則在C4.5的處理過程中將產生N-1個備選切分點,並且每個切分點都代表著一種⼆叉樹的切分方案

2.3.5 CART樹

  • 分類與迴歸樹(CART——Classification And RegressionTree)
  • 構建的決策樹是二元(Binary)分類迴歸樹, 即每次只進行二分類, 對於擁有多水平的離散變數或連續變數而言, 同一個變數能多次作為分支條件, 但同一個分類水平只能用於一個分類條件。
  • 預設用基尼指數
- To be continued -