成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在時(shí)間緊迫情況下進(jìn)行機(jī)器學(xué)習(xí):構(gòu)建標(biāo)記的新聞

人工智能 機(jī)器學(xué)習(xí)
本文介紹了作者和他的三位朋友參加了編程馬拉松,開(kāi)發(fā)出了一個(gè)根據(jù)Hacker News提交的文章進(jìn)行分類(lèi)的分類(lèi)器,緊接著作者分享了比賽過(guò)程中的一些經(jīng)驗(yàn)。

[[195898]]

譯者注:本文介紹了作者和他的三位朋友參加了編程馬拉松,開(kāi)發(fā)出了一個(gè)根據(jù)Hacker News提交的文章進(jìn)行分類(lèi)的分類(lèi)器,緊接著作者分享了比賽過(guò)程中的一些經(jīng)驗(yàn)。以下為譯文。

本周末,三位朋友(Chris Riederer,Nathan Gould和我的孿生兄弟Dan)和我參加了2017 TechCrunch Disrupt Hackathon。 我們以前都會(huì)去參加幾個(gè)這樣的編程馬拉松,也喜歡挑戰(zhàn)在短時(shí)間內(nèi)開(kāi)發(fā)一個(gè)可用的應(yīng)用程序,同時(shí)學(xué)習(xí)一些新技術(shù)。

我們四個(gè)人中有三個(gè)是數(shù)據(jù)科學(xué)家,因此知道應(yīng)該尋找一個(gè)數(shù)據(jù)驅(qū)動(dòng)的項(xiàng)目,因?yàn)樽詈玫木幊恬R拉松項(xiàng)目往往是可用的應(yīng)用程序(而不是分析或lib庫(kù)),我們認(rèn)為應(yīng)該開(kāi)發(fā)一個(gè)以機(jī)器學(xué)習(xí)為驅(qū)動(dòng)的產(chǎn)品,想到了程序員社區(qū)Hacker News的分類(lèi)器,它會(huì)根據(jù)文本自動(dòng)分配每個(gè)提交的主題。

該項(xiàng)目需要下載數(shù)據(jù),培訓(xùn)機(jī)器進(jìn)行學(xué)習(xí),并在24小時(shí)內(nèi)將其變成可用的網(wǎng)站。 在這里我分享了我們?cè)陂_(kāi)發(fā)過(guò)程中學(xué)到的一些經(jīng)驗(yàn)教訓(xùn)。

(請(qǐng)注意,我關(guān)注的是數(shù)據(jù)方面,因?yàn)檫@是我負(fù)責(zé)的模塊,但是Nathan和Dan在開(kāi)發(fā)和設(shè)計(jì)站點(diǎn)方面做了大量工作,同時(shí)為了使站點(diǎn)與Hacker News保持同步,他們也付出了很多心血。)

檢索Hacker News的帖子和文章

Hacker News收集了用戶(hù)提交和上傳的文章,通常是程序員社區(qū)感興趣的內(nèi)容(不只是關(guān)于編程的文章)。我們的任務(wù)是檢索每篇文章的文本,并將其分類(lèi)為哪一種主題。

 

很快我們就知道了,我們需要大量的訓(xùn)練數(shù)據(jù)——也許是成千上萬(wàn)篇文章——為了能夠成功地識(shí)別新文章的主題。要做到這一點(diǎn),我們需要去Hacker News抓取每一篇提交的文章和對(duì)應(yīng)的鏈接,然后查詢(xún)每一篇文章來(lái)檢索它的文本內(nèi)容。

這里犯了一個(gè)錯(cuò)誤,就是依賴(lài)Hacker News API從而一次只下載一個(gè)提交的文章,這樣的話(huà),想獲得25,000個(gè)鏈接得需要好幾個(gè)小時(shí),這是一個(gè)緩慢的過(guò)程。在黑客馬拉松結(jié)束后,我們了解到在Google BigQuery上有一個(gè) Hacker News的數(shù)據(jù)集——在大約20分鐘的配置之后,我就可以下載100萬(wàn)個(gè)鏈接。在比賽的壓力下,我們很難做到一直去尋找類(lèi)似于這種簡(jiǎn)單的解決方案,相反,為了最終實(shí)現(xiàn)可能會(huì)采用一些效率很低的解決方案(但這也是樂(lè)趣的一部分)。

