生活演算法
㈠ 數據挖掘演算法與生活中的應用案例
數據挖掘演算法與生活中的應用案例
如何分辨出垃圾郵件」、「如何判斷一筆交易是否屬於欺詐」、「如何判斷紅酒的品質和檔次」、「掃描王是如何做到文字識別的」、「如何判斷佚名的著作是否出自某位名家之手」、「如何判斷一個細胞是否屬於腫瘤細胞」等等,這些問題似乎都很專業,都不太好回答。但是,如果了解一點點數據挖掘的知識,你,或許會有柳暗花明的感覺。
本文,主要想簡單介紹下數據挖掘中的演算法,以及它包含的類型。然後,通過現實中觸手可及的、活生生的案例,去詮釋它的真實存在。 一般來說,數據挖掘的演算法包含四種類型,即分類、預測、聚類、關聯。前兩種屬於有監督學習,後兩種屬於無監督學習,屬於描述性的模式識別和發現。
有監督學習有監督的學習,即存在目標變數,需要探索特徵變數和目標變數之間的關系,在目標變數的監督下學習和優化演算法。例如,信用評分模型就是典型的有監督學習,目標變數為「是否違約」。演算法的目的在於研究特徵變數(人口統計、資產屬性等)和目標變數之間的關系。
分類演算法分類演算法和預測演算法的最大區別在於,前者的目標變數是分類離散型(例如,是否逾期、是否腫瘤細胞、是否垃圾郵件等),後者的目標變數是連續型。一般而言,具體的分類演算法包括,邏輯回歸、決策樹、KNN、貝葉斯判別、SVM、隨機森林、神經網路等。
預測演算法預測類演算法,其目標變數一般是連續型變數。常見的演算法,包括線性回歸、回歸樹、神經網路、SVM等。
無監督學習無監督學習,即不存在目標變數,基於數據本身,去識別變數之間內在的模式和特徵。例如關聯分析,通過數據發現項目A和項目B之間的關聯性。例如聚類分析,通過距離,將所有樣本劃分為幾個穩定可區分的群體。這些都是在沒有目標變數監督下的模式識別和分析。
聚類分析聚類的目的就是實現對樣本的細分,使得同組內的樣本特徵較為相似,不同組的樣本特徵差異較大。常見的聚類演算法包括kmeans、系譜聚類、密度聚類等。
關聯分析關聯分析的目的在於,找出項目(item)之間內在的聯系。常常是指購物籃分析,即消費者常常會同時購買哪些產品(例如游泳褲、防曬霜),從而有助於商家的捆綁銷售。
基於數據挖掘的案例和應用上文所提到的四種演算法類型(分類、預測、聚類、關聯),是比較傳統和常見的。還有其他一些比較有趣的演算法分類和應用場景,例如協同過濾、異常值分析、社會網路、文本分析等。下面,想針對不同的演算法類型,具體的介紹下數據挖掘在日常生活中真實的存在。下面是能想到的、幾個比較有趣的、和生活緊密關聯的例子。
基於分類模型的案例這裡面主要想介紹兩個案例,一個是垃圾郵件的分類和判斷,另外一個是在生物醫葯領域的應用,即腫瘤細胞的判斷和分辨。
垃圾郵件的判別郵箱系統如何分辨一封Email是否屬於垃圾郵件?這應該屬於文本挖掘的范疇,通常會採用樸素貝葉斯的方法進行判別。它的主要原理是,根據郵件正文中的單詞,是否經常出現在垃圾郵件中,進行判斷。例如,如果一份郵件的正文中包含「報銷」、「發票」、「促銷」等詞彙時,該郵件被判定為垃圾郵件的概率將會比較大。
一般來說,判斷郵件是否屬於垃圾郵件,應該包含以下幾個步驟。
第一,把郵件正文拆解成單片語合,假設某篇郵件包含100個單詞。
第二,根據貝葉斯條件概率,計算一封已經出現了這100個單詞的郵件,屬於垃圾郵件的概率和正常郵件的概率。如果結果表明,屬於垃圾郵件的概率大於正常郵件的概率。那麼該郵件就會被劃為垃圾郵件。
醫學上的腫瘤判斷如何判斷細胞是否屬於腫瘤細胞呢?腫瘤細胞和普通細胞,有差別。但是,需要非常有經驗的醫生,通過病理切片才能判斷。如果通過機器學習的方式,使得系統自動識別出腫瘤細胞。此時的效率,將會得到飛速的提升。並且,通過主觀(醫生)+客觀(模型)的方式識別腫瘤細胞,結果交叉驗證,結論可能更加靠譜。
如何操作?通過分類模型識別。簡言之,包含兩個步驟。首先,通過一系列指標刻畫細胞特徵,例如細胞的半徑、質地、周長、面積、光滑度、對稱性、凹凸性等等,構成細胞特徵的數據。其次,在細胞特徵寬表的基礎上,通過搭建分類模型進行腫瘤細胞的判斷。
基於預測模型的案例這裡面主要想介紹兩個案例。即通過化學特性判斷和預測紅酒的品質。另外一個是,通過搜索引擎來預測和判斷股價的波動和趨勢。
紅酒品質的判斷如何評鑒紅酒?有經驗的人會說,紅酒最重要的是口感。而口感的好壞,受很多因素的影響,例如年份、產地、氣候、釀造的工藝等等。但是,統計學家並沒有時間去品嘗各種各樣的紅酒,他們覺得通過一些化學屬性特徵就能夠很好地判斷紅酒的品質了。並且,現在很多釀酒企業其實也都這么幹了,通過監測紅酒中化學成分的含量,從而控制紅酒的品質和口感。
那麼,如何判斷鑒紅酒的品質呢?
第一步,收集很多紅酒樣本,整理檢測他們的化學特性,例如酸性、含糖量、氯化物含量、硫含量、酒精度、PH值、密度等等。
第二步,通過分類回歸樹模型進行預測和判斷紅酒的品質和等級。
搜索引擎的搜索量和股價波動一隻南美洲熱帶雨林中的蝴蝶,偶爾扇動了幾下翅膀,可以在兩周以後,引起美國德克薩斯州的一場龍卷風。你在互聯網上的搜索是否會影響公司股價的波動?
很早之前,就已經有文獻證明,互聯網關鍵詞的搜索量(例如流感)會比疾控中心提前1到2周預測出某地區流感的爆發。
同樣,現在也有些學者發現了這樣一種現象,即公司在互聯網中搜索量的變化,會顯著影響公司股價的波動和趨勢,即所謂的投資者注意力理論。該理論認為,公司在搜索引擎中的搜索量,代表了該股票被投資者關注的程度。因此,當一隻股票的搜索頻數增加時,說明投資者對該股票的關注度提升,從而使得該股票更容易被個人投資者購買,進一步地導致股票價格上升,帶來正向的股票收益。這是已經得到無數論文驗證了的。
基於關聯分析的案例:沃爾瑪的啤酒尿布啤酒尿布是一個非常非常古老陳舊的故事。故事是這樣的,沃爾瑪發現一個非常有趣的現象,即把尿布與啤酒這兩種風馬牛不相及的商品擺在一起,能夠大幅增加兩者的銷量。原因在於,美國的婦女通常在家照顧孩子,所以,她們常常會囑咐丈夫在下班回家的路上為孩子買尿布,而丈夫在買尿布的同時又會順手購買自己愛喝的啤酒。沃爾瑪從數據中發現了這種關聯性,因此,將這兩種商品並置,從而大大提高了關聯銷售。
啤酒尿布主要講的是產品之間的關聯性,如果大量的數據表明,消費者購買A商品的同時,也會順帶著購買B產品。那麼A和B之間存在關聯性。在超市中,常常會看到兩個商品的捆綁銷售,很有可能就是關聯分析的結果。
基於聚類分析的案例:零售客戶細分對客戶的細分,還是比較常見的。細分的功能,在於能夠有效的劃分出客戶群體,使得群體內部成員具有相似性,但是群體之間存在差異性。其目的在於識別不同的客戶群體,然後針對不同的客戶群體,精準地進行產品設計和推送,從而節約營銷成本,提高營銷效率。
例如,針對商業銀行中的零售客戶進行細分,基於零售客戶的特徵變數(人口特徵、資產特徵、負債特徵、結算特徵),計算客戶之間的距離。然後,按照距離的遠近,把相似的客戶聚集為一類,從而有效的細分客戶。將全體客戶劃分為諸如,理財偏好者、基金偏好者、活期偏好者、國債偏好者、風險均衡者、渠道偏好者等。
基於異常值分析的案例:支付中的交易欺詐偵測採用支付寶支付時,或者刷信用卡支付時,系統會實時判斷這筆刷卡行為是否屬於盜刷。通過判斷刷卡的時間、地點、商戶名稱、金額、頻率等要素進行判斷。這裡面基本的原理就是尋找異常值。如果您的刷卡被判定為異常,這筆交易可能會被終止。
異常值的判斷,應該是基於一個欺詐規則庫的。可能包含兩類規則,即事件類規則和模型類規則。第一,事件類規則,例如刷卡的時間是否異常(凌晨刷卡)、刷卡的地點是否異常(非經常所在地刷卡)、刷卡的商戶是否異常(被列入黑名單的套現商戶)、刷卡金額是否異常(是否偏離正常均值的三倍標准差)、刷卡頻次是否異常(高頻密集刷卡)。第二,模型類規則,則是通過演算法判定交易是否屬於欺詐。一般通過支付數據、賣家數據、結算數據,構建模型進行分類問題的判斷。
基於協同過濾的案例:電商猜你喜歡和推薦引擎電商中的猜你喜歡,應該是大家最為熟悉的。在京東商城或者亞馬遜購物,總會有「猜你喜歡」、「根據您的瀏覽歷史記錄精心為您推薦」、「購買此商品的顧客同時也購買了商品」、「瀏覽了該商品的顧客最終購買了商品」,這些都是推薦引擎運算的結果。
這裡面,確實很喜歡亞馬遜的推薦,通過「購買該商品的人同時購買了**商品」,常常會發現一些質量比較高、較為受認可的書。一般來說,電商的「猜你喜歡」(即推薦引擎)都是在協同過濾演算法(Collaborative Filter)的基礎上,搭建一套符合自身特點的規則庫。即該演算法會同時考慮其他顧客的選擇和行為,在此基礎上搭建產品相似性矩陣和用戶相似性矩陣。基於此,找出最相似的顧客或最關聯的產品,從而完成產品的推薦。
基於社會網路分析的案例:電信中的種子客戶種子客戶和社會網路,最早出現在電信領域的研究。即,通過人們的通話記錄,就可以勾勒出人們的關系網路。電信領域的網路,一般會分析客戶的影響力和客戶流失、產品擴散的關系。
基於通話記錄,可以構建客戶影響力指標體系。採用的指標,大概包括如下,一度人脈、二度人脈、三度人脈、平均通話頻次、平均通話量等。基於社會影響力,分析的結果表明,高影響力客戶的流失會導致關聯客戶的流失。其次,在產品的擴散上,選擇高影響力客戶作為傳播的起點,很容易推動新套餐的擴散和滲透。
此外,社會網路在銀行(擔保網路)、保險(團伙欺詐)、互聯網(社交互動)中也都有很多的應用和案例。
基於文本分析的案例這裡面主要想介紹兩個案例。一個是類似「掃描王」的APP,直接把紙質文檔掃描成電子文檔。相信很多人都用過,這里准備簡單介紹下原理。另外一個是,江湖上總是傳言紅樓夢的前八十回和後四十回,好像並非都是出自曹雪芹之手,這裡面准備從統計的角度聊聊。
字元識別:掃描王APP手機拍照時會自動識別人臉,還有一些APP,例如掃描王,可以掃描書本,然後把掃描的內容自動轉化為word。這些屬於圖像識別和字元識別(Optical Character Recognition)。圖像識別比較復雜,字元識別理解起來比較容易些。
查找了一些資料,字元識別的大概原理如下,以字元S為例。
第一,把字元圖像縮小到標准像素尺寸,例如12*16。注意,圖像是由像素構成,字元圖像主要包括黑、白兩種像素。
第二,提取字元的特徵向量。如何提取字元的特徵,採用二維直方圖投影。就是把字元(12*16的像素圖)往水平方向和垂直方向上投影。水平方向有12個維度,垂直方向有16個維度。這樣分別計算水平方向上各個像素行中黑色像素的累計數量、垂直方向各個像素列上的黑色像素的累計數量。從而得到水平方向12個維度的特徵向量取值,垂直方向上16個維度的特徵向量取值。這樣就構成了包含28個維度的字元特徵向量。
第三,基於前面的字元特徵向量,通過神經網路學習,從而識別字元和有效分類。
文學著作與統計:紅樓夢歸屬這是非常著名的一個爭論,懸而未決。對於紅樓夢的作者,通常認為前80回合是曹雪芹所著,後四十回合為高鶚所寫。其實主要問題,就是想確定,前80回合和後40回合是否在遣詞造句方面存在顯著差異。
這事讓一群統計學家比較興奮了。有些學者通過統計名詞、動詞、形容詞、副詞、虛詞出現的頻次,以及不同詞性之間的相關系做判斷。有些學者通過虛詞(例如之、其、或、亦、了、的、不、把、別、好),判斷前後文風的差異。有些學者通過場景(花卉、樹木、飲食、醫葯與詩詞)頻次的差異,來做統計判斷。總而言之,主要通過一些指標量化,然後比較指標之間是否存在顯著差異,藉此進行寫作風格的判斷。
以上是小編為大家分享的關於數據挖掘演算法與生活中的應用案例的相關內容,更多信息可以關注環球青藤分享更多干貨
㈡ 問:什麼是演算法試從日常生活中找3個例子,描述它們的演算法。(c語言)
所謂的演算法,用實物來說就是做事的步驟。開車,首先要打開車門,駕駛員坐好,插上車鑰匙,發動汽車。開門,要先拿出鑰匙,插入鑰匙孔,開門。等等舉不勝舉
㈢ 生活中的人工智慧之搜索和推薦演算法
姓名:陳心語 學號:21009102266 書院:海棠1號書院
轉自: 人工智慧在搜索中的應用_u014033218的專欄-CSDN博客
人工智慧在搜索的應用和實踐_qq_40954115的博客-CSDN博客
【嵌牛導讀】日常生活中的搜索和推薦演算法也與人工智慧有所關聯,讓我們一起來看看吧!
【嵌牛鼻子】人工智慧運用於搜索和推薦演算法。
【嵌牛提問】人工智慧在搜索和推薦演算法中有什麼運用呢?
【嵌牛正文】
智能交互
智能交互有三個方面的這部分組成,第一個就是Query推薦,這是比較古老的課題;第二個做智能導購,這是現在正在做的一個原形,後面我會講為什麼做智能導購;第三個內容的展示和個性化的創意。就是說你把商品怎麼展示給用戶,也是我們認為是交互的一部分。
第一個是Query推薦,這個問題怎麼來抽象呢?Query推薦是一個用戶當前Query下面我們怎麼推薦其它Query,這是我們相關搜索一樣的。我們推薦這樣的一個Query以後,如果用戶一旦點了其中的一個Query,用戶的狀態就會發生變化,從當前的Query跳到另外一個Query,這是用戶狀態的變化。第二個就是說我們怎麼評價我們推薦的Query的好壞,它由幾部分組成,一個Query有沒有被點,第二個就是說推薦Query裡面,它的SRP頁會不會點,因為Query推薦本質上不是Query推薦做的最好就是最好的,它是說最終要在搜索SRP用戶有沒有買,有沒有點擊,這才是做的好的,這是第二個收益。還有一個更加間接的,通過Query推,這個狀態轉到下一個狀態以後,這個裡面還會推其它Query,還會有其它點擊,這個時候也是個間接推薦。如果我不推Query就不能到這個狀態,不到狀態不會有這個Query,不會有這個收益。我們了解,這就是典型的一個馬爾科夫決策過程,我們是用強化學習來做的,Actions就是我們的Query list,根據用戶和當前Query推薦其他Query,狀態就是User + Query,收益就是包括推薦Query擊,還有一個間接收益,間接收益通過bellman 公式可以算出來,這就是一個DQN的強化學習項目。
智能導購
現在的搜索呈現的問題就是說,如果去看搜索的Query都是一些品類詞、品牌詞、型號詞或者屬性詞。假定用戶他知道買什麼再來搜索搜,但是有各很大的東西用戶不知道買什麼嗎?智能導購就是做做一個類似智能導購機器人的產品,引導用戶怎麼搜,用戶也可以主動問,獲取知識或購物經驗。這是後台的演算法的一個原形,不久後會上線。
智能內容
因為淘寶的商品,賣家為了適應我們的引擎,做了大量的SEO,裡面都是羅列熱門的關健詞,導致問題淘寶的標題沒什麼差異,都寫的差不多,看標題也不知道什麼東西,或者知道但裡面沒有很多特色的內容。我們做智能內容很重要的出發點是怎麼從商品的評價、詳情頁、屬性裡面挖出一些比較有賣點,或者商品比較有特色的東西展示給用戶,讓用戶更好的了解商品,這是第一個。第二個淘寶上面還有類似商品聚合的,比如清單,生成一個清單,怎麼給清單生成一個比較好的導入的描述,讓用戶描述這個清單干什麼。這裡面主要做了這兩個事情。具體怎麼做的?一個會生成一些Topic,比如行業運營加上我們挖的一些點,比如像手機一般大家關注點會是手機的性價比,拍照是不是清晰,還有速度是不是快,是不是發熱什麼的,這是用戶關注的興趣點。然後它會根據這個商品會選擇一個興趣點,通過Seq2seq生成短文本。
語義搜索
我們的商品屬性基本上是比較標准化的,因為這里淘寶有一個這樣的商品庫,非標准化的內容是沒法上傳的。導致的問題是我們的商品內容相對來說是比較規范化的,但是用戶的輸入的Query不是這樣的,比如我這里舉一些例子,比如一個新品有各種表達,2017新品,2017冬季新品,是吧?新品,有很多的表達。所以就是從從用戶的需求跟商品的內容,就存在了一個語義的Gap。還有我們經常舉例,比如三口之家用的電飯鍋,很多這種語義的問題,這個語義從語義角度解決語義Match的事情。
大概會有這么幾個方面。比如一個就是意圖的理解,還有意圖的Mapping,比如大容量冰箱,首先知道大的是跟冰箱的容量相關的,冰箱是個類目,最後要Mapping到人的冰箱,把『大』改寫成一個容量大於多少升,類目是冰箱這樣才能夠比較好的解決我們這個搜索的這個召回的問題。 第二個語義理解,這裡麵包括Query和商品都要做語義理解,比如通過image tagging計算從圖片裡面抽取很多文本的語義標簽補充到商品文本索引中。 第三個就是現在有這個端到端的深度學習技術來直接學Query和商品的Similarity,通過端到端的深度學習技術來做語義的召回和語義的相關性。
智能匹配
主要就是講個性化,做個性化的首要就是個性化數據。個性化本質上就是說以用戶為中心構建用戶的標簽,用戶的行為,還有用戶的偏好,再通過這些數據找到,去Match到商品,比如說你看過相似商品,典型的協同過濾,還有你偏好的品牌的其它商品。那就是基於這些經歷了一個以用戶為中心的電商圖譜,這裡面還加了一些輔助的數據,比如商品的相似度,店鋪之間的相似度,這樣構建了我們這樣的叫電商圖譜。
個性化召回與向量化召回
召回是這樣的,首先從咱們的電商圖譜里取出用戶的信息,包括比如說年齡性別,還有當地溫度是多少,還有行為足跡等等之類的,社交現在沒用了,因為這是幾年前社交特別火,什麼都要摻和一下,其實社交,信息的社交到電商其實風馬牛不相及的領域,沒有任何價值。所以現在好友這東西幾乎沒有用。因為不同Query中,用戶信息重要性是不一樣的,我們根據上下文會做用戶信息的篩選或者排序,會找出比較重要的信息做個性化召回。以上是淘寶商品索引結構,傳統的搜索關鍵字是通過搜索關鍵字召回,而個性化商品索引,除了Query還會有商品簇,簇與簇之間的關系,品牌店鋪等等之類的,會加很多個性化的特徵做召回,通過這種帶的好處是召回的結果跟用戶是直接相關的,就召回這一步帶來個性化。
但是這種基於行為召回還是存在一個問題的。最重要的問題它的泛化能力會比較差。最典型的比如說你通過協同過濾來做,如果兩個商品,沒有用戶同時看過的話,這兩個商品你認為他們相似度是零,這個結論是錯的,但是如果通過協同過濾就有這個問題。我們今年實現了向量化召回,包括兩步:一個是Similarity learning,通過這個深度學習做端到端的Similarity learning,就會把這個我們的User 和Item會變成一個向量;第二步就是做向量化召回,比如層次聚類,隨機遊走,learning to hash等,這樣的話就是說會極大的提升召回的深度。
個性化工作
在個性化領域其實最重要的一個核心的問題就是怎麼去理解用戶,怎麼感知用戶和預測用戶行為及偏好。
首先是數據,用戶在淘寶有兩個中類型重要的基本信息:一個是用戶標簽,比如年齡、性別、職業等;第二是用戶足跡,比如 點過,買過的商品,店鋪等;
其次是用戶感知要和搜索上下文相關,即這個用戶的表徵和要用戶搜索意圖相關;
第三是搜索有很多差異化的任務,比如用戶消費能力的預估, User到Item的CTR預估和用戶購物狀態預估等,是為每個任務做個端到端的深度學習模型還是用統一的用戶表徵來完成不同的Task?如果每一個任務都做端到端深度學習會有很多問題,比如離線和在線的性能開銷會大很多,或部分任務樣本太少。
如圖是用戶感知深度模型,輸入X是用戶的點擊行為序列,下一步是embedding,embedding完以後,通過LSTM把用戶行為序列做embedding,因為在搜索用戶感知和Query相關,所以加入query 的 attention層,選擇和當前query有關系的行為,表徵完是Multi-task learning 網路。整個這個網路的參數大概有一百億個參數,我在雙11我們還實現了在線學習。
演算法包括智能交互、語義搜索、智能匹配和搜索策略四個方向。
智能交互
商品搜索就是帶交互的商品推薦,用戶通過關鍵字輸入搜索意圖,引擎返回和搜索意圖匹配的個性化推薦結果,好的交互技術能夠幫助到用戶更好的使用搜索引擎,目前搜索的交互主要是主動關鍵字輸入和關鍵字推薦,比如搜索框中的默認查詢詞和搜索結果中的文字鏈等,推薦引擎根據用戶搜索歷史、上下文、行為和狀態推薦關鍵字。和商品推薦的區別是,關鍵字推薦是搜索鏈路的中間環節,關鍵字推薦的收益除了關鍵字的點擊行為外,還需要考慮對整個購物鏈路的影響,包括在推薦關鍵字的後續行為中是否有商品點擊、加購和成交或跳轉到另外一個關鍵字的後繼行為,這是一個典型的強化學習問題,action 是推薦的關鍵字候選集合,狀態是用戶當前搜索關鍵詞、上下文等,收益是搜索引導的成交。除了被動的關鍵字推薦,我們也在思考搜索中更加主動的交互方式,能夠做到像導購員一樣的雙向互動,主動詢問用戶需求,挑選個性化的商品和給出個性化的推薦理由,目前我們已經在做智能導購和智能內容方向的技術原型及論證,智能導購在技術上主要是借鑒對話系統,通過引導用戶和引擎對話與關鍵字推薦方式互為補充,包括自然語言理解,對話策略,對話生成,知識推理、知識問答和商品搜索等模塊,功能主要包括:a. 根據用戶搜索上下文生成引導用戶主動交互的文本,比如搜索「奶粉」時,會生成「您寶寶多大?0~6個月,6個月到1歲….」引導文案,提示用戶細化搜索意圖,如果用戶輸入「3個月」後,會召回相應段位的奶粉,並在後續的搜索中會記住對話狀態「3個月」寶寶和提示用戶「以下是適合3個月寶寶的奶粉」,b. 知識導購,包含提高售前知識問答或知識提示,比如「3個月寶寶吃什麼奶粉」 回答「1段」,目前對話技術還不太成熟,尤其是在多輪對話狀態跟蹤、知識問答和自動評價幾個方面,但隨著深度學習、強化學習和生成對抗學習等技術在NLP、對話策略、閱讀理解等領域的應用,越來越多的訓練數據和應用場景,domain specific 的對話技術未來幾年應該會突飛猛進;智能內容生成,包括生成或輔助人工生成商品和清單的「賣點」,短標題和文本摘要等,讓淘寶商品表達更加個性化和多元化。
語義搜索
語義搜索主要是解決關鍵字和商品內容之間的語義鴻溝,比如搜索「2~3周歲寶寶外套」,如果按照關鍵字匹配召回結果會遠小於實際語義匹配的商品。語義搜索的范圍主要包括:a. query tagging和改寫,比如新品,年齡,尺碼,店鋪名,屬性,類目等搜索意圖識別和歸一化,query tagging模型是用的經典的序列標注模型 bi-lstm + CRF,而標簽分類(歸一化) 作為模型另外一個任務,將序列標注和分類融合在一起學習;b. query 改寫,主要是計算query之間相似度,把一個query改寫成多個語義相似的query,通常做法是先用不同改寫策略生成改寫候選query集合,比如詞替換、向量化後top k、點擊商品相似度等,然後在用ltr對後續集合排序找出合適的改寫集合,模型設計和訓練相對簡單,比較難的是如何構建高質量的訓練樣本集合,線上我們用bandit 的方法探測部分query 改寫結果的優劣,離線則用規則和生成對抗網路生成一批質量較高的樣本; c. 商品內容理解和語義標簽,通過商品圖片,詳情頁,評價和同義詞,上下位詞等給商品打標簽或擴充商品索引內容,比如用 image tagging技術生成圖片的文本標簽豐富商品內容,或者更進一步用直接用圖片向量和文本向量融合,實現富媒體的檢索和查詢;d. 語義匹配,經典的DSSM 模型技術把query 和商品變成向量,用向量內積表達語義相似度,在問答或閱讀理解中大量用到多層LSTM + attention 做語義匹配,同樣高質量樣本,特別是高質量負樣本很大程度上決定了模型的質量,我們沒有采樣效率很低的隨機負采樣,而是基於電商知識圖譜,通過生成字面相似但不相關的query及相關文檔的方法生成負樣本。從上面可以看到query tagging、query相似度、語義匹配和語義相關性是多個目標不同但關聯程度非常高的任務,下一步我們計劃用統一的語義計算框架支持不同的語義計算任務,具體包括1. 開發基於商品內容的商品表徵學習框架,為商品內容理解,內容生成,商品召回和相關性提供統一的商品表徵學習框架,重點包括商品標題,屬性,詳情頁和評價等文本信息抽取,圖像特徵抽取和多模信號融合;2. query 表徵學習框架,為query 類目預測,query改寫,query 推薦等提供統一的表徵學習框架,重點通過多個query 相似任務訓練統一的query表徵學習模型;3. 語義召回,語義相關性等業務應用模型框架。語義搜索除了增加搜索結果相關性,提升用戶體驗外,也可以一定程度上遏制淘寶商品標題堆砌熱門關鍵詞的問題。
智能匹配
這里主要是指個性化和排序。內容包括:a. ibrain (深度用戶感知網路),搜索或推薦中個性化的重點是用戶的理解與表達,基於淘寶的用戶畫像靜態特徵和用戶行為動態特徵,我們基於multi-modals learning、multi-task representation learning以及LSTM的相關技術,從海量用戶行為日誌中直接學慣用戶的通用表達,該學習方法善於「總結經驗」、「觸類旁通」,使得到的用戶表達更基礎且更全面,能夠直接用於用戶行為識別、偏好預估、個性化召回、個性化排序等任務,在搜索、推薦和廣告等個性化業務中有廣泛的應用場景,感知網路超過10B個參數,已經學習了幾千億次的用戶行為,並且會保持不間斷的增量學習越來越聰明; b. 多模學習,淘寶商品有文本、圖像、標簽、id 、品牌、類目、店鋪及統計特徵,這些特徵彼此有一定程度的冗餘和互補,我們利用多模學習通過多模聯合學習方法把多維度特徵融合在一起形成統一的商品標准,並多模聯合學習中引入self-attention實現特徵維度在不同場景下的差異,比如女裝下圖片特徵比較重要,3C下文本比較重要等;c. deepfm,相對wide & deep 模型,deepfm 增加了特徵組合能力,基於先驗知識的組合特徵能夠應用到深度學習模型中,提升模型預測精度;d. 在線深度排序模型,由於行為類型和商品重要性差異,每個樣本學習權重不同,通過樣本池對大權重樣本重復分批學習,有效的提升了模型學習穩定性,同時通過融合用戶狀態深度ltr模型實現了千人千面的排序模型學習;e. 全局排序,ltr 只對單個文檔打分然後按照ltr分數和打散規則排序,容易導致搜索結果同質化,影響總頁效率,全局排序通過已知排序結果做為上下文預測下一個位置的商品點擊概率,有效提升了總頁排序效率;f. 另外工程還實現了基於用戶和商品向量的向量召回引擎,相對倒排索引,向量化召回泛化能力更強,對語義搜索和提高個性化匹配深度是非常有價值的。以上實現了搜索從召回、排序特徵、排序模型、個性化和重排的深度學習升級,在雙11無線商品搜索中帶來超過10% (AB-Test)的搜索指標提升。
智能決策
搜索中個性化產品都是成交最大化,導致的問題是搜索結果趨同,浪費曝光,今年做的一個重要工作是利用多智能體協同學習技術,實現了搜索多個異構場景間的環境感知、場景通信、單獨決策和聯合學習,實現聯合收益最大化,而不是此消彼長,在今年雙11中聯合優化版本帶來的店鋪內和無線搜索綜合指標提升12% (AB-Test),比非聯合優化版本高3% (AB-Test)。
性能優化
在深度學習剛起步的時候,我們意識到深度模型inference 性能會是一個瓶頸,所以在這方面做了大量的調研和實驗,包括模型壓縮(剪枝),低秩分解,量化和二值網路,由於缺少相應的指令集和硬體支持,最終只在個別場景下上線,期待支持低精度矩陣計算和稀疏矩陣計算的硬體早日出現。
未來計劃
通用用戶表徵學習。前面介紹的DUPN 是一個非常不錯的用戶表徵學習模型,但基於query 的attention 只適合搜索,同時缺少基於日誌來源的attention,難以推廣到其他業務,在思考做一個能夠適合多個業務場景的用戶表徵模型,非搜索業務做些簡單fine tuning 就能取得比較好的效果;同時用戶購物偏好受季節和周期等影響,時間跨度非常大,最近K個行為序列假設太簡單,我們在思考能夠做life-long learning 的模型,能夠學慣用戶過去幾年的行為序列;搜索鏈路聯合優化。從用戶進入搜索到離開搜索鏈路中的整體優化,比如 搜索前的query 引導(底紋),搜索中的商品和內容排序,搜索後的 query推薦(錦囊)等場景;跨場景聯合優化。今年搜索內部主搜索和店鋪內搜索聯合優化取得了很好的結果,未來希望能夠拓展在更多大流量場景,提高手淘的整體購物體驗;多目標聯合優化。搜索除了成交外,還需要承擔賣家多樣性,流量公平性,流量商業化等居多平台和賣家的訴求,搜索產品中除了商品搜索外還有「穹頂」,「主題搜索」,「錦囊」,「內容搜索」等非商品搜索內容,不同搜索目標和不同內容(物種)之間的聯合優化未來很值得深挖。
㈣ 計算機演算法在實際生活中的應用
在這一周的《吳軍的谷歌方法論》中,老師講了地址(addressing)的重要性,並在此基礎上介紹了地址的查找,數據的訪問。對於地址的查找,在數據量較小時,可以採用順序查找法和字典查找法;當數據量達到一定程度後,則需要為數據建立索引。而對於已經建立的索引進行查找,老師又詳細介紹了具體方法的演進過程,引出隨機性在索引查找中的應用。
通過上一周的學習,有如下幾點收獲:
1.理清問題,確定演算法,選擇語言
在這周的文章中讀到,以前的人把計算當作目的,圖靈是把計算當作手段,實現一些功能才是他的目的,回想起自己做研究生課題時遇到的一個問題。當時自己做的是機油濾芯過濾阻力和過濾精度的模擬計算,開始階段採用二維模型來模擬圓筒狀的濾芯。實際生產的濾芯是用木屑做的,填充率為31.8%,自己模擬計算也希望達到這個數值,但是初步的計算達不到這個數值,就向博士畢業的堂姐請教了這個問題:
堂姐的回復如下:
當時並沒有非常理解她說的話,現在回過頭來看,能更加明白她的意思了。對於一個具體的問題,可以採用的演算法其實是非常多的,對於每一種演算法又可以選擇很多種實現的語言。但是我們解決問題的時候,一定要從問題這個根本出發,對於問題本身有足夠深入的思考。在此基礎上,明白解決這個問題採用怎樣的演算法最簡潔高效,這是關鍵。至於選擇那種語言或者工具,會對演算法的實現效率產生一定影響,但不是最核心的。
2.從多個維度建立索引
對於演算法的介紹中,老師強調了索引的重要性。關於建立索引,想到的兩個應用的例子,一個是微信好友的標簽,一個是印象筆記的標簽。
對於我們在工作場合或者意外狀況下認識的朋友,也許後期的聯系會很少,那麼建立細致的備注信息就很有必要。通過對聊天記錄的梳理,在標簽中註明行業,公司,家鄉,甚至愛好,並且備注一些印象深的細節。這樣不僅可以通過標簽很快找到對應的人,而且在以後再次約見的時候,能通過這些標簽信息,談一些對方熟悉的話題,迅速拉近彼此的距離,對於我們的社交會有很大的幫助。
另外一個就是在印象筆記中建立新筆記時,可以建立盡量詳細的標簽。這在當時可能費事一點,但是後面隨著筆記數量的增多,在海量筆記中通過標簽來進行篩選,將是一件非常提升效率的事情。說到印象筆記,就像多說兩句,因為真的很好用。建立標簽就點擊F3就可以開始建立新標簽。
3.問題規模的增大會導致性質的變化
讀到這句話時,想到之前脫不花和羅振宇兩位老師在周二例會時講得到的發展。當時得到總共的人數是157個人,剛剛超過鄧巴數(人類智力允許人類擁有穩定社交網路的人數,為148)。
在鄧巴數以內,公司裡面的人可以彼此認識並且維持穩定的關系,不需要太明確的部門和上下級關系。但是兩位老師講到,隨著公司里的人數超過鄧巴數,那麼部門化和層級化是不可避免的趨勢,因為這樣可以提高效率。但部門和層級的建立,會導致利益變形,之前大家是向市場要收益,更關注如何把自己的工作做好;之後是向上級要收益,更容易出現溜須拍馬的現象。
不過正如老師所說,本著遇到問題解決問題的態度,即便問題轉化了,只要大家發揮主動性,認真去面對問題,總會有解決方法。而且Google,蘋果這樣的公司樹立了很好的榜樣,現在已經非常大了,依然保持很好的運作和增長。
而作為個人,我們應該更多關注自己如何在企業不斷擴大的過程中,保持自己本身的不斷成長,為公司解決新的更復雜的問題,讓自己一直擁有競爭力。這也是《領導梯隊》中想要告訴我們的,在領導梯隊的上升過程中,面對的不是更多同類的問題,而是全新的問題。我們要讓自己學會轉化思維模式,這樣在舊問題已經轉變成新問題時,可以更好去應對。
㈤ 性生活九九歸一演算法,你的年齡適合幾天一次性生活,你
性生活的演算法是這樣的,以你的年齡十位數,乘以性生活的周期9天,例如20的年齡,則是10天內8次性生活,30以後性生活。20天內7次,一個月內不超過10次為佳,
㈥ 結合生活中的實例,描述求解隨機數的演算法流程圖
生活中的實例:一個老太太買白菜,她給挑出的10棵白菜排一下序,然後她拿出了隨身攜帶的筆記本電腦,輸入 。
#include "stdio.h"
#define N 10
main()
{
int a[N];
int i,j,p,temp;
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{
p=i; for(j=i+1;jif(a[j]temp=a[i];a[i]=a[p];a[p]=temp;
}
printf(" ");
for(i=0;iprintf("%d ",a[i]);
}
然後得到了白菜的重量排序。
傳統的流程圖用流程線指出各框的執行順序,對流程線的使用沒有嚴格限制。因此,使用者可以毫不受限制地使流程隨意地轉來轉去,使流程圖變得毫無規律,閱讀者要花很大精力去追蹤流程,使人難以理解演算法的邏輯。
如果我們寫出的演算法能限制流程的無規律任意轉向,而像一本書那樣,由各章各節順序組成,那樣,閱讀起來就很方便,不會有任何困難,只需從頭到尾順序地看下去即可。
為了提高演算法的質量,使演算法的設計和閱讀方便,必須限制箭頭的濫用,即不允許無規律地使流程亂轉向,只能按順序地進行下去。但是,演算法上難免會包含一些分支和循環,而不可能全部由一個一個框順序組成。
如上例不是由各框順序進行的,包含一些流程的向前或向後的非順序轉移。為了解決這個問題,人們設想,如果規定出幾種基本結構,然後由這些基本結構按一定規律組成一個演算法結構,整個演算法的結構是由上而下地將各個基本結構順序排列起來的。
1966年,Bohra和Jacoplni提出了以下三種基本結構,用這三種基本結構作為表示一個良好演算法的基本單元。
㈦ 什麼是演算法試從日常生活中找3個例子,描述它們的演算法
演算法就是解決問題的方法比如你要喝茶就要先找到茶葉,燒一壺開水,然後將茶葉放到杯子里,然後將開水倒入杯中,然後等一段時間再比如你要從a地到b地,中間可能有多種汽車換乘方案,是選速度最快的,還是選最省錢的,還是平衡的,制定換乘方案就是演算法。
㈧ 學習C語言 從日常生活中找出三個例子,描述它們的演算法。
例子:上海去到北京
演算法:做汽車、做飛機、或者徒步
例子:大象裝冰箱
哈哈
㈨ c語言問題: 什麼是演算法試從日常生活中找3個例子,描述它們的演算法。 詳細點,謝謝!
c語言中的演算法是指:一系列解決問題的清晰指令,用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。通俗說就是解決問題的方法和步驟。
描述演算法的例子:
問題:從上海去到北京。
其中的演算法:做汽車、做飛機、或者徒步。
問題:喝茶。
其中的演算法:先找到茶葉,再燒一壺開水,然後將茶葉放到杯子里,將開水倒入杯中,等茶葉泡好。
問題:開車。
其中的演算法:首先要打開車門,駕駛員坐好,插上車鑰匙,發動汽車。
㈩ 演算法在實際生活中的應用
求解問題類的、機械的、統一的方法,它由有限多個步驟組成,對於問題類中的每個給定的具體問題,機械地執行這些步驟就可以得到問題的解答。演算法的這種特性,使得計算不僅可以由人,而且可以由計算機來完成。用計算機解決問題的過程可以分成三個階段:分析問題、設計演算法和實現演算法。
中國古代的籌算口決與珠算口決及其執行規則就是演算法的雛形,這里,所解決的問題類是算術運算。古希臘數學家歐幾里得在公元前3世紀就提出了一個演算法,來尋求兩個正整數的最大公約數,這就是有名的歐幾里得演算法,亦稱輾轉相除法。中國早已有「算術「、「演算法」等詞彙,但是它們的含義是指當時的全部數學知識和計算技能,與現代演算法的含義不盡相同。英文algorithm(演算法)一詞也經歷了一個演變過程,最初的拼法為algorism或algoritmi,原意為用阿拉伯數字進行計算的過程。這個詞源於公元 9世紀波斯數字家阿爾·花拉子米的名字的最後一部分。
在古代,計算通常是指數值計算。現代計算已經遠遠地突破了數值計算的范圍,包括大量的非數值計算,例如檢索、表格處理、判斷、決策、形式邏輯演繹等。
在20世紀以前,人們普遍地認為,所有的問題類都是有演算法的。20世紀初,數字家們發現有的問題類是不存在演算法的,遂開始進行能行性研究。在這一研究中,現代演算法的概念逐步明確起來。30年代,數字家們提出了遞歸函數、圖靈機等計算模型,並提出了丘奇-圖靈論題(見可計算性理論),這才有可能把演算法概念形式化。按照丘奇-圖靈論題,任意一個演算法都可以用一個圖靈機來實現,反之,任意一個圖靈機都表示一個演算法。
按照上述理解,演算法是由有限多個步驟組成的,它有下述兩個基本特徵:每個步驟都明確地規定要執行何種操作;每個步驟都可以被人或機器在有限的時間內完成。人們對於演算法還有另一種不同的理解,它要求演算法除了上述兩個基本特徵外,還要具有第三個基本特徵:雖然有些步驟可能被反復執行多次,但是在執行有限多次之後,就一定能夠得到問題的解答。也就是說,一個處處停機(即對任意輸入都停機)的圖靈機才表示一個演算法,而每個演算法都可以被一個處處停機的圖靈機來實現
演算法分類
演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法。
演算法可以宏泛的分為三類:
有限的,確定性演算法 這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。
有限的,非確定演算法 這類演算法在有限的時間內終止。然而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。
無限的演算法 是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。演算法特徵一個演算法應該具有以下五個方面的重要特徵:1、輸入。一個演算法有零個或多個輸入,以刻畫運算對象的初始情況。例如,在歐幾里得演算法中,有兩個輸入,即m和n。2、確定性。演算法的每一個步驟必須要確切地定義。即演算法中所有有待執行的動作必須嚴格而不含混地進行規定,不能有歧義性。例如,歐幾里得演算法中,步驟1中明確規定「以m除以n,而不能有類似以m除n以或n除以m這類有兩種可能做法的規定。3、有窮性,一個演算法在執行有窮步滯後必須結束。也就是說,一個演算法,它所包含的計算步驟是有限的。例如,在歐幾里得演算法中,m和n均為正整數,在步驟1之後,r必小於n,若r不等於0,下一次進行步驟1時,n的值已經減小,而正整數的遞降序列最後必然要終止。因此,無論給定m和n的原始值有多大,步驟1的執行都是有窮次。4、輸出。演算法有一個或多個的輸出,即與輸入有某個特定關系的量,簡單地說就是演算法的最終結果。例如,在歐幾里得演算法中只有一個輸出,即步驟2中的n。5、能行性。演算法中有待執行的運算和操作必須是相當基本的,換言之,他們都是能夠精確地進行的,演算法執行者甚至不需要掌握演算法的含義即可根據該演算法的每一步驟要求進行操作,並最終得出正確的結果。演算法的描述1、用自然語言描述演算法前面關於歐幾里得演算法以及演算法實例的描述,使用的都是自然語言。自然語言是人們日常所用的語言,如漢語、英語、德語等。使用這些語言不用專門訓練,所描述的演算法也通俗易懂。2、用流程圖描述演算法在數學課程里,我們學習了用程序框圖來描述演算法。在程序框圖中流程圖是描述演算法的常用工具由一些圖形符號來表示演算法。3、用偽代碼描述演算法偽代碼是用介於自然語言和計算機語言之間的文字和符號來描述演算法的工具。它不用圖形符號,因此,書寫方便、格式緊湊,易於理解,便於向計算機程序設計語言過度。