- 做ML最重要的是啥!!跟我念三遍!!LOOK INTO THE DATA! LOOK INTO THE DATA!! LOOK INTO THE DATA!!! 可以多使用visualization工具来帮助自己理解data。
-
Pandas
-
引入:import pandas as pd
常也需import numpy as np
-
create df:
df = pd.DataFrame(...)
-
selection:
选列:df['A'] 选行:df[0:3] 多维:df.loc[:, ['A', 'B']]或df.iloc[:, 0:2] 选值:df.at[2,'A']或者df.iloc[2,0]
- 处理空值:df.dropna df.fillna
- apply funcs:df.apply(lambda)
- SQL-like join: pd.merge(A, B, on="...")
- 文件:df.to_csv("...") pd.read_csv("...")
-
- filtering的pitfall:
用于filter training data的就不可以再作为feature, e.g.
如果用age < 18来filter了training set,那么age就不可以再作为feature,否则模型就会严重学习到age < 18这条手动规则 - Ngrams:
一段text里相临近的n个单词,ngram feature每次就以n为窗口计算
ngram model一般是马尔科夫链算法,由前n-1个单词预测最后一个单词 - feature engineering:
如何提出好的feature:1)凭直觉 e.g.头发长短用于判断性别; 2)用数据做correlation分析 - ROC曲线:
横坐标FPR, 纵坐标TPR, 每个点上都有threshold,可以根据距离(0,1)点最近的曲线上点来选择threshold。(但一般都是0.5不用动。) - TFIDF:
TFIDF = TF(词频) * IDF(逆向文件频率)
词频越大越重要
idf越大,即出现词的文件数越少,越重要 -
CNN概述:
一般结构为kernals(window) --> convolution layer --> pooling operation --> vectorization
卷积层:一组平行的feature map,之后经过激活函数(如sigmoid)来决定该神经元是否被激活。
池化层:downsampling,有助于减少param数量并避免overfit
常见池化方法:max,min,avg,l2等 - Model deployment:
client request-->server-->(sharding service)-->fetch model from storage (e.g. HDFS, S3)-->load model - 预处理
一般都要包括去重(!非常重要!否则会overfit和bias)和处理N/A值 - train、test set split的pitfall:
注意不能有data leak!!!所以去重真的非常重要啊。 - 一般的ranking backend结构:
一般first stage做filter(这样结果才能变少啊),second stage做rank。
所以先filter model,然后再ranking models - 如果应对position bias(e.g.排第一个的结果收到的点击最多):
predict as if they are all shown at position 0
include position feature
counterfactual evaluation - Training package:
训练代码一般都会打包成package通过command来跑。
一般都是batch training,把行进行batch处理。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。