1、推薦算法中的特征工程楊旭東阿里巴巴算法專家自我介紹 楊旭東 阿里云-計算平臺事業部-機器學習PAI 前 阿里巴巴-搜索事業部-推薦算法團隊 知乎專欄算法工程師的進階之路作者 歡迎掃碼關注大綱一為什么要精做特征工程二何謂好的特征工程三常用的特征變換操作四搜推廣場景下的特征工程為什么要精做特征工程 數據和特征決定了效果的上界,算法和模型只是逼近上界的手段 特征工程是編碼領域專家經驗的重要手段 好的特征工程能夠顯著提升模型性能 高質量的特征能夠大大簡化模型復雜度特征工程的常見誤區 誤區一:深度學習時代不需要特征工程搜索、推薦、廣告領域,數據主要以關系型結構組織特征生成、變換操作的兩大類型:Row-b
2、ased:e.g.feature interactionColumn-based:e.g.counting,tf-idf模型某種程度上可以學習row-based的特征變換;但無法學習column-based的特征變換一次只能接受一個小批次的數據特征工程的常見誤區 誤區二:有了AutoFE工具就不再需要手工做特征工程 AutoFE的研究尚處于初級階段 主要依賴特征變換、生成、搜索與評估 無法自動識別場景的特殊性 瓶頸:評估特征子集的有效性 特征工程非常依賴于數據科學家的業務知識、直覺和經驗 富有創造性和藝術性特征工程的常見誤區 誤區三:特征工程沒有技術含量算法模型的學習特征工程的經驗大綱一為什么
3、要精做特征工程二何謂好的特征工程三常用的特征變換操作四搜推廣場景下的特征工程什么是好的特征工程 高質量特征 有區分性(Informative)特征之間相互獨立(Independent)簡單易于理解(Simple)伸縮性(Scalable):支持大數據量、高基數特征 高效率(Efficient):支持高并發預測、低維 靈活性(Flexible):對下游任務有一定的普適性 自適應(Adaptive):對數據分布的變化有一定的魯棒性Refer:https:/yangxudong.github.io/good-feature/大綱一為什么要精做特征工程二何謂好的特征工程三常用的特征變換操作四搜推廣場景
4、下的特征工程數值型特征的常用變換 特征縮放1.Min-Max:!#$=%&()(%),-%&()(%)0,12.Scale to 1,1:!#$=%&.,)(%),-%&()(%)3.Z-score:!#$=%&/0!(%)123(%)(0,1)4.Log-based:45=log 1+45&!#$=%!#&$/0!(%!#)678%!#5.L2 normalize:!#$=%$6.Gauss Rank:思考題:1.如何量化短視頻的流行度(播放次數)?2.如何量化商品“貴”或“便宜”的程度?3.如何量化用戶對新聞題材的偏好度?數值型特征的常用變換 Robust scaling:!#$%&=()
5、%&*#+()./0數值型特征的常用變換 Binning(分箱)連續特征離散化 E.g.年齡段劃分:兒童、青少年、中年、老年 Why 非線性變換 增強特征可解釋性 對異常值不敏感、防止過擬合 統計、組合 無監督分箱 固定寬度分箱 分位數分箱 對數轉換并取整 有監督分箱 卡方分箱 決策樹分箱思考題1:如何度量用戶的購買力?如何給用戶的購買力劃分檔位?思考題2:經緯度如何分箱?特征Binning示例UserCategoryCountAliceBeauty209AliceFashion34AliceEntertainment90AliceWomen10AliceTechnology1BobMilit
6、ary811BobSport999BobPolitics570BobScience210JoeSociety7JoeGame124binboundary01102503100420054006800710008Binning Bad idea:全局 binning Good idea:按用戶分組 binning(不同用戶的行為頻次可能差異較大)Bad idea:storge boundaries foronline binning(may not beupdated in time,and need onegroup of boundaries per user)Good idea:storg
7、e#bin for onlinepredicting統計特征的binning本質上是按照count排序后對rank做一個劃分類別型特征的常用變換 交叉組合 單特征區分性不強時,可嘗試組合不同特征9=:;類別型特征的常用變換 分箱 高基數特征相對于低基數特征處于支配地位(尤其在tree based模型中)容易引入噪音,導致模型過擬合 一些值可能只會出現在訓練集中,另一些可能只會出現在測試集中 如何裝箱 基于業務理解 Back Off 決策樹模型類別型特征的常用變換 Count Encoding 統計類別特征的frequency Target Encoding 按照類別特征分組計算 target
8、的概率 概率值不置信時需要做平滑 Odds Ratio =3!/(563!)3/(563)類別型特征的常用變換 WOE(Weight Of Evidence)=789:;%=:789:;%時序特征 歷史事件分時段統計 統計過去1天、3天、7天、30天的總(平均)行為數 統計過去1天、3天、7天、30天的行為轉化率 差異 環比、同比 行為序列 需要模型配合大綱一為什么要精做特征工程二何謂好的特征工程三常用的特征變換操作四搜推廣場景下的特征工程關系型數據下的數據挖掘 高基數(high-cardinality)屬性表示為特征時的挑戰 Scalable:to billions of attribute
9、 values Efficient:10?predictions/sec/node Flexible:for a variety of downstream learners Adaptive:to distribution changeUserId=10017241651IP=131.107.65.14ItemId=1001054353category=foodTitle=fresh juice ,#users10#items10Learning with countsUserN+N-Alice7134Bob17235Joe2274REST7891129437(ou()(ou(,)(ou()
10、AliceCounts(Alice)Alice,Item Counts(Alice,)Item Counts()Features are per-behavior-type,per-time-period,per-label counts+backoff Scalablehead in memory+tail in backoff Efficientlow cost,low dimensionality Flexiblelow dimensionality works well with non-linear learners Adaptivenew values easily added,b
11、ack-off for infrequent values,temporal counts=&_=,&Learning with counts:aggregation Aggregate ,for different ItemN+N-10121793410217063510352474AgeN+N-607891129437UserN+N-Alice7134Bob17235Joe12274REST7891129437Category,Price LevelN+N-Food,1112790134Food,35172350Furniture,5925274binbinUser,Cat,PriceLv
12、lN+N-Alice,Hat,57134Bob,Food,89101Joe,Stationery,3299REST7891129437Cross Bin function:any projection無監督:等距、等頻、聚類有監督:卡方分箱、決策樹分箱 Backoff option:“tail bin”timeTnowCountingLearning from counts:combiner trainingUserN+N-Alice7134Bob17235REST7891129437User,Cat,PriceLvlN+N-Alice,Bag,57134Bob,Food,89101REST7
13、89129437ItemN+N-10121793410217063510352474IsRest(!)()(!,)Aggregated featuresOther featurestimeTnowCountingTrain predictorTrain non-linear model on count-based featuresCounts,transforms,lookup propertiesAdditional features can be injectedWhere did it come from?查漏補缺1.列存實體(entity)2.實體分箱&單維度統計/編碼3.特征交叉&多維度統計/編碼