1. 程式人生 > >2017年,你還在用使用者畫像和協同過濾做推薦系統嗎?

2017年,你還在用使用者畫像和協同過濾做推薦系統嗎?

本文是大資料雜談 7 月 13 日社群公開課分享整理,也是第四正規化主題月的第二堂公開課內容。

今天想和大家分享,如何使用大規模機器學習解決真實的業務問題。我們今天會以機器學習中的一個典型場景為例來講解,即基於大規模機器學習模型的推薦系統。

推薦系統的本質是什麼?

比如說我們看到手機淘寶首頁,往下一拉,就能看到各種各樣推薦的商品;比如說百度,它會給我們推薦廣告,在某種程度上他的工作方式也很像推薦系統;再比如說今日頭條,今日頭條從數十萬的新聞中選出會被我們看到的數十個新聞,這也是推薦系統。

儘管我們在生活中會已經見過非常多的推薦系統,但是在用機器學習搭建推薦系統之前,我們還是應當先思考一下,推薦系統要解決的到底是個什麼樣的問題?

推薦系統在本質上是一個資訊檢索的系統。它和搜尋最大的區別是,搜尋是主動式的,根據關鍵詞和引擎引數、搜尋引擎召回、機器學習排序,決定給你看到的是哪些內容。而我們看到的推薦系統,在大多數情況下是沒有主動輸入的(有時會有一些簡單的反饋動作),是被動出現的。

推薦系統是利用上下文,根據當前使用者所處的環境,根據資訊的特點來決定給你推薦什麼內容和商品。而在我們進一步去想之前,我們要問自己一個問題,就像上節課田老師講的一樣,推薦系統的目標是什麼,什麼才是一個好的推薦系統,要優化的指標是什麼。

推薦系統的指標是什麼?

推薦系統是個產品,產品當然是想方設法讓使用者去喜歡的,或者至少是不討厭的。因而,我們需要把喜歡和討厭這兩件事情定義出來。同時我們畢竟不是使用者肚子裡的蛔蟲,我們只能用我們可以測量到的資料來描述喜歡和討厭兩件事情。並用這些資料來決定我們做什麼和不做什麼。

比如說:我是個電商,使用者表達對一個推薦商品喜歡的方式是:點選、收藏、加購物車、甚至購買下單、分享到社交平臺上等等。使用者討厭一個推薦商品的方式,就是會投訴、會提意見。因而我們要預防一些很可能會讓使用者討厭的推薦結果:比如說推薦成人用品和內衣,尤其是在上班時間;比如推薦使用者剛剛買過的商品,等等。

我們一定能為一個推薦系統去定義指標,我們可以給這些指標分輕重緩急,看能用什麼順序實現。現在我用的指標可能有點投機取巧,我用的是點選率。而真實的指標考慮的是很多的,僅僅考慮點選率的模型,可能會出現標題黨,如果是電商就可能會出現一堆 9 塊 9 包郵,這可能不是我們業務想要的。

另外即使只考慮點選率,我們也知道其實我們推薦的是一個列表,列表的質量不完全是由單一的商品決定的,而是整個列表的組合、順序、多樣性所決定的。所以真實的業務中,我們會考慮用更復雜的目標,比如 MAP 來評價一個推薦列表的質量。

但沒關係,今天我們就用點選率作為試點,介紹如何用機器學習來搭建推薦系統的完整過程。

推薦系統的 y 和 x

第一步, 我們已經知道機器學習模型需要預測的就是優化目標,點選率;那我們把使用者的點選行為需要記錄下來。這樣一來,對於機器學習來說,我們已經有 y 了

第二步,我們需要定義好 x,也就是特徵。

一般來說推薦系統的特徵體系由 3 個部分組成:使用者特徵、內容特徵、上下文特徵。

使用者特徵:包括但不限於使用者姓名、性別、年齡、註冊時間、收貨地址、常用區域等使用者特徵

內容特徵:包括但不限於以及商品、內容的標題分詞、內容的 TF-IDF、內容來源、內容渠道、內容生產者等等

