99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀小白學(xué)數(shù)據(jù)分析--在clementine基于兩步聚類算法的次日留
小白學(xué)數(shù)據(jù)分析--在clementine基于兩步聚類算法的次日留
2016-06-16
收藏

小白學(xué)數(shù)據(jù)分析--在clementine基于兩步聚類算法的次日留

上次簡單的說了一下SPSS下使用兩步聚類分析的大致過程,今天簡單說說在Clementine下怎么進(jìn)行聚類分析,方法同樣是兩步聚類。
  之前說過聚類分析是無指導(dǎo)的,揭示的輸入字段集的模式,不是一種預(yù)測。在我們輸入的字段上進(jìn)行聚類分析找出組合最佳,能夠反映共同屬性的模式。兩步聚類有兩步,第一步是擴(kuò)展,處理成若干子聚類,第二步利用分層聚類方法進(jìn)行合并,形成大的聚類,實(shí)際上是剪枝合并的過程,此步不再進(jìn)行數(shù)據(jù)處理。分層聚類不需要確定聚類數(shù),這點(diǎn)在兩步聚類分析中得以避免,因?yàn)榉謱泳垲惤?jīng)常因?yàn)樘幚泶髷?shù)據(jù)量而失敗,但是第一步的數(shù)據(jù)預(yù)處理得以避免了這個問題的出現(xiàn)。
兩步聚類分析的數(shù)據(jù)要求
1)  角色設(shè)置必須為輸入,其他的目標(biāo)、兩者或者無都會在分析中被忽略;
2)  不處理缺失值;
3)  模型構(gòu)建時,忽略輸入字段包含空白的記錄。
  小白學(xué)數(shù)據(jù)分析--在clementine基于兩步聚類算法的次日留

下面就說一下在Clementine中操作過程和注意事項。
  首先我們打開Clementine[有關(guān)Clementine的基礎(chǔ)操作以后會慢慢整理],第一件事就是要引入我們要分析的文件,目前clementine支持的數(shù)據(jù)文件格式非常豐富,如下圖:

今天我們使用的文件是SPSS文件的格式,因此,在源選項卡,雙擊SPSS文件圖標(biāo),就會出現(xiàn)以下的畫面[或者左鍵點(diǎn)擊直接拖入數(shù)據(jù)流編輯區(qū)域]:

之后右鍵編輯,彈出窗口,在彈出窗口找到要分析的SPSS文件,引入:

點(diǎn)擊類型的標(biāo)簽,可以看到目前字段的類型、是否缺失、設(shè)置方向等等信息,如下圖:

點(diǎn)擊確定,完成了數(shù)據(jù)文件的引入操作,但是往往我們文件中的一些字段在進(jìn)行分析時是不需要的,有一些字段的屬性還需要調(diào)整,數(shù)據(jù)質(zhì)量還要檢驗(yàn),因此簡單說說這個過程。
數(shù)據(jù)質(zhì)量檢驗(yàn)
輸出選項卡,雙擊數(shù)據(jù)審核圖標(biāo),此時就會自動連接數(shù)據(jù)文件,數(shù)據(jù)審核幫助簡單分析和整理原數(shù)據(jù)文件的情況。

右鍵單擊數(shù)據(jù)審核圖標(biāo),選擇執(zhí)行,彈出窗口,可以看到字段類型、是否有空值、完成度等信息,彈出如下的窗口:

分析字段選擇
有一些字段在我們分析的時候是不需要的,比如我們這個文件中的playerid字段就沒什么實(shí)際利用意義,為此這一類的字段我們可以實(shí)現(xiàn)進(jìn)行排除,這樣后續(xù)的操作和分析會比較便利,此處我們做的是次日留存玩家的特征提取和分析,由于此處我們使用的文件已經(jīng)是經(jīng)過處理的,即已經(jīng)把非新登用戶那一部分?jǐn)?shù)據(jù)踢出了,否則此處我們就必須使用這個功能[次日留存玩家設(shè)置為NO,非新登玩家次日登陸的設(shè)置為YES],此處我們通過選擇排除playerid這個字段。
單擊字段選項,雙擊選擇過濾圖標(biāo),并使之與源文件連接:

右鍵編輯,在打開的窗口中,把playerid過濾掉,點(diǎn)擊箭頭即可,變成紅叉表明被過濾,在后續(xù)的分析中不會出現(xiàn)該字段

此時我們可以連接顯示一下過濾以后的數(shù)據(jù)內(nèi)容形式,在輸出選項,雙擊表圖標(biāo),連接一個個表,此時右鍵執(zhí)行,看到如下的效果,發(fā)現(xiàn)playerid木有了。

下面到了比較重要的地方,我們選擇建模,之后選擇細(xì)分標(biāo)簽里的兩步,雙擊,連接到文件上,效果如下:

右鍵兩步圖標(biāo),選擇編輯,彈出了兩步節(jié)點(diǎn)模型的選項

