1. 程式人生 > >機器學習中的常用操作

機器學習中的常用操作

機器學習中的常用操作

  • 輸入節點到隱藏節點,特徵數量n可能會變化,這個取決於我們定義的隱藏層的節點個數,但是樣本數量m是不變的,從隱藏層出來還是m
  • 在預測的時候,我們需要不斷的迭代輸入的特徵

提高精度

  • 增加樣本數量
  • 增加特徵
    • 根據現有的特徵生成多項式(從\(x_1\), \(x_2\)擴充套件到\(x_1 + x_2 + x_1^{2} + x_2^{2} + x_1{x_2}\))
    • 尋找新的特徵
  • 增加正則化引數\(\lambda\)
  • 減小正則化引數\(\lambda\)

對資料的劃分

  • 將原來的訓練樣本按照6:2:2的比例劃分成Train, Cross Validation, Test三個集合
  • 如果不考慮Cross Validation的話, 則將訓練樣本劃分成7:3的比例 -> Train(7), Test(3)
  • 關於Cross Validation
    • 如果我們對同一個機器學習問題, 假設了多個不同的模型(表現形式不同, 如\(kx+b\)\(x^2+b\), 而不是\(k_1x+b_1\)\(kx+b\), 因為k和b是我們的引數, 是我們要求的, 他們不應該考慮進去), 我們需要選擇最好的模型, 這個時候就要通過Cross Validation中的資料計算每一個模型測試的\(J_{cv}(\theta)\)來判斷, \(J_{cv}(\theta)\)
      在後面會提到

誤差

  • 一旦對資料集合進行了劃分,那麼我們的損失值就從原來的\(J(\theta)\)變成了\(J_{train}(\theta)\), \(J_{cv}(\theta)\), \(J_{test}(\theta)\), 其中\(J_{train}(\theta)\)的功能就是在沒有進行資料集合劃分的\(J(\theta)\)的功能, 而\(J_{test}(\theta)\)是在我們已經擬合了假設函式, 使用Test集合中的資料進行測試所產生的損失, \(J_{cv}(\theta)\)在上面已經提到過了
  • \(J_{train}(\theta)\), \(J_{cv}(\theta)\)
    , \(J_{test}(\theta)\)的公式和原始的\(J(\theta)\)一樣, 為\(J_{train}(\theta)={{{1}\over{2m}}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^{2}}\), 注意, m表示訓練樣本的數量, x和y也都是在訓練樣本中的, 以此類推到\(J_{cv}(\theta)\), \(J_{test}(\theta)\)

高偏差(high bias)和高方差(high variance)

  • 高偏差: 欠擬合
    • 增加樣本數量是徒勞
  • 高方差: 過擬合
    • 增加樣本數量會提高精度