一旦我們有了文章的鏈接,就需要每篇文章的文本內(nèi)容。這是一種挑戰(zhàn),因?yàn)檫@些文章來(lái)自于不同的網(wǎng)站,格式也各不一樣,但是設(shè)計(jì)python-goose正是為了這個(gè)目的。我們把其中的三臺(tái)電腦專(zhuān)門(mén)用來(lái)抓取文章,這樣每小時(shí)可以收集幾千篇。你可以在這個(gè)GitHub庫(kù)中找到我們的抓取代碼和一些結(jié)果。

通常在這樣的項(xiàng)目中,我們會(huì)讓抓取任務(wù)在夜間運(yùn)行,但對(duì)我們來(lái)說(shuō),這并不是一個(gè)可取的選擇!當(dāng)數(shù)據(jù)開(kāi)始下載時(shí),我們分成了兩組:Nathan和Dan負(fù)責(zé)建立網(wǎng)站,而Chris和我負(fù)責(zé)開(kāi)發(fā)收集數(shù)據(jù)的機(jī)器學(xué)習(xí)算法。

開(kāi)發(fā)一個(gè)受監(jiān)督的培訓(xùn)集

要訓(xùn)練一個(gè)受監(jiān)督的分類(lèi)器,你需要一個(gè)標(biāo)簽集:我們應(yīng)該能夠知道文章的正確分類(lèi)是什么。我們沒(méi)有足夠的時(shí)間手工給例子貼上標(biāo)簽。那怎么得到一系列已經(jīng)正確標(biāo)記好的例子呢?

好吧,如果你瀏覽過(guò)幾頁(yè)Hacker News,你會(huì)發(fā)現(xiàn)有些文章通過(guò)標(biāo)題幾乎就已經(jīng)明確地告訴你主題是什么了,或者有些是通過(guò)簡(jiǎn)單的模式匹配也可以知道。看看首頁(yè),比如Why Amazon is eating the world就是關(guān)于亞馬遜的,Why do many math books have so much detail and so little enlightenment?是關(guān)于數(shù)學(xué)的,Don’t tell people to turn off Windows Update是關(guān)于微軟/Windows的。因此,我們決定根據(jù)文章標(biāo)題通過(guò)正則表達(dá)式創(chuàng)建一個(gè)訓(xùn)練集。

這個(gè)過(guò)程進(jìn)行了一些試驗(yàn),包括一些在文章標(biāo)題中對(duì)常見(jiàn)詞和集群的探索性分析。我最喜歡的圖形之一就是通過(guò)文字的形式創(chuàng)建的一個(gè)關(guān)于網(wǎng)絡(luò)的圖形(請(qǐng)參閱我們的圖書(shū)Text Mining with R的這一章節(jié)),這是一個(gè)更好地理解數(shù)據(jù)的好機(jī)會(huì)。

 

我們注意到詞匯中的集群,例如一個(gè)帶有“機(jī)器/深度學(xué)習(xí)”的ML集群,以及各種各樣的政治集群,如“網(wǎng)絡(luò)/中立性”和“trump/fbi”。這幫助我們把注意力集中在可用的話(huà)題上。

下面是我們用來(lái)訓(xùn)練模型的正則表達(dá)式。當(dāng)我們研究結(jié)果的分類(lèi)是否正確,移除導(dǎo)致清除錯(cuò)誤的正則表達(dá)式,并添加一些我們遺漏的部分時(shí),這都是需要進(jìn)行大量的迭代和調(diào)整。

 

R語(yǔ)言中的fuzzyjoin使得匹配這些標(biāo)題變得很容易。你可以在這個(gè)存儲(chǔ)庫(kù)中找到代碼和一些分析程序,以及我們的機(jī)器學(xué)習(xí)工作。