那麼上下文特徵, 是代表使用者當前時空狀態、最近一段時間的行為抽象的特徵。比如說使用者當前的 GPS 座標,大家可能覺得奇怪, GPS 座標怎麼用來推薦呢?其實很簡單,地球一圈是 4 萬公里,GPS 一圈是 360°,一度大概是 100 公開。如果我們把 GPS 座標儲存到小數點後一位,組合起來,這樣的特徵就是 10*10 公里的格子,這就代表了一個有泛化能力的使用者的位置。

位置是一個非常強的特徵,如果我們更進一步,做到了 1 公里,顯然我們可以相信,在中關村地區,大家的偏好是有共性的,而在金融街,大家的喜好也是有共性的。當大家的資料足夠多的時候,落在同一個格子裡的人會非常多,GPS 就會成為非常重要的特徵。

另外是 IP 地址,比如最近瀏覽的內容、最近購買的商品,這些都會構成上下文特徵。所以我們就是在使用者特徵、內容特徵和上下文特徵的基礎上,預測使用者對當前內容的點選率。

推薦系統的樣本構造和資料拼接

一個成熟的推薦系統,它可能有非常複雜的樣本構造方法,今天用了比較簡單的方法,讓問題變得簡單。另外,一個成熟的推薦系統,它可能會有多個指標和業務邊界條件。

那麼接下來:基於已知的 x 和 y,我們要為機器學習構造樣本。什麼是一條樣本?一個樣本代表機器學習預測的一個最小粒度的事件。當你把一條內容展現給使用者,使用者點選或不點選,這就代表了一個最小粒度的事件,就是一條樣本。再比如說我們給使用者展示了 10 條新聞,使用者對應每個新聞點選或者不點選,就是 10 條樣本。

在樣本採集後,就要考慮資料怎麼收集和拼接了。在拼接的時候要注意的是,假如是為了優化點選率,我不光要把使用者特徵、上下文特徵收集起來,我還要把點選率拼回到當時那一條樣本請求上去。所以系統一定要有這樣的考慮,記錄下時間和拼接的 ID ,同時還要考慮剛才說的三類特徵是處於實時變化當中的,日誌也是實時產生的,而不是後面去拿的,因為這樣做很可能會出現問題。 資料一旦出問題,是非常難以 debug 的。給大家舉個栗子,有一家公司,BAT 之一,他的推薦系統過去幾年 85% 的效果提升來源是把之前有問題的資料給修復了,做對了。

推薦系統的場景思考

樣本構造還需要考慮場景的問題,比如說我們會遇到一個問題,螢幕的大小是不一樣的,同樣展示 10 條新聞,我怎麼知道使用者有沒有看到它。如果沒有看到就不應該作為一條樣本。這時候就有兩種解決方案,第一種解決方案是把使用者真正看到的納入進來,因為前端是你設計的,所以你會知道哪些內容是使用者的可見範圍內。 當然這會讓客戶端變得更重一些。

第二種是一個比較簡單的方法,把內容的位置作為一個特徵。因為我們知道,同樣是一螢幕展現 10 行內容,即便是一樣的內容,使用者也會選擇一個他舒服的位置去點,這個可能是偏中上的位置。所以當新聞在第三個位置被點選的時候,這可能是一個容易被點選的位置,但不一定代表這個新聞比其他新聞要好。那我們怎麼辦?我們就要通過某些手段,把這些偏置吸收掉,所以我們會把位置、螢幕大小等作為特徵,通過特徵工程的方法來吸收這個偏差,變成無偏的模型。

這時候有些人可能會問,這不是穿越嗎?因為在給出預測的時候,是不知道內容最終的位置資訊的。但這相當於把偏差的鍋由位置來背了,這是機器學習推薦系統中的一個策略。

剛才我們已經構造好特徵了,現在給大家講怎麼建模。大家可能會認為,前面的部分是快的,真正做機器學習,做特徵工程、模型調參等,這些是慢的。但是今天我們會看到,在成熟的工業界裡面,其實前面要花的時間會多很多,後面的內容在成熟的工具下會變得簡單。

