與算法、随機森林、支援向量積、神經網絡、以及各種算法的花式排列組合相比,邏輯回歸在多數人看來似乎是太過傳統的統計方法。2014年底的我帶着拯救世界的夢想投向矽谷懷抱的時候,也是這麼認為的。
但是在工作的過程中我漸漸發現,不管聽起來多fancy、多高大上的項目,矽谷的資料分析大佬們多數都會首選邏輯回歸。而我之前自以為可以拯救世界的那些花式算法,其實都是邏輯回歸的變換和推廣,隻是原理有輕微的不同。
後來做到了别的領域的項目,比如搜尋,比如廣告投放,也愈發認識到邏輯回歸的重要性。是以,作為一名統計學出身的資料科學家,我極力向不喜歡看教科書的各位讀者推薦以下這篇文章。我不知道怎麼描述我第一次看到這篇文章的心情,就好比聯考的時候突然有人給我了一份答案的感覺(雖然這個比喻不恰當但是真的是那種感覺,相信你們能感受到的)。
至于怎麼能看透花式,洞悉一切,請看大神的文章吧!(by紀思亮)
abstract
邏輯回歸(logistic regression,簡稱lr)可以說是網際網路領域應用最廣的自動分類算法:從單機運作的垃圾郵件自動識别程式到需要成百上千台機器支撐的網際網路廣告投放系統,其算法主幹都是lr。由于其普适性與重要性,大家在工作中都或多或少的談論着lr,但是筆者發現很多同學對于lr的了解可以進一步提高與深化。是以,筆者準備了這樣一個關于邏輯回歸從入門到精通的文章和同學們一同探讨。本文的目标不像是基維百科那樣泛泛而談、面面俱到地介紹lr,相反而是更注重對lr的了解和其背後的優化算法的掌握,進而使大家更有信心的實作中需要的大規模lr模型,并根據實際問題持續地改進它。另外,由于求解lr是一個性質很好的優化問題。本文也借此機會比較系統的介紹了從最速梯度下降法,到牛頓方法,再到拟牛頓方法(包括dfp、bfgs、l-bfgs)這一系列數值優化算法的脈絡,也算是對數值優化算法中文教程的一個補充吧。最後,請各位上司、大拿、和沖在一線的研究猿與攻城獅們不吝賜教、切磋琢磨、一同進步!
1、動機與目标讀者
大家在平時的工作與學習當中經常會遇到各種決策問題:例如這封郵件是不是垃圾郵件,這個使用者是不是對這個商品感興趣,這個房子該不該買等等。熟悉或接觸過機器學習(machine learning,簡稱ml)的同學知道如果我們需要對這類問題進行決策的時候,最常用的方法是建構一個叫做分類器(classifier)的程式。這種程式的輸入待決策問題的一系列特征(feature),輸出就是程式判定的結果。以垃圾郵件分類為例,每一封郵件就是一個待決策的問題,而通常使用的特征就是從這個郵件本身抽取一系列我們認為可能相關的資訊,例如,發件人、郵件長度、時間、郵件中的關鍵詞、标點符号、是否有多個收件人等等。給定了這些特征,我們的垃圾郵件分類器就可以判定出這封郵件是否是垃圾郵件。至于怎麼得到這個垃圾郵件分類器程式,通常的做法是通過某些機器學習算法。之是以稱其為”學習“ ,是因為這些算法通常需要一些已經标注好的樣本(例如,100封郵件,每封信已經被明确标注為是否是垃圾郵件),然後這個算法就自動的産生一個關于這個問題的自動分類器程式。我們在這篇文章中将要講得邏輯回歸(logistic regression,簡稱lr)就是最常用的一個機器學習分類算法。
很多同學可能知道機器學習中有幾十種分類器,那麼我們為什麼偏偏挑lr來講呢?原因有三:
lr模型原理簡單,并且有一個現成的叫liblinear 的工具庫,易于上手,并且效果不錯。
lr可以說是網際網路上最常用也是最有影響力的分類算法。lr幾乎是所有廣告系統中和推薦系統中點選率(click through rate(ctr))預估模型的基本算法。
lr同時也是現在炙手可熱的“深度學習”(deep lerning)的基本組成單元,紮實的掌握lr也将有助于你的學好深度學習。
但是文本并不是一篇關于lr的科普性文章,如果你想泛泛地了解lr,最好的辦法是去維基百科或者找一本像樣的機器學習教材翻一下。相反的,本文的目标是是你不僅僅“知其然”,并且更“知其是以然”,真正做到從入門到精通,進而更加有信心地解決lr實踐中出現的新問題。我們可以粗略的把入門到精通分為三個層次。
了解lr:了解lr模型、l1和l2規則化(regularization)、為什麼l1規則化更傾向于産生稀疏模型(sparse model)、以及稀疏模型的優點。
了解lr:了解lr模型的學習算法、能夠獨自推導基于l-bfgs的l1和l2規則化的lr算法,并将其在mpi平台上并行化實作。
改進lr:能夠在實際中自如應用lr,持續改進lr來解決實際中未曾遇見到的問題。例如,當資料中的正樣本遠遠小于負樣本的情況下(例如,廣告點選率預告問題),該怎麼調整lr?當資料中有相當部分缺失時該如何調整算法?
由于求解lr是一個性質很好的無限制優化問題,本文在介紹lr的同時,也相對系統的介紹了無限制優化問題中的幾個常用的數值方法,包括最速梯度下降方法、牛頓方法、和拟牛頓方法的dfp、bfgs、與l-bfgs。期望同學們能在知道了解這些算法的同時真正明白其原理與應用場景,例如了解為什麼l-bfgs中的二次循環方法(two iteration method )能夠近似計算牛頓方向,并且可以輕松的并行化。這些算法是關于無限制問題的通過優化算法,應用場景非常廣泛,但筆者并未發現關于他們比較系統化的、又同時比較容易了解中文教程,本文也算是填補這方面空白的一個嘗試吧。是以,希望能在學習lr的同時将優化算法一并學了,相得益彰吧。
是以,本文預期的讀者大概如下幾類:
高階機器學習人員:碩士畢業後5年及以上的機器學習經曆,你就把這個當成一個關于lr和無限制優化算法的回顧材料好了,如有錯誤和不足請加以斧正。
中階機器學習人員:碩士畢業後3~5年的機器學習經曆,你可以把這個當做學習資料,把以前學過的東西串在一起,查漏補缺,做到真正懂得lr和相關優化的算法,進而能對工程實踐做出正确的指導。
入門機器學習人員:碩士畢業後少于3年的機器學習經曆,請你把紙和筆拿出來,把裡面的公式一個個推導一遍,進而當你的leader告訴你某些事情的時候,你知道如何下手。
機器學習人員以外的高富帥和白富美們:你隻需要知道lr是一個好用的自動分類算法,吩咐研究猿和攻城獅做就好了。另外,還可以用這篇文章嘲弄機器學習的屌絲們:累死累活,死那麼多腦細胞,掙那兩兒錢。
總而言之,不管你在機器學習上的造詣幾何,希望這篇文章或多或少的都能給你帶來點什麼。筆者非常歡迎各方人士對本文以及任何與機器學習、資料挖掘相關問題的垂詢、切磋、與探讨,好吧,閑話不多說,進入正題。
正文概覽
2、初識邏輯回歸
3、l1 vs. l2規則化
4、求解l2規則化的邏輯回歸
5、owl-qn:用l-bfgs求解l1規則化的邏輯回歸
6、相關工作
7、前沿研究
關于作者
柳超博士,天眼查創始人、董事長兼總經理,國家青年“千人計劃”專家、北京市特聘專家、北京航空航天大學“大資料”特聘教授、中國大資料專家委員會委員、國家下一代網際網路産業技術創新聯盟專家。柳超博士創辦天眼查之前,曾任搜狗科技首席科學家,美國微軟研究院總部研究經理,美國國家自然科學基金資料挖掘方向的評審專家。
柳超于2007年在美國伊利諾伊大學獲得計算機博士學位,并獲得伊利諾伊大學傑出畢業論文獎,之後在資料挖掘、雲計算、大資料分析、軟體工程等方面取得了出色的研究成果。2008年至2012年,柳超博士任職于美國微軟研究院,主管資料智能團隊,期間在資訊檢索、資料挖掘和機器學習等諸多大資料相關領域作出了突出貢獻,共計出版了 3 本英文專著、5篇國際期刊文章,以及30餘篇國際一流學術會議文章,共計1300+次獨立引用。
柳超博士在美期間曾擔任美國國家自然科學基金資料挖掘方向的評審專家,多次應邀赴國際知名會議做主題報告。其工作成果在國際上備受關注,曾被國際電子電氣工程師協會的ieee computer專業雜志以特邀封面文章的形式進行報道。
2012年,柳超博士回國加入騰訊科技(北京)有限公司,上司“騰訊搜尋”的相關資料挖掘與機器學習業務。2014年,在騰訊與搜狗的戰略合并之際加入搜狗科技,出任首席科學家,從零組建了搜狗資料科學研究院,全面負責搜狗網際網路業務的資料挖掘與機器學習的前沿研究。
柳超博士創辦的天眼查公司是中國首款關系發現平台,秉持“讓每個人公平地看清這個世界”的使命,天眼查系列産品不僅可以可視化呈現複雜的商業關系,還可以深度挖掘和分析相關資料,預警風險等。目前,天眼查已經形成了針對媒體、金融、政府、法律等衆多領域的大資料解決方案。
原文釋出時間為:2016-05-05
本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号