最后我們得到了一個(gè)大約10,000個(gè)標(biāo)記文檔的訓(xùn)練集(注意不是所有的標(biāo)題都匹配任何正則表達(dá)式,有些可以匹配多個(gè))。與每一個(gè)正則表達(dá)式匹配的是:

 

(我們起初還有一些其他的主題,比如“Web開(kāi)發(fā)”和“Javascript”,但最終基于分類(lèi)的結(jié)果刪除了它們)。注意,這并不意味著這些就是站點(diǎn)上最流行的主題!它完全基于我們?yōu)槊總€(gè)主題決定的正則表達(dá)式——如果一些主題比其他主題更容易識(shí)別,或者如果這些正則表達(dá)式有一些疏漏,那么該文章將不會(huì)被反映出來(lái)。

在標(biāo)題上使用正則表達(dá)式是一種非常粗糙的獲取示例的方式,而且不會(huì)完全準(zhǔn)確(例如,關(guān)于“調(diào)整窗口大小(resizing windows)”的標(biāo)題將被標(biāo)記為Microsoft)。但是,它可以是一種快速有效的方法來(lái)構(gòu)建一個(gè)規(guī)模龐大的訓(xùn)練集,并且手工檢查的結(jié)果使我們確信它是準(zhǔn)確的。

一旦我們?cè)谶@些標(biāo)題上訓(xùn)練了算法,它就能夠識(shí)別出標(biāo)題中沒(méi)有任何這些特征的文章。例如,在標(biāo)題拒絕信( Rejection Letter)中沒(méi)有提到它的主題,所以它不在我們的訓(xùn)練集里,但是因?yàn)闃?biāo)題包含了諸如“安全”、“勒索軟件”、“防病毒”和“蠕蟲(chóng)”之類(lèi)的單詞,在我們的訓(xùn)練集里經(jīng)常出現(xiàn)的單詞——這個(gè)算法很容易把它標(biāo)記為“安全”。

培訓(xùn)和生產(chǎn)ML模型

在我們用R語(yǔ)言來(lái)探索數(shù)據(jù)之后,我們使用Python的scikit學(xué)習(xí)包讓機(jī)器進(jìn)行學(xué)習(xí)。這需要三個(gè)步驟:

  • 標(biāo)記化:我們把每一篇文章都變成了一組單詞,用一種“單詞袋(bag of words)”方法(我們忽略了單詞的順序和結(jié)構(gòu))。
  • 維度減少:我們使用了由(gensim Python包)實(shí)現(xiàn)的Latent Dirichlet分配,將單詞適合于主題模型,將每個(gè)文檔轉(zhuǎn)換為長(zhǎng)度為100的向量。每一主題都與數(shù)據(jù)相匹配,與特定的單詞組相關(guān)聯(lián)(例如,一個(gè)主題可能與“特朗普”、“科米”、“俄羅斯”有高度關(guān)聯(lián),而另一個(gè)主題則側(cè)重于“設(shè)計(jì)”、“photoshop”、“css”)。
  • 監(jiān)督分類(lèi):我們使用一種監(jiān)督分類(lèi)器來(lái)預(yù)測(cè)。我們嘗試了兩種方法:正則化邏輯回歸和隨機(jī)森林。

我以前寫(xiě)過(guò)主題建模(它在我們的《Text Mining with R》書(shū)中扮演著重要的角色)。在這里,我們不是用它來(lái)做結(jié)論,而是用它將我們數(shù)以萬(wàn)計(jì)的特性(“這篇文章包含了“比特幣”這個(gè)詞,而不是“)減少到100維的數(shù)據(jù)集里。通過(guò)一些試驗(yàn),我們發(fā)現(xiàn)添加這個(gè)主題建模步驟(而不是直接使用文字作為特性)提高了我們對(duì)模型的準(zhǔn)確性。

我們還發(fā)現(xiàn),隨機(jī)森林在我們訓(xùn)練集上的交叉驗(yàn)證的AUC(ROC曲線下的區(qū)域)方面打敗了正則化邏輯回歸:

 