在先知上完成推薦系統的建模流程

我們會從一個真實的案例出發,雖然我們做了很多的推薦系統的案例,但畢竟不能把客戶的資料給大家看,所以我們用了一份公開的資料,這份資料和我們之前講的場景是相似的。這份資料來自於 Kaggle,叫做 Criteo 點選率預估比賽。

資料預覽

首先我們看資料的樣子,第 1 列 col_1 代表的是廣告有沒有被點選,1 代表被點選,0 代表沒有被點選。然後我們看第 2 列到第 14 列,都是數值型的特徵,因為這份資料已經被匿名化了,所以我們可能也不知道這些數值代表什麼意思,也許是這個使用者的 PV,或者標籤的權重,不過我們也不需要知道。然後看第 15 列到 40 多列,這些都是離散的特徵,這些特徵都做了雜湊化,都做了匿名處理。

這個資料有 3000 萬行 40 多列,按照我們傳統的做法,進行特徵工程以及 one-hot 編碼後,會有 4000 多萬個特徵。真實的業務資料中,訓練資料體積會更大,往往達到上億,同時原始特徵數量會達到上百,因為為了好的個性化效果,我們會使用諸如 GPS 座標、手機型號、ip 地址、最近瀏覽內容等等精細化的特徵,並進行非常極致的特徵工程,這樣的模型在特徵工程之後的特徵數會達到數億甚至幾百億。這樣規模的機器學習訓練,挑戰的不僅是演算法,更是如何在成本可承受的計算資源上進行訓練和實時預估。

開發這樣一個規模的可以並行執行的系統的挑戰更加大,即使 BAT 這樣的大公司也會養一個百人的團隊,只為了做好機器學習模型訓練和預估的工程實現。下面我們會看到利用第四正規化的先知平臺去做這件事情,會大大降低我們開發和運維一個線上機器學習系統的成本,讓我們更加聚焦在業務本身。下面我們會看到在先知平臺上對這份資料的建模會非常簡單。

資料拆分

