sigkdd 每年都會獎勵一篇**,這篇**要在過去十年間對研究,方**以及實踐產生重大影響,這就是所謂的時間檢驗獎。
這次授予是為了表彰thorsten的**《線性時間內訓練線性支援向量機》。
這次的時間檢驗獎就是獎勵他如何把支援向量機的訓練達到線性複雜度,從而使支援向量機在大規模資料上的應用成為可能。
貢 獻一
貢獻一貢獻
一:他致力於把支援向量機的基本演算法,也就是僅僅支援分類問題和回歸問題的演算法,應用到更加複雜的有結構的輸出結果上,俗稱結構化的支援向量機演算法。
因此,支援向量機可以對資訊檢索中很多複雜的,非二分的評估指標進行直接優化,如f1值,平均精度均值,從而讓支援向量機的應用變得更加廣闊。
貢 獻二
貢獻二貢獻
二:在讓支援向量機能夠順利應用到資訊檢索的過程中,thorsten 還發現了另外乙個問題,那就是如何利用搜尋引擎的間接使用者反饋(implicit feedback)來訓練排序演算法(經常是乙個結構化的支援向量機模型)。具體來說,傳統的搜尋系統和資訊檢索系統主要是依靠人工標註的訓練資料來進行優化和評估。這裡所說的人工標註訓練資料,主要是指人為地評價目標查詢關鍵字和所對應的網頁是否相關。
貢 獻三
貢獻三貢獻
三:把**因果推論(causal inference)**和機器學習相結合,從而能夠更加無偏差地訓練模型。可以說這部分工作開創了乙個新領域。
長期以來,如何有效地應用使用者產生的互動資料來進行模型訓練,都是大規模機器學習特別是工業界機器學習的難點。一方面,工業系統能夠產生很多使用者資料;另一方面,這些使用者資料又受到當前部署系統的影響,一般都有一定的偏差。
因此工業級機器學習系統面臨乙個長期挑戰,那就是,如何能夠在評估模型以及訓練模型的時候考慮到這樣的偏差,從而去除這樣的偏差。
thorsten 利用因果推論中的傾向評分(propensity scoring)技術以及多臂賭博機(multi-armed bandit)思想,把這樣的方法成功地引入到機器學習中,使得無偏差地訓練模型成為可能。目前,這方面的新研究和新思想正在機器學習以及應用界產生越來越多的共鳴。
回到這篇時間檢驗獎的**,它解決的是大規模優化支援向量機的問題,特別是線性支援向量機。這篇文章第一次提出了簡單易行的線性支援向量機實現,包括對**有序回歸(ordinal regression)**的支援。演算法對於分類問題達到了 o(sn)(其中 s 是非 0 的特徵數目而 n 是資料點的個數),也就是實現了線性複雜度,而對有序回歸的問題達到了 o(snlog(n)) 的複雜度。演算法本身簡單、高效、易於實現,並且理論上可以擴充套件到核函式(kernel)的情況。
在此之前,很多線性支援向量機的實現都無法達到線性複雜度 。比如當時的 libsvm(台灣國立大學的學者發明)、svm-torch、以及早期的 svm-light 中採用的分解演算法(decomposition method)都只能比較有效地處理大規模的特徵。而對於大規模的資料 (n),則是超線性(super-linear)的複雜度。
另外的一些方法,能夠訓練複雜度線性地隨著訓練資料的增長而增長,但是卻對於特徵數 n 呈現了二次方 的複雜度。因此之前的這些方法無法應用到大規模的資料上。這樣的情況對於有序回歸支援向量機更加麻煩。從德國學者拉爾夫·赫布里希(ralf herbrich)提出有序回歸支援向量機以來,一直需要通過轉化為普通的支援向量機的分類問題而求解。這個轉換過程需要產生 o(n^2) 的訓練資料,使得整個問題的求解也在這個量級的複雜度。
這篇文章裡,thorsten 首先做的是對普通的支援向量機演算法的模型形式(formalism)進行了變形。他把傳統的分類支援向量機(classification svm)寫成了結構化分類支援向量機(structural classification svm),並且提供了乙個定理來證明兩者之間的等價性。粗一看,這個等價的結構化分類支援向量機並沒有提供更多有價值的資訊。然而這個新的優化目標函式的對偶(dual)形式,由於它特殊的稀疏性,使它能夠被用來進行大規模訓練。緊接著,thorsten 又把傳統的有序回歸支援向量機的優化函式,寫成了結構化支援向量機的形式,並且證明了兩者的等價性。
把兩種模型表達成結構化向量機的特例之後,thorsten 開始把解決結構化向量機的一種演算法——切割平面演算法(cutting-plane),以下稱 cp 演算法,運用到了這兩種特例上。首先,他展示了 cp 演算法在分類問題上的應用。簡單說來,這個演算法就是保持乙個工作集合(working set),來存放當前迴圈時依然被違反的約束條件(constraints),然後在下一輪中集中優化這部分工作集合的約束條件。
整個流程開始於乙個空的工作集合,每一輪優化的是乙個基於當前工作集合的支援向量機子問題,演算法直到所有的約束條件的誤差小於乙個全域性的引數誤差為止。thorsten 在文章中詳細證明了這個演算法的有效性和時間複雜度。相同的方法也使得有序回歸支援向量機的演算法能夠轉換成為更加計算有效的優化過程。
thorsten 在文章中做了詳盡的實驗來展現新演算法的有效性。從資料的角度,他使用了 5 個不同的資料集,分別是路透社 rcv1 資料集的好幾個子集。資料的大小從 6 萬多資料點到 80 多萬資料點不等,特徵數也從幾十到四萬多特徵不等,這幾種不同的資料集還是比較有代表性的。從方法的比較上來說,thorsten 主要比較了傳統的分解方法。
有兩個方面是重點比較的,第一就是訓練時間。在所有的資料集上,這篇文章提出的演算法都比傳統演算法快幾個數量級,提速達到近 100 倍。而有序回歸的例子中,傳統演算法在所有資料集上都無法得到最後結果。thorsten 進一步展示了訓練時間和資料集大小的線性關係,從而驗證了提出演算法在真實資料上的表現。
第二個重要的比較指標是演算法的準確度是否有所犧牲。因為有時候演算法的提速是在犧牲演算法精度的基礎上做到的,因此驗證演算法的準確度就很有意義。在這篇文章裡,thorsten 展示,提出的演算法精度,也就是分類準確度並沒有統計意義上的區分度,也讓這個演算法的有效性有了保證。
thorsten 在他的軟體包svm-perf中實現了這個演算法。這個軟體包一度成了支援向量機研究和開發的標準工具。
在什麼應用場景下,線性大規模支援向量機可以有比較好的效果?
暫時無好的答案,日後補充
2023年 3月到2023年6月
這段時間在做乙個比較大的專案,工作量很大。總結一下吧。從2014年畢業到現在有3年多了,從android轉web端也有一段時間了。轉型的這段時間可以說挺痛苦的。剛開始還以為做web挺簡單的。但是到後面才發現事實並非如此。在這段時間踩了很多坑。1 做功能的時候忘了看設計原型跟需求文件,照著設計稿畫瓢,...
時間序列平穩性檢驗 R語言KPSS檢驗
用r自帶的google股價變化資料goog為例 可以通過匯入fpp2包之後直接使用goog這個陣列變數 r 為 library urca summary ur.kpss goog 輸出結果如下 1 比較顯然地,檢驗的結果是用 value of test statistic 10.7223,來和下面最...
2023年總結,2023年規劃
距離2017年還有2小時不到,其實一直想寫總結了.無奈一直作罷,主要原因是不知道如何說起,每次看到2016年規劃,心生慚愧.逃避終究不是辦法,直面人生吧.說說今年發生的主要事件吧 a.6月換了工作.現在小公司的生存很困難,我曾經信誓旦旦做好了長期在上家外包公司奉獻的準備,無奈今年專案特別少,幾乎沒有...