這與圍繞這些模型的普遍聲譽(yù)相吻合。邏輯回歸更快地進(jìn)行了訓(xùn)練,并且有了更多的解釋?zhuān)窃谔幚碓S多特性交互的情況下,它并沒(méi)有那么好。例如,它不會(huì)注意到“學(xué)習(xí)”這個(gè)詞與“大學(xué)”或“教育”這個(gè)詞的含義不同。

當(dāng)然,這個(gè)訓(xùn)練集的“準(zhǔn)確性”只是意味著“可以預(yù)測(cè)文章的標(biāo)題是否與我們認(rèn)為的正則表達(dá)式相符”,但我們希望這將轉(zhuǎn)化為對(duì)新文章的現(xiàn)實(shí)預(yù)測(cè)。

生產(chǎn)模型

當(dāng)Chris和我在建造這個(gè)模型時(shí),Nathan和Dan已經(jīng)使用Django開(kāi)發(fā)好了網(wǎng)站,部署在Heroku上,并注冊(cè)了一個(gè)域名。它每隔十分鐘與Hacker News API同步,但作為一個(gè)占位符,它被指定為完全隨機(jī)的主題。大約凌晨2點(diǎn),我和Chris有了一個(gè)訓(xùn)練有素的模型,是時(shí)候把我們的努力結(jié)合起來(lái)了。

理論上,在Python中構(gòu)建算法和網(wǎng)站應(yīng)該是很簡(jiǎn)單的,因?yàn)槲覀兛梢詫⑺苯硬迦氲秸军c(diǎn)中的一個(gè)函數(shù)中。我已經(jīng)習(xí)慣通過(guò)與我的團(tuán)隊(duì)合作將R轉(zhuǎn)換為ci來(lái)生產(chǎn)模型,因此,用pickle將模型序列化并直接加載到應(yīng)用程序的能力當(dāng)然是很方便的,并且讓我們能夠靈活地使用我們實(shí)現(xiàn)的模型。

但這并不意味著部署就是十分順利的!我們遇到的兩個(gè)最大的問(wèn)題是:

使用nltk Heroku。最初使用nltk庫(kù)進(jìn)行標(biāo)記化,因?yàn)樗荘ython自然語(yǔ)言處理最強(qiáng)大的工具包。但是它是一個(gè)龐大而又笨重的庫(kù),開(kāi)始在Heroku上運(yùn)行一些關(guān)于安裝和使用它的模糊錯(cuò)誤消息。為了方便,最終切換到gensim(已經(jīng)需要進(jìn)行主題建模)的記號(hào)賦予器,這需要重新培訓(xùn)算法。

Python 2和3之間的pickle:可以在python3上安裝這個(gè)模型,但是用來(lái)查詢(xún)文章文本的Goose,不是Python 3兼容的,我們的生產(chǎn)站點(diǎn)必須在python2中。這就是我們?cè)赑ython 2和3之間遇到了bug的時(shí)候。那時(shí)是凌晨4點(diǎn),修復(fù)需要一些非常不雅的黑客攻擊。

最初考慮將機(jī)器學(xué)習(xí)過(guò)程作為一個(gè)微服務(wù)(通過(guò)網(wǎng)站傳遞文本內(nèi)容以及返回分類(lèi)的獨(dú)立的服務(wù))。它將會(huì)使機(jī)器學(xué)習(xí)算法的切換變得更加輕松(給web團(tuán)隊(duì)一個(gè)API端點(diǎn),而不是代碼和一個(gè)軟件包需求列表)。

交流和分享

而且,我們?cè)趖aggernews.com網(wǎng)站上有一個(gè)實(shí)時(shí)網(wǎng)站。從那以后我們改變了網(wǎng)站,但是當(dāng)我們?cè)诹璩?點(diǎn)30分提交項(xiàng)目的時(shí)候它看起來(lái)是這樣的:

 

Tagger News可以自動(dòng)對(duì)Hacker News的文章進(jìn)行分類(lèi)和排序

# HackDisrupt pic.twitter.com/2mEbrGXIce

——TechCrunch(@TechCrunch),2017年5月14日

