ML-機器學習實踐

透明的胡蘿蔔發表於2019-03-05

目錄

 

超引數選擇

Gride Search

Random Search

相關庫

幾種引數估計的區別與聯絡:MLE、MAP、貝葉斯TODO

餘弦相似度(cos距離)與歐式距離的區別和聯絡

1)區別

2)聯絡

 歸一化 標準化 

混淆矩陣、模型度量指標:準確率、精確率、召回率、F1值

關聯規則挖掘的3個度量指標:支援度、置信度、提升度


超引數選擇


Gride Search

  • 網格搜尋
  • 在高維空間中對一定區域進行遍歷

Random Search

  • 在高維空間中隨機選擇若干超引數

相關庫

幾種引數估計的區別與聯絡:MLE、MAP、貝葉斯TODO


聊一聊機器學習的MLE和MAP:最大似然估計和最大後驗估計

餘弦相似度(cos距離)與歐式距離的區別和聯絡


  • 歐式距離和餘弦相似度都能度量2個向量之間的相似度
  • 放到向量空間中看,歐式距離衡量兩點之間的直線距離,而餘弦相似度計算的是兩個向量之間的夾角
  • 沒有歸一化時,歐式距離的範圍是 [0, +∞],而餘弦相似度的範圍是[-1,1];餘弦距離是計算相似度,而歐式距離計算的是相同程度(對應值的相同程度)
  • 歸一化的情況下,可以將空間想象成一個超球面(三維),向量餘弦值等價與兩點的球面距離,歐式距離就是球面上兩點的直線距離,本質是一樣的

餘弦相似與歐氏距離有什麼區別和聯絡-github-挺詳細的

歐氏距離和餘弦相似度的區別是什麼? 

1)區別

假設 2人對三部電影的評分分別是 A = [3, 3, 3] 和 B = [5, 5, 5]

那麼2人的歐式距離是 根號12 = 3.46, A、B的餘弦相似度是1(方向完全一致)。

餘弦值的範圍是[-1, 1], 越接近於1,說明2個向量的方向越相近

歐式距離和餘弦相似度都能度量2個向量之間的相似度,但是歐式距離從2點之間的距離去考量,餘弦相似從2個向量之間的夾角去考量。 從上例可以發出,2人對三部電影的評價趨勢是一致的,但是歐式距離並不能反映出這一點,餘弦相似則能夠很好地反應。餘弦相似可以很好地規避指標刻度的差異,最常見的應用是計算 文字的相似度 。

2)聯絡

從下圖的公式可以看出,歸一化後計算的歐式距離是關於餘弦相似的單調函式,可以認為歸一化後,餘弦相似與歐式距離效果是一致的(歐式距離越小等價於餘弦相似度越大)。

因此可以將 求餘弦相似轉為求歐式距離 ,餘弦相似的計算複雜度過高,轉為求歐式距離後,可以藉助KDTree(KNN演算法用到)或者BallTree(對高維向量友好)來降低複雜度。

4.cosine.png

 歸一化 標準化 


歸一化(Normalization)標準化(Standardization)指代四種feature scaling(特徵縮放)方法:

1、Rescaling(min-max normalization)

最小-最大歸一化,也被稱為最大-最小縮放,對原始資料進行線性變換把資料對映到[0,1]之間。

x^{'} = \frac{x-min(x))}{max(x)-min(x))}

其中minmin是樣本中最小值,maxmax是樣本中最大值,注意在資料流場景下最大值與最小值是變化的。另外,最大值與最小值非常容易受異常點影響,所以這種方法魯棒性較差,只適合傳統精確小資料場景。

如果存在離群點,會影響規範化,若在規範化之後新增新的資料,當新資料落在原資料區間之外,會導致“越界”錯誤

2、mean normalization(均值歸一化)(沒查到這個)

x^{'} = \frac{x-average(x))}{max(x)-min(x)}

3、standardization(標準化)

常用的方法是z-score標準化,經過處理後的資料均值為0,標準差為1,處理方法是:

x^{'} = \frac{x-\bar{x}}{\sigma}

其中μ是樣本的均值,σ是樣本的標準差,它們可以通過現有樣本進行估計。在已有樣本足夠多的情況下比較穩定,適合現代嘈雜大資料場景。(z-score規範化)

對離群點不敏感

4、scaling to unit length(縮放到單位長度)

x^{'} = \frac{x}{\left \| x \right \|}

在幾何學中,向量的大小等於有向線段的長度。我們用雙豎線來表示向量的大小(例如,‖u‖表示u的大小)

對於任意非零向量v,都能計算出一個和v方向相同的單位向量n,這個過程被稱作為向量的“標準化”,要標準化向量,將向量除以它的大小(模)即可。

n = \frac{v}{\left \| v \right \|}

標準化歸一化的好處--詳解

向量運算(向量基本概念,挺有用)

混淆矩陣、模型度量指標:準確率、精確率、召回率、F1值


分詞中的評價標準:

 

混淆矩陣

  • True Positve(TP):將正類預測為正類的數量
  • True Negtive(TN):將負類預測成負類的數量
  • False Positve(FP):將負類預測成正類 --> 誤報
  • False Negtive(FN):將正類預測為負類 --> 誤報 

confusion_matrix.png

準確率(accuracy)

ACC = \frac{TP+TN}{TP+TN+FP+FN}

精確率(precision)

P = \frac{TP}{TP+FP}

準確率 精確率 的區別

在正負樣本不平衡的情況下,準確率這個評價指標有很大的缺陷。比如在網際網路廣告裡面,點選的數量是很少的,一般只有千分之幾,如果用acc,即使全部預測成負類(不點選)acc 也有 99% 以上,沒有意義。

召回率(recall,sensitivity,true positive rate,查全率)

R = \frac{TP}{TP+FN}

F1值——精確率和召回率的調和均值

F1 = \frac{2\times P \times R }{P+R}        F1 = \frac{2TP}{2TP+FP+FN}

只有點那個精確率和召回率都很高時,F1值才會高

如何處理資料中的缺失值


可以分為2種情況:

1、缺失值較多

  • 直接捨棄該列特徵,否則可能會帶來較大的噪聲,從而對結果造成不良影響

2、缺失值較少

  • 當缺失值較少(<10%)時,可以考慮對缺失值進行填充,以下是幾種常用的填充策略:
    • 用一個異常值填充(比如0),將缺失值作為一個特徵處理
    • 用均值|條件均值填充

      如果資料是不平衡的,那麼應該使用條件均值填充

      所謂條件均值,指的是與缺失值所屬標籤相同的所有資料的均值

  • 用相鄰資料填充
    # 用前一個資料填充
    data.fillna(method='pad')
    # 用後一個資料填充
    data.fillna(method='bfill') 

     

  • 插值

    data.interpolate()

 

關聯規則挖掘的3個度量指標:支援度、置信度、提升度

 

相關文章