首先我們把這份資料拆成了訓練集和測試集,以 9:1 的方式。當然這可能是不太合適的拆分方法,因為真正訓練一個機器學習模型,它的拆分是按照時間排序後再拆的,就是用前面的時間來訓練模型,然後用這個模型來預測點選。這樣訓練和測試在時間上是正交的,那麼模型如果在這種實驗設計下有好的效果,這個效果就會有時間平移性,上線後就會有好的效果。當然,為什麼我們在這裡沒有使用按照時間排序拆分的方式,是因為參考了一篇論文的做法(https://arxiv.org/abs/1703.04247),這樣同樣的做法結果可比。在真實的業務中,不建議大家按照這種方式來處理資料。

特徵工程、模型選擇和評估

然後就是做特徵工程了,一般來說大家可能覺得很難,但只需要告訴電腦哪個是 Label,其他的直接預設配置就好了。但天下沒有免費的午餐,特徵簡單處理,我們要有更強的模型,所以我們用了線性分型分類器。

一般來說,推薦系統中會有離散特徵和連續特徵,當我們用邏輯迴歸這種寬的離散線性模型的時候,我就會遇到一個很大的問題,就是我需要對特徵進行分段,這樣才能學到連續特徵的非線性結構。比如說使用者年齡對點選率的影響,它並不是線性上升的,它可能會上升到 30 歲,然後就下降了,甚至有更復雜的模式,這些是非線性的特性。所以我們可以用機器對連續的特徵做自動搜尋分段,這樣的預處理效率就大大提高了。線性分形分類器就是做的這樣的事情,基本上我花了不到 5 分鐘,就跑出了 0.796 的 AUC。

AUC 代表了一個模型對樣本的排序能力。如果這是一個完美的排序,點選率高的 100% 排到了點選率低的前面,那 AUC 就是 1。如果是隨機瞎排,那 AUC 就是 0.5。所以 AUC 越接近於 1,就代表了整體的排序能力越強。現在的 AUC 是 0.796,比論文的 0.801 稍微差一點,我只做了這麼點就到了這個成績,我覺得還是可以的。

當然這裡進一步說一下,評估上線的時候,不能只是看 AUC。例如說,我要看的是 User AUC,或者每一刷的 AUC,因為模型的排序能力,一部分來自於對每個使用者個性化的識別能力,另一部分來自於對使用者本身的識別能力。比如說有些使用者就是什麼都愛點,什麼都點,而有些使用者基本只看標題不點開。我們把這樣的人分開,對個性化推薦是有幫助的。所以我最終應該看的是,在每一個使用者身上的 AUC,甚至是每一次展現的 AUC,當然先知也提供了工具,就不多贅述了。特徵組合

但我還是想讓這個模型更好,怎麼辦呢?在做推薦系統的時候,特徵工程最重要的處理方法是特徵組合。比如說有兩個特徵,一個是性別,另一個是新聞的色情等級。我們可能會注意到,男同志比較喜歡火爆的新聞,女同志可能正好相反。我把色情等級作為一個特徵,可能兩邊的喜好不同導致最終這個特徵整體對點選率的影響和一個隨機數一樣,它就不是好的特徵,沒有預測能力。

但如果我把這些特徵組合起來,我就對這些空間有更細緻的分割能力,我就會做出很好的效果。性別、使用者 ID 和新聞色情等級組合起來,是新聞推薦非常有用的特徵。進一步說,假如我們有 100 個特徵,那麼特徵兩兩組合的空間,就是 一萬個,這是個很大的工作量。

傳統的手段是,通過業務經驗和實驗去篩選好的組合。但是工具可以幫我們做得更快更好,先知的 FeatureGo 功能,可以通過一系列的配置和優化目標設定,自動搜尋出好的特徵組合,大大節省我們的工作時間,讓人的工作由機器來完成。然後我就跑了 FeatureGo,找到了 18 和 28,33 和 34 這些組合特徵就不錯。而如果計算資源足夠,那你還可以搜尋 3 階的特徵,這是由人來做非常難的事情。

在用機器完成自動特徵組合後,調參其實也可以自動化的。我們知道機器學習就像煉丹,煉丹就是調參,調參就是在引數空間裡,根據我們的經驗去搜索一下,看什麼引數是好的。我們也有好的工具,可以自動搜尋到好的引數。當把這些設定好之後,我就去睡覺了。第二天醒來後發現,這個模型的 AUC 達到了 0.802,已經超過了論文的效果。由於這篇論文還是今年比較有名的論文,我還是很滿意的。

模型上線

設計好模型後,一般是用 Restful API 的模式服務的。比方說根據這個 API,就可以給不同的內容進行打分,打分後根據倒排後的結果,響應推薦的內容。

當然,一個完整的推薦系統,不僅僅需要機器學習排序,還需要相應的元件。比方說我要有物料庫,把商品的特徵維護起來,這需要一個高效能的快取和資料庫,能夠增刪查改,能夠進行特徵的初步生成。我還需要一個日誌系統,日誌系統通過唯一性的標識,把實時的請求和後續的反饋 Label 記錄並拼接起來。我還需要一個自學習的系統,機器學習的模型每天都是要更新的,如果拿 7 天前學到的模型去推今天的商品,那豈不是用前朝的劍斬本朝的官,效果一定不好,所以我們還需要自學習,或者是增量的線上學習,來保證模型捕捉到最新的使用者偏好和市場情況。

然後我們還需要後續的預測,比方說我的內容有好幾十萬,我並不是拿好幾十萬給機器學習去預估,我會用啟發式的方法,比如說 CF、熱度、Tag 匹配等召回策略先生成候選集,然後才進入到機器學習排序。召回策略同樣使得我們有更大的能力去影響機器學習排序的結果,比如我們可以過濾掉一些我們明知道不好的內容或者增加我們認為好的內容的權重或出現比例。在機器學習排序後,我們也需要對結果進行去重、多樣化和隨機化,最後才做成一個好的推薦系統。

今天和大家介紹的是,我們如何利用機器學習去搭建一個推薦系統的排序環節。總結起來是這麼幾個點:第一個是如何使用機器學習來剖析一個問題,我們用了推薦系統的例子。第二個是我們如何構造一個推薦系統的樣本、資料並進行建模,當我們有一個非常好的機器學習工具的時候,我們可以把精力聚焦在業務上,在怎麼找到好的資料上,以及在怎麼定義好的目標和規劃上。第三我們描述了機器學習系統是如何和其他系統發揮作用的,機器學習就像發動機,汽車當然需要發動機,但只有發動機車是跑不起來的,你還需要周邊的配件,這是系統化的工程。在這方面我們已經做了一些工作,我們既有發動機,也就是先知平臺,大家可以在這裡試用 https://prophet.4paradigm.com,我們也有整車,就是整個推薦系統的解決方案。我們很高興和大家分享這樣的技術和能力,謝謝大家。

答疑環節

Q1: 針對製造業,有哪些已經比較好的案例可以幫助客戶改進運營,質量或生產的。Kaggle 上有沒有案例可以參考學習?

周開拓:製造業,有很多的問題都很適合機器學習去解決。比如說所有的製造業企業成本很大一部分來自於庫存和物流。是否可以利用企業的大量資料,來預測到分地區、分時間的銷量。如果你預測的準,就可以大大降低企業的成本,優化他們的運營。我忘了 kaggle 哪個具體的比賽了,但是你在 kaggle 上搜索 inventory 應該可以找到。

Q2: 推薦系統,都有哪些方案解決冷啟動問題,百萬級使用者的推薦系統,一般用什麼樣的框架

周開拓:推薦系統冷啟動是個很大的話題,可能這裡只能給大家一些簡單的例子。冷啟動分為使用者的冷啟動和整個推薦系統的冷啟動,整個推薦系統的冷啟動就是在搭建推薦系統之前,我能否已經收集了一些使用者行為的資料,如果有的話,可以構造一些弱一點的模型,比如說用 CF、SVD、熱度這樣的方法對內容做一些初步的排序和篩選,同時配合一些簡單的基於 query 的策略,比如最新、最熱、最多評價等等先構造一個差一點但是比隨機強很多的推薦列表。如果資料基礎更好,也可以用其他場景的資料來構造 label、樣本來進行建模。而使用者的冷啟動,歸根結底就是在使用者進入產品之後,儘快有效地獲取他的資訊,一方面可以通過產品的手段來實現,一方面可以通過第三方資料合作的方式來實現,比如說這個人如果是微博註冊的話,如果你能夠收集到一些公開的微博資料,就會對冷啟動很有幫助。關於架構的話,剛才已經介紹很多了,您可以參考。

Q3: 講解中提到對連續特徵分段,比如使用者年齡對點選率的影響,是否可以詳細解釋下呢,技術原理和方法?

周開拓:就是如果年齡是一個你可以取到的特徵,那麼我們這個模型就應該能描述年齡對於點選率的影響。如果你直接把年齡作為特徵,那麼對於線性模型來說只能夠學習到線性的關係。所以你會把年齡分段,就是你認為年齡 =18 歲有 w1 的影響,年齡 =19 歲有 w2 的影響,以此類推。而分段怎麼分,會決定你的這個特徵是否能夠有很好的預測能力。這通過我們的線性分形分類器可以得到很好的解決。

Q4: 樣本採集過後是怎麼來發現有問題的資料呢?另外資料修復的措施有些什麼呢?

周開拓:那首先看是什麼問題,先看看問題的原因是什麼?比如說舉個栗子,你發現點選率突然異常地高,那你應該想想是日誌系統掛掉了,還是因為有爬蟲在攻擊你們的產品。你找到問題產生的原因以後,再想想這個問題對你的推薦系統影響的程度,因為問題很多,不是每個都能夠馬上解決。有時候,資料根本無法修復,這是本身業務形態導致的資料系統性偏差,你可以用模型或者構造更精妙的特徵的方法來解決他。

Q5: 老師剛才講到因為修復了資料問題而提升了 85% 的準確性,請問資料都是有那些問題需要我們注意?

周開拓:資料首先要注意的就是,用於訓練和預測的是兩條資料流,這兩條資料流是不是一致的,因為只要是人開發的系統,即使你自己重新寫兩遍,因為上下游依賴的種種東西,它就可能不一致,就可能出毛病。這是最重要的,一致性的問題是最重要的。另外你用於訓練的資料,是否符合他要預測的場景的那個時空狀態下采集到的狀態情況?我們見過一些客戶自己做推薦系統,用了錯誤的方法,採集了錯誤的資料,儘管線下訓練效果很好,線上實施的結果卻遠遠低於預期。這是最大的風險之一。

Q6: 特徵組合的方式是什麼?怎麼拼接在一起?

周開拓:特徵組合其實很簡單,比如一個特徵叫做身高,分高矮,一個特徵區分窮富,還有一個特徵叫做帥和不帥。那麼高富帥就是一個組合特徵,他對人的描述能力就強於之前任何一個單獨的特徵。

Q7: 在時間非常重要的情況下如何判斷一個模型是不是過擬合了?

周開拓: 過擬合其實很容易判斷,首先你的實驗設計在時間上一定要是正交的,就是你用 1-7 號的資料訓練的話,要用 8 號的資料做驗證。那麼如果驗證集上的表現差,而訓練集上的表現好,那可能是不是就是穿越了。另外你會對驗證指標,比如 auc 比如 logloss 有一些經驗性的判斷,當一個模型的指標值大大超過你的經驗的時候,風險就比較大。

Q8: 請問你這邊機器自動調參是怎麼實現的呢?

周開拓:機器調參和人本質沒什麼區別,就是快很多而已。通過設定搜尋的引數空間範圍,以及啟發式的搜尋方式來找到在空間裡優的引數組合。

Q9: 請問線上學習用的是什麼演算法?用的是跟離線訓練一樣的特徵嗎?auc 能達到多少?一直在訓練的模型最後會過擬合嗎?

周開拓:線上學習的主要好處是快,而不是準。當然有一些特徵因為工程的原因,線上不好收集到,就沒法用了。AUC 取決於具體問題。一直在訓練的模型可能出現的問題就是新增的增量樣本對於模型的影響越來越小,學不動了,這時可以考慮做一些措施。

作者介紹

周開拓,第四正規化網際網路業務負責人。畢業於北京大學數學系,曾在傳統媒介、製造業、電商等不同領域從事機器學習演算法應用。在加入第四正規化前負責淘寶網的推薦演算法策略。對如何在現實的商業環境中用機器學習演算法驅動業務富有經驗。

下期預告:打造機器學習的基礎架構平臺

講師介紹:

陳迪豪,第四正規化先知平臺架構師,曾在小米科技和 UnitedStack 擔任基礎架構研發工程師。活躍於 OpenStack、Kubernetes、TensorFlow 等開源社群,實現了 Cloud Machine Learning 雲深度學習平臺,Github 賬號 https://github.com/tobegit3hub。

主題:

本節課將介紹關於機器學習的基礎架構平臺,如何讓機器學習任務更高效、更安全地執行在統一的分散式計算平臺上。從單機版到分散式、從 IOE 到雲端計算、從 CPU 到 GPU,基礎架構技術在不斷革新,使用合適的基礎架構平臺可以讓機器學習發揮更大的效益,真正應用到實際場景中。

機器學習的最小可用產品:人工智慧應用的敏捷開發


相關推薦

推薦系統2017在用使用者畫像協同過濾推薦系統

本文是大資料雜談 7 月 13 日社群公開課分享整理,也是第四正規化主題月的第二堂公開課內容。 今天想和大家分享,如何使用大規模機器學習解決真實的業務問題。我們今天會以機器學習中的一個典型場景為例來講解,即基於大規模機器學習模型的推薦系統。 推薦系統的本質是什麼? 比如說我們看到手機淘寶首頁,往下一

2017在用使用者畫像協同過濾推薦系統

本文是大資料雜談 7 月 13 日社群公開課分享整理,也是第四正規化主題月的第二堂公開課內容。 今天想和大家分享,如何使用大規模機器學習解決真實的業務問題。我們今天會以機器學習中的一個典型場景為例來講解,即基於大規模機器學習模型的推薦系統。 推薦系統的本質是什麼? 比

python高階語法-python3了在用%format格式化輸出

在之前的一段時間python2.x的時代,字串的格式化輸出有兩種方式 第一種 %來格式化輸出 str1 = "i am %s" % "Zc" print(str1) 第二種 利用format來格式化定義 str2 = "i am {}".format("Zc"

flutter_bloc使用解析---騷在手搭bloc

## 前言 - 首先,有很多的文章在說flutter bloc模式的應用,但是百分之八九十的文章都是在說,使用StreamController+StreamBuilder搭建bloc,提升效能的會加上InheritedWidget,這些文章看了很多,真正寫使用bloc作者開發的flutter_bloc卻少之

看了這個敢用分身版微信刷步

最近很多使用者把第三方修改的微信分身版各種瘋傳,不少人都安裝了不同功能的微信刷步分身版,不管是為了刷微信運動步數,一鍵轉發,一鍵評論還是帶有其它功能的微信分身版。 很顯然很多人安裝了這些分身版卻不知道其中可能存在的風險,這些微信分身版無非就是通過load command動態庫注入hook函式

系統集成項目經理高級項目經理資格通過培訓可以獲得需要軟考

項目管理 原系統集成項目經理和高級項目經理的資格獲得的渠道為必須取得工信部的軟考資格後,才可以由用人單位向工信部資質管理部門申請。 現在改由電子聯合會負責資質相關工作了,直接向電子聯合會註冊申請項目經理了,目前直接培訓就可以拿項目經理證了,前幾個年苦哈哈考了軟考的小夥伴們情何以堪。 其實

又一沒有中國隊的世界杯會熬夜打call?網友的回答亮了

俄羅斯 .... 評論 一個 fff CA 圖片 通過 mage 作為足球界的第一盛宴,2018年俄羅斯世界杯將於明天點燃戰火,持續整整一個月。Giiso小智就想問,真球迷、假球迷、或是偽球迷,你們準備好要陷入這四年一度的狂歡了嗎? 根據公開的信息,目前可以通過央視、優酷

阿里架構師十經驗分享在迷茫

第一階段:三年 我認為三年對於程式設計師來說是第一個門檻,這個階段將會淘汰掉一批不適合寫程式碼的人。這一階段,我們走出校園,邁入社會,成為一名程式設計師,正式從書本上的內容邁向真正的企業級開發。我們知道如何團隊協作、如何使用專案管理工具、專案版本如何控制、我們寫的程式碼如何測試如何在線上執行等等

Windows1.0到Windows10三十進化史記得自己最初使用的系統?

從1985年Windows 1.0正式誕生到2015年Windows 10誕生,微軟花了三十年的時間,從畫素化桌面到現在扁平化的介面。讓我們來看一下Windows 1.0到Windows10三十年來的變化。 1、1985年11月20日,微軟釋出了第一版的Windows作

2019三星手機都增加數字貨幣錢包了不知道AToken?

2019年伊始據媒體爆料,韓國著名的電子產品製造商三星公司(SAMSUNG)提交了一個新的商標申請,意味著該公司可能考慮推出具有數字貨幣錢包功能的智慧手機。 日前有媒體報道稱,韓國三星公司於2018年12月27日在英國的智慧財產權局(IPO)提交了新的商標申請。標題為“三星加密貨幣錢包”

都9102“資料搬運工”

幾年前,英國某企業創始人Alex寫過一篇部落格《這才是我所謂的黑客》。故事主人公幾乎從不自己幹活,任何需要佔用他90秒以上的工作,

都0202不知道javascript有幾種繼承方式?

前言     當面試官問你:你瞭解js哪些繼承方式?es6的class繼承是如何實現的?你心中有很清晰的答案嗎?如果沒有的話,可以通過閱讀本文,幫助你更深刻地理解js的所有繼承方式。       js繼承總共分成5種,包括建構函式式繼承、原型鏈式繼承、組

都2020不會寫簡潔的Java程式碼!

# 都2020年了,你還不會寫簡潔的Java程式碼! ## 使用Google Guava依賴 ```xml com.google.guava guava 29.0-jre ``` ## 建立一個list集合並賦值 最原始的辦法: ```java List stringList =

2017電商、O2O項目怎樣順利拿到千萬融資?

2017年,電商、O2O項目怎樣順利拿到千萬融資? 互聯網發展至今二十余年,電商領域發展最早也最風起雲湧,競爭廝殺,巨頭橫行。發展模式升級了幾個來回,依然有勇者前仆後繼的進入戰場。反觀O2O行業,誕生至今不到3年,卻也歷經了大起大落,從投資人的朱砂痣轉變為蚊子血,多少創業者的

這麽多企業選擇順天元在等什麽

第三屆主帥實戰演說合影留念 恒裕走火大會合影 順天元親臨鑫昌隆合影留念 第八屆順天元主帥領導思維 劉奕謙到臺灣村演講 巔峰銷售現場 楊靖在悅福

2017企業移動化的需求變化與創新解決方案

企業移動化 雲適配 馬鐸 企業移動化說了很多年,是一個經久不衰的話題。隨著時間推移,時代變遷,企業在移動化方面的需求也在不斷更新。智能終端設備的普及,推動互聯網真正走進萬物互聯的時代。相比PC時代,移動互聯網時代更加碎片化、場景化、設備化。在未來,企業進行數字化轉型或成發展趨勢。因為數據是提升企業

PDF閱讀器還有那麽多強大的編輯功能沒想到吧~

pdf閱讀器 安卓pdf閱讀器 小編自己用的是一部苦逼的安卓手機,每次收到老板發來的PDF文件,都只能用軟件的內置瀏覽器打開文件——壓縮了圖片質量不說,重點是無法直接編輯文件,很是讓人崩潰啊!為了方便閱讀跟編輯,小編在多番功課之後下載了一個體積小於10M的PDF閱讀器,如下圖所示——看起來是不是很厲害

2013徹底改變了BAT中國互聯網

技術百度裁撤福州研究中心,並不讓人感到意外。2013年,移動互聯網大潮開始,苦於缺少移動互聯網“船票”的百度被追著趕著以19億美元的天價押寶了“91無線”,91無線旗下的主打產品當屬91手機助手,其時在移動分發市場奪得頭名。四年過後,移動分發市場BTA和360“四足鼎力”,背後還有小米、華為等手機廠商在追趕,

雙十一快到了不明白大品牌都喜歡投自媒-重慶時中文化

官方 是否 信息流 spa 媒體 表達 集中 禮貌 內容 不知道廣告主們有沒有發現,現在越來越多的廣告位都被官方的宣傳占據了。那你是否感到疑問呢? 原因很簡單,一方面是處於特殊階段,戶外宣傳大多數集中在宣傳上,另一方面就是偏好已經改變,現在都更偏向在自媒體上下功夫了。

當iPhone用上聯發科會愛上它

iphone對於蘋果來說,現在正在經歷史上罕見的“冰火兩重天”境遇。一方面是iPhone 8系列的售價以讓人瞠目結舌的速度暴跌,另一方面則是史上售價最高的iPhone X遭遇瘋搶,銷量可謂風生水起。可見,消費者對於不同的iPhone產品已經明顯呈現兩極分化的態度。而就在明年,蘋果可能還會在iPhone上讓你大