【技術性】AI/ML知識

  1. 作ML最重要的是啥!!跟我念三遍!!LOOK INTO THE DATA! LOOK INTO THE DATA!! LOOK INTO THE DATA!!! 能夠多使用visualization工具來幫助本身理解data。
  2. Pandas算法

    1. 引入:import pandas as pdapp

      常也需import numpy as np
    2. create df:函數

      df = pd.DataFrame(...)
    3. selection:工具

      選列:df['A']
      選行:df[0:3]
      多維:df.loc[:, ['A', 'B']]或df.iloc[:, 0:2]
      選值:df.at[2,'A']或者df.iloc[2,0]
    4. 處理空值:df.dropna df.fillna
    5. apply funcs:df.apply(lambda)
    6. SQL-like join: pd.merge(A, B, on="...")
    7. 文件:df.to_csv("...") pd.read_csv("...")
  3. filtering的pitfall:
    用於filter training data的就不能夠再做爲feature, e.g.
    若是用age < 18來filter了training set,那麼age就不能夠再做爲feature,不然模型就會嚴重學習到age < 18這條手動規則
  4. Ngrams:
    一段text裏相臨近的n個單詞,ngram feature每次就以n爲窗口計算
    ngram model通常是馬爾科夫鏈算法,由前n-1個單詞預測最後一個單詞
  5. feature engineering:
    如何提出好的feature:1)憑直覺 e.g.頭髮長短用於判斷性別; 2)用數據作correlation分析
  6. ROC曲線:
    橫座標FPR, 縱座標TPR, 每一個點上都有threshold,能夠根據距離(0,1)點最近的曲線上點來選擇threshold。(但通常都是0.5不用動。)
  7. TFIDF:
    TFIDF = TF(詞頻) * IDF(逆向文件頻率)
    詞頻越大越重要
    idf越大,即出現詞的文件數越少,越重要
  8. CNN概述:
    通常結構爲學習

    kernals(window) --> convolution layer --> pooling operation --> vectorization

    卷積層:一組平行的feature map,以後通過激活函數(如sigmoid)來決定該神經元是否被激活。
    池化層:downsampling,有助於減小param數量並避免overfit
    常見池化方法:max,min,avg,l2等fetch

  9. Model deployment:
    client request-->server-->(sharding service)-->fetch model from storage (e.g. HDFS, S3)-->load model
  10. 預處理
    通常都要包括去重(!很是重要!不然會overfit和bias)和處理N/A值
  11. train、test set split的pitfall:
    注意不能有data leak!!!因此去重真的很是重要啊。
  12. 通常的ranking backend結構:
    通常first stage作filter(這樣結果才能變少啊),second stage作rank。
    因此先filter model,而後再ranking models
  13. 若是應對position bias(e.g.排第一個的結果收到的點擊最多):
    predict as if they are all shown at position 0
    include position feature
    counterfactual evaluation
  14. Training package: 訓練代碼通常都會打包成package經過command來跑。 通常都是batch training,把行進行batch處理。
相關文章
相關標籤/搜索