模型名稱
可以選擇自己設(shè)定,也可以系統(tǒng)生成。
使用分區(qū)數(shù)據(jù)
若定義了分區(qū)字段,那么這個選項保證了僅僅訓(xùn)練分區(qū)的數(shù)據(jù)用于構(gòu)建模型。此處我們沒有進(jìn)行數(shù)據(jù)的分區(qū)操作,不必勾選這個選項。
標(biāo)準(zhǔn)化數(shù)值字段
默認(rèn)情況下,兩步聚類會對所有數(shù)值輸入字段進(jìn)行標(biāo)準(zhǔn)化,使它們具有相同的尺度,即均值為 0 且方差為 1。要保留數(shù)值字段的原始尺度,可取消選中此選項。符號字段不受影響。
排除離群值
如果選中此選項,則那些與主要聚類似乎格格不入的記錄將自動排除在分析之外。這樣可以防止此類情況歪曲結(jié)果。
IBM官方手冊的解釋如下:
“離群值檢測在預(yù)聚類步驟進(jìn)行。選中此選項時,會將相對于其他子聚類具有較少記錄的
子聚類視為潛在離群值,且重新構(gòu)建不包括這些記錄的子聚類樹。子聚類被視為包含潛在離群值的下限大小由百分比選項控制。如果其中某些潛在離群值記錄與任何新子聚類配置足夠相似,則可將其添加到重新構(gòu)建的子聚類中。將其余無法合并的潛在離群值視為離群值添到“噪聲”聚類中并排除在分層聚類步驟之外。
使用經(jīng)過離群值處理的“兩步”模型對數(shù)據(jù)進(jìn)行評分時,會將與最近主要聚類的距離大于特定閾值距離(基于對數(shù)似然)的新觀測值視為離群值分配到“噪聲”聚類中,名稱為 -1?!?br /> 聚類標(biāo)簽
為生成的聚類成員關(guān)系字段指定格式
自動計算聚類數(shù)
“兩步聚類可以非常迅速地對大量聚類解決方案進(jìn)行分析并為訓(xùn)練數(shù)據(jù)選擇最佳聚類數(shù)。通過設(shè)置最大聚類數(shù)和最小聚類數(shù)指定要嘗試的聚類解決方案的范圍。“兩步聚類”通過一個兩階段過程確定最佳聚類數(shù)。在第一個階段,隨著所添加聚類的增多,可基于貝葉斯信息準(zhǔn)則 (BIC) 中的差異選擇模型中聚類數(shù)的上限。在第二個階段,為聚類數(shù)比最小 BIC 解決方案還少的所有模型找出聚類間最小距離的差異。距離的最大差異用于識別最終聚類模型。”
指定聚類數(shù)
如果確定聚類數(shù),也可以自己自行指定。
距離測量
同樣這里有兩種,歐式和對數(shù)似然,但是由于有分類變量只能選擇對數(shù)似然。
聚類準(zhǔn)則
準(zhǔn)則有BIC和AIC,確定自動聚類算法如何確定聚類數(shù)。
之后點(diǎn)擊執(zhí)行,但是此時我們發(fā)現(xiàn)了如下的錯誤:

原來我們對于過濾后的數(shù)據(jù),沒有進(jìn)行數(shù)據(jù)類型的重新指定,為此此處我們要重新指定數(shù)據(jù)的類型,字段選項卡,雙擊類型,之后再次連接兩步的圖標(biāo),此時就OK了。如下所示:

此后,執(zhí)行模型,返回聚類模型結(jié)果信息,如下所示:

雙擊打開該模型,顯示信息如下:

模型顯示主要有模型,查看器,匯總?cè)齻€重要的標(biāo)簽,此處先看匯總:

“兩步”聚類模型塊的“匯總”選項卡顯示找出的聚類數(shù)以及有關(guān)訓(xùn)練數(shù)據(jù)、估計過程和所使用的構(gòu)建設(shè)置的信息。
查看器主要是通過圖形化手段顯示聚類的信息,便于用戶更加直觀的分析(但是我覺得很蛋疼,沒發(fā)現(xiàn)直觀那里去)。

相比較而言我覺得比較有用的模型界面,這里能夠很直觀看到我們使用該算法構(gòu)建的模型的具體情況,這里我們分析的次日留存的玩家的特征。在確定的變量我們構(gòu)建了兩個類。

可以看到一類比較龐大,但是注意:得到的模型一定程度上取決于訓(xùn)練數(shù)據(jù)的順序。重排數(shù)據(jù)順序并重新構(gòu)建模型有可能得到不同的聚類模型。并且通過聚類分析得到的以此結(jié)果并不能足夠說明我們整個玩家的特征,其顯著性是需要檢驗(yàn)的,這受到諸如游戲活動,聚類分析樣本提取時間,等很多的因素影響,換句話要想具有普適性,還是需要迭代,不斷的綜合和分析整理才能拿出來玩家的特點(diǎn),切勿選取一批樣本數(shù)據(jù),得到的玩家特點(diǎn)就放之四海,利用起來,而這也是CRISP-DM所提出的早期的工作重中之重和加入評估階段的要義。所以還是多多進(jìn)行如此類的時間,有的放矢才能做好。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }