文本無處不在,對社會科學家來說,它是一個極好的資源。然而,由于信息非常豐富,而且語言又是千變萬化的,通常很難提取出我們想要的信息。人工智能的整個子領域與文本分析(自然語言處理)有關。開發的許多基本分析方法現在都可以作為Python實現使用。這本書將告訴您何時使用哪個方法、它如何工作的數學背景以及實現它的Python代碼。
概述:
今天,文本是我們生活中不可或缺的一部分,也是最豐富的信息來源之一。平均每天,我們閱讀約9000字,包括電子郵件、短信、新聞、博客文章、報告、推特,以及街道名稱和廣告。在你一生的閱讀過程中,這會讓你有大約2億字。這聽起來令人印象深刻(事實也的確如此),然而,我們可以在不到0.5 g的空間里存儲這些信息:我們可以在u盤上隨身攜帶一生都值得閱讀的信息。在我寫這篇文章的時候,互聯網上估計至少有超過1200 TB的文本,或250萬人的閱讀價值。現在,大部分文本都以社交媒體的形式存在:微博、推特、Facebook狀態、Instagram帖子、在線評論、LinkedIn個人資料、YouTube評論等等。然而,文本即使在線下也是豐富的——季度收益報告、專利申請、問卷答復、書面信函、歌詞、詩歌、日記、小說、議會會議記錄、會議記錄,以及成千上萬的其他形式,可以(也正在)用于社會科學研究和數據挖掘。
文本是一個極好的信息來源,不僅僅是因為它的規模和可用性。它(相對)是永久性的,而且——最重要的是——它對語言進行編碼。這一人類能力(間接地,有時甚至直接地)反映了廣泛的社會文化和心理結構:信任、權力、信仰、恐懼。因此,文本分析被用于衡量社會文化結構,如信任(Niculae, Kumar, Boyd-Graber, & danescul - niculescul - mizil, 2015)和權力(Prabhakaran, Rambow, & Diab, 2012)。語言編碼了作者的年齡、性別、出身和許多其他人口統計因素(Labov, 1972;Pennebaker, 2011;Trudgill, 2000)。因此,文本可以用來衡量社會隨著時間推移對這些目標概念的態度(見Garg, Schiebinger, Jurafsky, & Zou, 2018;Hamilton, Leskovec, & Jurafsky, 2016;Kulkarni, Al-Rfou, Perozzi, & Skiena, 2015)。
然而,這種海量數據可能很快就會讓人喘不過氣來,處理這些數據可能會讓人望而生畏。文本通常被稱為非結構化數據,這意味著它不是以電子表格的形式出現,而是整齊地按類別排列。它有不同的長度,如果不首先對其進行格式化,就不能很容易地將其送入您喜歡的統計分析工具。然而,正如我們將看到的,“非結構化”是一個有點用詞不當。文本絕不是沒有任何結構的——它遵循非常規則的結構,受語法規則的控制。如果你知道這些,理解文本就會變得容易得多。
這本書分成兩部分。在前半部分,我們將學習文本和語言的一些基本屬性——語言分析的層次、語法和語義成分,以及如何描述它們。我們還將討論為我們的分析刪除哪些內容,保留哪些內容,以及如何計算簡單、有用的統計數據。在下半部分,我們將著眼于探索,發現數據中的潛在結構。我們將從簡單的統計學習到更復雜的機器學習方法,如主題模型、詞嵌入和降維。
最后,一本關于創造性編程的書,直接寫給藝術家和設計師!這本書的目標讀者是那些在設計、藝術和教育的交叉領域工作的創造性人才,而不是遵循計算機科學課程。
這本書你將學習如何將計算應用到創造性的過程中,遵循四個步驟,通過這個步驟,你將進入編碼和藝術的橫截面,重點放在實際的例子和相關的工作結構上。您將跟隨計算藝術的一個真實的用例,并看到它如何與四個關鍵支柱聯系起來,并解決創造性過程中的潛在陷阱和挑戰。所有的代碼示例都是在一個完全集成的處理示例庫中提供的,這使得讀者很容易上手。
這種在技能習得和創造性過程和開發之間的獨特和微妙的平衡方法使《編碼藝術》成為了一本實用的參考書,無論是對于創造性編程還是對于教授和學生的創造性過程。
你將學習
這本書是給誰的
第一節課的重點是分析今天能夠進行并行計算的典型個人計算機中的算法行為,第二節課的重點是今天能夠進行分布式計算的典型公共云中的此類個人計算機集群中的算法行為。我們將從第1節中簡要介紹的基本原理開始,并努力理解過去幾十年來算法的重大突破。并行計算是指在一臺機器上使用多個處理器和共享內存進行計算。并行計算和分布式計算雖然密切相關,但它們都提出了獨特的挑戰——主要是并行計算情況下的共享內存管理和分布式計算情況下的網絡通信開銷最小化。理解并行計算的模型和挑戰是理解分布式計算的基礎。課程內容反映了這一點,首先在并行環境中涵蓋各種經典的、數值的和圖形的算法,然后在分布式環境中涵蓋相同的主題。目的是強調每個設置帶來的獨特挑戰。
//github.com/lamastex/scalable-data-science/blob/master/read/daosu.pdf
想要徹底理解C++11和C++14,不可止步于熟悉它們引入的語言特性(例如,auto型別推導、移動語義、lambda表達式以及并發支持)。挑戰在于高效地運用這些特性——從而使你的軟件具備正確性、高效率、可維護性和可移植性。這正是這本實用的圖書意欲達成的定位。它描述的正是使用C++11和C++14——現代C++來撰寫真正卓越的軟件之道。
涵蓋以下主題:
百度網盤 鏈接://pan.baidu.com/s/1PRbk0-Ca-Y9sJcO6pyohHg 密碼:c6e7
機器學習簡明指南,不可錯過!
A Machine Learning Primer
亞馬遜研究科學家Mihail Eric關于機器學習實踐重要經驗。包括監督學習、機器學習實踐、無監督學習以及深度學習。具體為:
監督學習
機器學習實踐
無監督學習
深度學習
當前的深度學習研究以基準評價為主。如果一種方法在專門的測試集上有良好的經驗表現,那么它就被認為是有利的。這種心態無縫地反映在持續學習的重現領域,在這里研究的是持續到達的基準數據集。核心挑戰是如何保護之前獲得的表示,以免由于迭代參數更新而出現災難性地遺忘的情況。然而,各個方法的比較是與現實應用程序隔離的,通常通過監視累積的測試集性能來判斷。封閉世界的假設仍然占主導地位。假設在部署過程中,一個模型保證會遇到來自與用于訓練的相同分布的數據。這帶來了一個巨大的挑戰,因為眾所周知,神經網絡會對未知的實例提供過于自信的錯誤預測,并在數據損壞的情況下崩潰。在這個工作我們認為值得注意的教訓來自開放數據集識別,識別的統計偏差以外的數據觀測數據集,和相鄰的主動學習領域,數據增量查詢等預期的性能收益最大化,這些常常在深度學習的時代被忽略。基于這些遺忘的教訓,我們提出了一個統一的觀點,以搭建持續學習,主動學習和開放集識別在深度神經網絡的橋梁。我們的結果表明,這不僅有利于每個個體范式,而且突出了在一個共同框架中的自然協同作用。我們從經驗上證明了在減輕災難性遺忘、主動學習中查詢數據、選擇任務順序等方面的改進,同時在以前提出的方法失敗的地方展示了強大的開放世界應用。
//www.zhuanzhi.ai/paper/e5bee7a1e93a93ef97e1c
概述:
隨著實用機器學習系統的不斷成熟,社區發現了對持續學習[1]、[2]的興趣。與廣泛練習的孤立學習不同,在孤立學習中,系統的算法訓練階段被限制在一個基于先前收集的i.i.d數據集的單一階段,持續學習需要利用隨著時間的推移而到來的數據的學習過程。盡管這種范式已經在許多機器學習系統中找到了各種應用,回顧一下最近關于終身機器學習[3]的書,深度學習的出現似乎已經將當前研究的焦點轉向了一種稱為“災難性推理”或“災難性遺忘”的現象[4],[5],正如最近的評論[6],[7],[8],[9]和對深度持續學習[8],[10],[11]的實證調查所表明的那樣。后者是機器學習模型的一個特殊效應,機器學習模型貪婪地根據給定的數據群更新參數,比如神經網絡迭代地更新其權值,使用隨機梯度估計。當包括導致數據分布發生任何變化的不斷到達的數據時,學習到的表示集被單向引導,以接近系統當前公開的數據實例上的任何任務的解決方案。自然的結果是取代以前學到的表征,導致突然忘記以前獲得的信息。
盡管目前的研究主要集中在通過專門機制的設計來緩解持續深度學習中的這種遺忘,但我們認為,一種非常不同形式的災難性遺忘的風險正在增長,即忘記從過去的文獻中吸取教訓的危險。盡管在連續的訓練中保留神經網絡表示的努力值得稱贊,但除了只捕獲災難性遺忘[12]的度量之外,我們還高度關注了實際的需求和權衡,例如包括內存占用、計算成本、數據存儲成本、任務序列長度和訓練迭代次數等。如果在部署[14]、[15]、[16]期間遇到看不見的未知數據或小故障,那么大多數當前系統會立即崩潰,這幾乎可以被視為誤導。封閉世界的假設似乎無所不在,即認為模型始終只會遇到與訓練過程中遇到的數據分布相同的數據,這在真實的開放世界中是非常不現實的,因為在開放世界中,數據可以根據不同的程度變化,而這些變化是不現實的,無法捕獲到訓練集中,或者用戶能夠幾乎任意地向系統輸入預測信息。盡管當神經網絡遇到不可見的、未知的數據實例時,不可避免地會產生完全沒有意義的預測,這是眾所周知的事實,已經被暴露了幾十年了,但是當前的努力是為了通過不斷學習來規避這一挑戰。選擇例外嘗試解決識別不可見的和未知的示例、拒絕荒謬的預測或將它們放在一邊供以后使用的任務,通常總結在開放集識別的傘下。然而,大多數現有的深度連續學習系統仍然是黑盒,不幸的是,對于未知數據的錯誤預測、數據集的異常值或常見的圖像損壞[16],這些系統并沒有表現出理想的魯棒性。
除了目前的基準測試實踐仍然局限于封閉的世界之外,另一個不幸的趨勢是對創建的持續學習數據集的本質缺乏理解。持續生成模型(如[17]的作者的工作,[18],[19],[20],[21],[22]),以及類增量持續學習的大部分工作(如[12]中給出的工作,[23],[24],[25],[26],[27],[28])一般調查sequentialized版本的經過時間考驗的視覺分類基準如MNIST [29], CIFAR[30]或ImageNet[31],單獨的類只是分成分離集和序列所示。為了在基準中保持可比性,關于任務排序的影響或任務之間重疊的影響的問題通常會被忽略。值得注意的是,從鄰近領域的主動機器學習(半監督學習的一種特殊形式)中吸取的經驗教訓,似乎并沒有整合到現代的連續學習實踐中。在主動學習中,目標是學會在讓系統自己查詢接下來要包含哪些數據的挑戰下,逐步地找到與任務解決方案最接近的方法。因此,它可以被視為緩解災難性遺忘的對抗劑。當前的持續學習忙于維護在每個步驟中獲得的信息,而不是無休止地積累所有的數據,而主動學習則關注于識別合適的數據以納入增量訓練系統的補充問題。盡管在主動學習方面的早期開創性工作已經迅速識別出了通過使用啟發式[32]、[33]、[34]所面臨的強大應用的挑戰和陷阱,但后者在深度學習[35]、[36]、[37]、[38]的時代再次占據主導地位,這些挑戰將再次面臨。
在這項工作中,我們第一次努力建立一個原則性和鞏固的深度持續學習、主動學習和在開放的世界中學習的觀點。我們首先單獨回顧每一個主題,然后繼續找出在現代深度學習中似乎較少受到關注的以前學到的教訓。我們將繼續爭論,這些看似獨立的主題不僅從另一個角度受益,而且應該結合起來看待。在這個意義上,我們建議將當前的持續學習實踐擴展到一個更廣泛的視角,將持續學習作為一個總括性術語,自然地包含并建立在先前的主動學習和開放集識別工作之上。本文的主要目的并不是引入新的技術或提倡一種特定的方法作為通用的解決方案,而是對最近提出的神經網絡[39]和[40]中基于變分貝葉斯推理的方法進行了改進和擴展,以說明一種走向全面框架的可能選擇。重要的是,它作為論證的基礎,努力闡明生成建模作為深度學習系統關鍵組成部分的必要性。我們強調了在這篇論文中發展的觀點的重要性,通過實證證明,概述了未來研究的含義和有前景的方向。
越來越多來自不同領域的計算機科學家使用離散數學結構來解釋概念和問題。在教學經驗的基礎上,作者提供了一個容易理解的文本,強調了離散數學的基礎及其高級課題。這篇文章展示了如何用清晰的數學語言表達精確的思想。學生發現離散數學在描述計算機科學結構和解決問題方面的重要性。他們還學習如何掌握離散數學將幫助他們發展重要的推理技能,這些技能將在他們的職業生涯中繼續發揮作用。
本書建立在基本的Python教程的基礎上,解釋了許多沒有被常規覆蓋的Python語言特性:從通過利用入口點作為微服務扮演雙重角色的可重用控制臺腳本,到使用asyncio高效地整理大量來源的數據。通過這種方式,它涵蓋了基于類型提示的linting、低開銷測試和其他自動質量檢查,以演示一個健壯的實際開發過程。
Python的一些功能強大的方面通常用一些設計的示例來描述,這些示例僅作為一個獨立示例來解釋該特性。通過遵循從原型到生產質量的真實應用程序示例的設計和構建,您不僅將看到各種功能是如何工作的,而且還將看到它們如何作為更大的系統設計過程的一部分進行集成。此外,您還將受益于一些有用的附加說明和庫建議,它們是Python會議上問答會議的主要內容,也是討論現代Python最佳實踐和技術的主要內容,以便更好地生成易于維護的清晰代碼。
高級Python開發是為已經能用Python編寫簡單程序的開發人員準備的,這些開發人員希望了解什么時候使用新的和高級語言特性是合適的,并且能夠以一種自信的方式這樣做。它對于希望升級到更高級別的開發人員和迄今為止使用過較老版本Python的非常有經驗的開發人員特別有用。
你將學習
這本書是給誰的 -已經有Python經驗的中高級開發人員。
介紹
我們對社交網絡的體驗在短暫的瞬間中閃過,通常不會再回頭。在Instagram上點贊照片,在Facebook上分享別人發布的帖子,或者在WhatsApp上給朋友發消息,不管是什么具體的互動,我們只做一次,之后可能就不會再去想它了。 但從刷屏、點擊到狀態更新,我們的在線生活正被社交媒體公司捕捉,并被一些世界上最大的數據服務器使用。我們產生的數據比以往任何時候都多。從整體上看這些數據點,我們可以對人類行為有更深刻的了解。我們還可以調查這些系統所造成的危害,從檢測虛假的在線參與者(例如,自動的機器人賬戶或散布錯誤信息的虛假檔案)到理解算法是如何隨著時間的推移向瀏覽者展示有問題的內容。如果我們一起看這些數據點,我們可以發現模式、趨勢或異常,并希望能更好地理解我們在網上認識和塑造人類體驗的方式。這本書旨在幫助那些想要從簡單地觀察社交網絡的一個帖子或推特,在更大的,更有意義的范圍內理解它的人。
什么是數據分析?
任何數據分析師的主要目標都是從大量信息中獲得有用的觀點。我們可以把數據分析看作是采訪大量記錄的一種方式:我們可以詢問不尋常的單個事件,或者我們可以觀察長期趨勢。了解一個數據集可能是一個漫長的過程,有各種曲折:它可能需要幾種不同的方法來找到我們的問題的答案,同樣的,它可能需要幾個不同的會見來了解受訪者。 即使我們的問題簡單而集中,要得到答案仍然需要我們做出一些邏輯上和哲學上的抉擇。什么樣的數據集可以用來檢查我們自己的行為,以及我們如何獲得這些數據?如果我們想要確定一個Facebook帖子的受歡迎程度,我們會用反應的數量(喜歡,hahas, wow,等等)來衡量嗎?收到的評論的數量,還是兩種指標的組合?如果我們想要更好地了解人們如何在Twitter上討論一個特定的話題,對相關的tweet進行分類的最佳方式是什么? 因此,雖然分析數據需要一定的技術技巧,但它也是一個創造性的過程,需要我們有意識地、知情地使用我們的判斷。換句話說,數據分析既是科學也是藝術。
誰適合使用這本書?
這本書是為那些以前幾乎沒有編程經驗的人寫的。考慮到社會媒體、互聯網和技術在我們生活中的巨大作用,這本書旨在以一種容易理解和直接的方式探索它們。通過實踐練習,您將學習編程、數據分析和社交網絡的基本概念。在某種程度上,這本書的目標讀者就像我以前的自己一樣,一個對世界充滿強烈好奇的人,但也被充滿術語的論壇、會議和在線教程嚇到了。我們將從宏觀和微觀兩方面入手,研究社交網絡的生態系統以及編寫代碼的細節。編程不僅僅是構建機器人或應用程序的一種方式:它是在一個越來越依賴技術的世界中滿足你好奇心的一種方式。
內容概要
本書的各個章節都是按照數據探索的旅程來構建的。我們將從介紹如何以及在哪里從社交網絡中找到數據開始。畢竟,我們需要數據才能進行分析!然后,在后面的章節中,您將學習處理、探索和分析我們挖掘的數據所必需的工具。
第一部分:數據挖掘
第一章:你需要知道的編程語言,介紹了前端語言(HTML, CSS和JavaScript),以及為什么它們在社交媒體數據挖掘中很重要。您還將通過交互式shell中的實踐練習學習Python的基礎知識。
第2章:從哪里獲取數解釋了什么是api,什么類型的數據可以通過它們訪問,并指導您如何訪問JSON格式的數據。本章還涵蓋了為數據分析制定研究問題的過程。
第3章:用代碼獲取數據,向您展示了如何收集從YouTube API返回的數據,并使用Python將其從JSON重構為電子表格,特別是.csv文件。
第4章:抓取你自己的Facebook數據定義抓取和描述如何檢查HTML以將內容從web頁面結構成數據。本文還介紹了社交媒體公司為用戶提供的數據存檔,以及如何將數據提取到.csv文件中。
第5章:抓取實時站點的解釋抓取網站的道德考慮,并帶領你完成為維基百科頁面撰寫抓取的過程。
第二部分:數據分析
首先加速介紹R生態系統、編程語言和工具,包括R腳本和RStudio。通過使用許多例子和項目,這本書教你如何將數據導入R,以及如何使用R處理這些數據。一旦基礎扎實,《實用R 4》的其余部分將深入具體的項目和例子,從使用R和LimeSurvey運行和分析調查開始。接下來,您將使用R和MouselabWeb執行高級統計分析。然后,您將看到在沒有統計信息的情況下R如何工作,包括如何使用R自動化數據格式化、操作、報告和自定義函數。
本書的最后一部分討論了在服務器上使用R;您將使用R構建一個腳本,該腳本可以運行RStudio服務器并監視報表源的更改,以便在發生更改時向用戶發出警報。這個項目包括定期電子郵件提醒和推送通知。最后,您將使用R創建一個定制的個人最重要信息的每日綱要報告,例如天氣報告、每日日歷、待辦事項等等。這演示了如何自動化這樣一個過程,以便用戶每天早上導航到相同的web頁面并獲得更新的報告。
你將學到什么
這本書是給誰的
本備忘單是機器學習手冊的濃縮版,包含了許多關于機器學習的經典方程和圖表,旨在幫助您快速回憶起機器學習中的知識和思想。
這個備忘單有兩個顯著的優點:
清晰的符號。數學公式使用了許多令人困惑的符號。例如,X可以是一個集合,一個隨機變量,或者一個矩陣。這是非常混亂的,使讀者很難理解數學公式的意義。本備忘單試圖規范符號的使用,所有符號都有明確的預先定義,請參見小節。
更少的思維跳躍。在許多機器學習的書籍中,作者省略了數學證明過程中的一些中間步驟,這可能會節省一些空間,但是會給讀者理解這個公式帶來困難,讀者會在中間迷失。