演講結(jié)束后,TechCrunch采訪了我們,寫(xiě)了一篇關(guān)于我們的項(xiàng)目的文章,在這些黑客馬拉松活動(dòng)中,我們是第一個(gè)!黑客馬拉松結(jié)束后,我決定完成這個(gè)剩余部分,并將TechCrunch的文章提交給Hacker News,我們很高興用戶(hù)可以在社區(qū)看到并且喜歡:

 

我們?cè)诋a(chǎn)品搜尋上也做得很好。

根據(jù)Google Analytics的數(shù)據(jù),昨天Tagger News大概有6,000訪客,而且數(shù)量還在繼續(xù)增長(zhǎng)。我們也很緊張當(dāng)訪問(wèn)量達(dá)到更多的時(shí)候,應(yīng)用程序會(huì)如何處理——我們?cè)诹璩?:30完成的,而且沒(méi)有足夠的時(shí)間進(jìn)行測(cè)試。但是除了一些關(guān)于設(shè)計(jì)的評(píng)論和一些無(wú)意中錯(cuò)誤分類(lèi)的文章,反饋還是非常積極的!該網(wǎng)站不斷添加新故事,而且大部分內(nèi)容都是正確分類(lèi)的。它是一個(gè)概念的證明,但是是一個(gè)功能性的,它讓我們嘗試一個(gè)有趣的分類(lèi)問(wèn)題并把方法付諸實(shí)踐。 

責(zé)任編輯:龐桂玉 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2023-03-02 08:19:43

不加鎖程序實(shí)時(shí)性

2022-08-24 15:08:19

模型數(shù)據(jù)技術(shù)

2023-03-27 13:00:13

Javascript前端

2018-07-31 16:20:12

Windows 10Windows密碼

2018-12-07 11:15:20

設(shè)置Windows 10命令

2019-10-16 11:52:15

MIT機(jī)器學(xué)習(xí)

2022-11-15 11:02:21

2018-06-27 23:10:12

數(shù)據(jù)中心IT管理運(yùn)維

2019-09-03 09:55:48

DevOps云計(jì)算安全

2021-02-19 09:44:00

云計(jì)算IT服務(wù)IT團(tuán)隊(duì)

2019-09-10 08:00:00

微軟Account網(wǎng)站瀏覽器

2020-10-13 09:27:18

電腦Windows軟件

2024-09-06 08:36:34

2019-07-26 11:51:20

云計(jì)算IT系統(tǒng)

2020-08-11 10:25:38

數(shù)據(jù)成本數(shù)據(jù)大數(shù)據(jù)

2016-01-12 10:38:58

Angular.js代碼調(diào)試

2024-01-17 09:07:32

模型場(chǎng)景

2017-12-05 13:25:40

PHP開(kāi)發(fā)服務(wù)器內(nèi)存

2010-05-14 13:26:12

Subversion和

2021-07-13 06:23:10

petite-vueVite源碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文精品一区二区 | 亚洲欧美国产精品久久 | 久久久久久久久久久久久91 | 欧美一级二级在线观看 | 亚洲午夜精品 | 亚洲精品99久久久久久 | 人人种亚洲 | 中文字字幕一区二区三区四区五区 | 97超碰站| 91精品一区二区 | 亚洲一区二区三区福利 | 成人一区二区三区视频 | 欧美成人激情 | 高清久久久| 国户精品久久久久久久久久久不卡 | 农村妇女毛片精品久久久 | 99精品网 | 91天堂网 | 一级毛片免费完整视频 | 日韩国产一区二区 | 国产精品三级 | 日韩一区二区在线视频 | 成人福利网站 | 日韩高清成人 | 亚洲国产精品suv | 国产情侣激情 | 亚州综合一区 | 亚洲精品一区二区网址 | 免费高潮视频95在线观看网站 | 国产目拍亚洲精品99久久精品 | 久久国产视频一区 | 99精品免费| 91精品国产综合久久久亚洲 | 不卡一区二区在线观看 | 一级片网址 | 亚洲欧美一区二区三区1000 | 亚洲国产91 | 性高湖久久久久久久久 | 日日夜夜免费精品视频 | 国产精品日韩 | 久久精品久久久 |