Evernote Export
比賽題目介紹
- TalkingData是中國最大的第三方移動數據平台,移動設備用戶日常的選擇和行為用戶畫像。目前,TalkingData正在尋求每天在中國活躍的5億移動設備70%以上的行為數據,幫助客戶更好的了解與其用戶互動。
- TalkingData提供了大約20萬用戶的數據(全部真實且經過脫敏處理),按照年齡和性別分成12個組,比如男性22到25歲,女性30到35歲,同時提供了用戶行為屬性,比如在什么樣的時間點出現什么樣的地理位置等等,選手通過這些信息去推測用戶是分在哪一個性別年齡里面。
- 什么是用戶畫像
- 用戶畫像可以理解為就是為用戶畫標簽,標簽是不固定的,依照企業業務場景動態添加、刪除等,有的標簽是永久的,有的標簽是可以動態變更的
- 用戶畫像可以看做是綜合性的標簽系統,在自身擁有(或從第三方獲得)的原始數據中,從多個維度對用戶進行產品進行刻畫,提取出商業價值潛力的語義信息,是常見的企業級大數據應用
- 對於人常見標簽與維度,地域、年齡、性別、文化、職業、收入、生活習慣、消費習慣等
- 對於產品常見刻畫維度,產品類別、活躍頻率、產品喜好、產品驅動、使用習慣、產品消費等
- 技術棧:無監督學習、半監督學習(技巧性很強),大多數是有監督學習
- 用戶畫像的作用
- 精准營銷,分析產品潛在客戶,針對特定群體利用短信郵件等方式進行營銷
- 用戶統計,比如中國大學購買書籍人數TOP10,全國分城市指數等
- 數據挖掘,構建智能推薦系統,利用關聯規則計算,喜歡紅酒的通常喜歡什么運動品牌,利用聚類算法分析,喜歡紅酒的人的年齡段分布情況
- 進行效果評估,完善產品運用,提升服務質量,其實這也就是相當於市場調研、用戶調研,迅速下定位服務群體,提供高水平的服務
- 對服務或產品進行私人定制,即個性化的服務某類群體甚至每一位用戶(這是未來的消費趨勢)比如,某公司退出一款5-10歲兒童的玩具,通過用戶畫像分析,發現某些特征的比重最大,就給產品提供了非常可觀的決策依據
- 業務經營分析以及競爭分析,影響企業發展戰略
人工神經網絡原理
- 知識地圖
- 從單層感知器到多層感知器
- 從多層感知器到自編碼器
- 從多層感知器到卷積神經網絡,再到深度殘差網絡
- 從多層感知器到遞歸神經網絡,再到LSTM
- 從單層感知器到Hopfield神經網絡,再到Bolazmann機和RBM
- 用RBM堆疊成DBN,DBN與多層自編碼器結合成DBN-DNN
- 神經網絡要素
- 網路結構(全連接、分層、有時滯回路、權值共享、激活函數)
- 運行機制(異步更新、同步更新、前饋)
- 訓練算法,訓練中使用的trick(mini batch BN drop out等),損失函數的定義
- 訓練數據(數據的預處理,輸入和輸出的構成等)
- 單層感知器
- 輸入節點
- 輸出節點
- 權向量
- 偏置因子
- 激活函數
- 學習率
- 單層感知器學習算法
- 單層感知器的局限
激活函數
sng(w1x1+w2x2+w3x3)=0
單層感知器類比於線性分類器
感知器學習的規則
1958年,首先定義了一個具有單層計算單元的神經網絡結構,稱為感知器
感知器的學習規則規定,學習信號等於神經元期望輸出(教師信號)與實際輸出之差
r=dj−oj
式中,dj為期望的輸出,oj=f(WjTX)感知器采用了與閾值轉移函數類似的符號轉移函數,其表達式為
f(WjTX)=sgn(WjTX)={1,−1,(WjT≥0)(WjT<0)
因此,權值調整公式為:
ΔWj=±2ηX
感知器學習規則只適用於二進制神經元,初始值可取任意值。
感知器學習規則代表一種有導師學習,由於感知器理論是研究其他神經網絡的基礎,該規則對於神經網絡的有導師學習具有極為重要的意義。
多層前饋神經網絡(BP網絡)
- 隱藏層與隱藏節點
- 前饋-----每一層的節點僅和下一層節點相連
BP學習算法本質就是梯度下降法
神經網絡的兩個過程:1.訓練過程 2.推斷過程
小結:數學背景:梯度下降法(使用誤差平方和構造誤差函數)
梯度下降法給出權值,通過反向傳播誤差逐層訓練,推斷時誤差往后走,構造完后給出權值,誤差信號通過公式計算梯度,得出梯度對權值進行迭代改變,知道權值不再變化或者次數足夠收斂,就結束整個訓練過程
在python深度學習中,可以使用keras進行簡單的神經網絡等設計
keras框架是簡單方便的,模塊可以作為數據或序列的運算圖等,keras中的各個設計環節都是單獨的一個模塊,所以需要根據自己的需求來設計
keras中文文檔
keras默認使用tensorflow,如果使用theano需要修改文件中的路徑內的json文件
keras的基本使用
- Sequential 模型構建
- 序貫模型是多個網絡層的線性堆疊
- 可以通過向Sequential模型傳遞一個layer的list來構造該模型
from keras.models import Sequential
from keras.layers import Dense,Activation
model = Sequential([
Dense(32,units=784),
Activation('relu'),
Dense(10),
Activation('softmax'),])
- 也可以通過.add()方法一個個的將layer加入模型中
model = Sequential()
model.add(Dense(32,input_shape=(784,))
)model.add(Activation('relu'))
- 指定輸入數據的shape
- input shape(元祖型數據)
- input dim
model = Sequential()
model.add(Dense(32,input_dim=784))
- input length
model = Sequentail()
model.add(Dense(32,input_shape=784))
- batch_size
評分標准
- 選手算出用戶在不同分組上的概率,現實中一個用戶只能在一個分組。理想狀態下如果能算出這個概率是1,其他是0的話,這個答案就是沒有任何損失的。一般來說,提交的答案中,某個用戶會有或大或小的概率屬於多個組別,這個時候就有概率上的損失,這個損失的高低代表答案的水平。我們優化函數或者說是評估指標就是下面的損失函數
logloss=−N1i=1∑Nj=1∑Myijlog(pij)
max(min(p,1−10−15),10−15)