阿里&新浪微博比賽相關心得--持續更新

  介紹就從簡了,阿里和新浪微博舉辦的數據比賽,用數據挖掘機器學習那一套對新浪微博數據進行預測分析。詳細的介紹仍是拜讀官網吧,下面開始進入正題:數據庫

1、數據的載入和處理機器學習

  本次競賽的數據量有幾百M,若是用matlab來進行處理的話,內存會吃不消,由於matlab變量是存在內存裏面的,筆者的臺式機8G內存,除去系統的3G,剩下的5G用來讀這些數據,讀取進來就已經很吃力了,別說處理了,因此,數據的載入和處理,我決定交給SQL server 這樣的數據庫系統軟件來作。我matlab並不熟練,可能有更好的方法來載入處理,若是讀者知道的話,請務必在下面留言,告知筆者,給筆者一個長知識的機會,謝謝!學習

  差點又離題了,此次數據的載入,關鍵須要注意的地方就是中文文本的處理方式,由於官方給予的數據的默認編碼方式是utf-8的統一編碼格式,若是你數據庫設置的排序規則——就是語言首選項之類的設置的不對的話,那麼你導入進去也是亂碼顯示的。這個時候,須要你更改語言的排序規則,或者把元數據稍微用系統自帶的記事本打開數據,另存爲中文格式的數據一下(就是ANSI的格式),也能夠。關鍵就是,必定要統一,這點很重要,官方數據是utf-8的話,你的數據庫默認的排序規則就要設置爲latin,但不巧的是,我安裝的時候設置成簡體中文了,修改排序規則的話,我其餘的數據庫也得變,因此,我儘可能不應底層,用記事本修改下官方的數據,再導入,也不失爲一種折衷的高效之舉。編碼

  

  好了,數據導入已經完畢了,下次再寫好了,筆者困到不行了。server

二,提交一份數據blog

  此次要預測的數據是微博的轉發數,評論數,和讚的數量。並且評測的方法是相似於MSE準則的評分方式,詳情請見大賽官網,若是是MSE準則評分方式,採起提交平均分的方式是很是佔便宜的,由於根據統計學的知識,樣本的均方值會在樣本數趨於無窮的時候,收斂於真實的均值,也就是說,平均分這樣的作法,對於採起MSE準則來講,是比較容易得到高分的。這樣解釋可能你們都豁然開朗了。接下來想說一下個人具體的解題思路,就是把數據進行文本關鍵詞分類,時間分類,以後再聚類,而後在這些聚類下分別進行平均,而後得出一個比較精確的平均結果,那你有可能有疑問,既然是平均,最容易想到的是總體的平均值,若是提交一份總體的平均值,不是也能夠嗎?對,那樣是平均值,可是那樣的平均值太粗糙了,每一個人發的每篇微博的狀況都不同,假如你把每一個人的每篇微博都平均了,以後的得出來的結果就是一個過擬合的結果了,由於你認爲每一個人都是服從總體平均的,這樣的依據是不合理的,因此,還須要科學合理的分類,或者用一些巧妙的聚類手段,將咱們的用戶和博文進行分類以後,在細分的基礎上進行平均,這樣的成績理應比粗糙的平均更有說服力,並且成績更高才對。排序

  基於這樣一個想法,咱們今天就提交了一份,每一個用戶的平均。由於要預測的用戶,和訓練的用戶是有重疊的,換句話說,訓練數據中,甲發了微博A,微博B,有了它的評論數,轉發數,和贊數,而預測數據一樣數顯了甲,可是,咱們就是要預測他的微博C和微博D的評論數,轉發數,和贊數,其中,90%以上都是這樣一種狀況,剩下的10%是什麼狀況呢?剩下的是一些新用戶。好比訓練數據中,出現了乙的微博M,微博N的評論數,轉發數和贊數,可是預測數據出現了新用戶丙,咱們要預測新用戶丙的微博X的評論數,轉發數,和贊數。這樣就明顯製造了一個分類,就是,預測數據中在訓練數據中出現的老用戶,和訓練數據中沒有出現的新用戶,這樣兩大陣營。咱們對老用戶,用老用戶的平均數據來預測,咱們對於新用戶,用總體的平均數據來預測(保守起見而已),那麼就得出了一份比較基本的結果了。內存

  今天的結果是,正確率37.24%,看來下一步還須要進一步的分類和分析才行呢。加油。持續更新中~utf-8

相關文章
相關標籤/搜索