版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、R實訓(xùn)論文年級 14級 班級 04班 學(xué)號 20140404430 姓名 王增飛 提交日期 2017.5.12 歡迎下載偵測欺詐交易(王增飛 呂梁學(xué)院 呂梁 033000) 摘要 考慮到在經(jīng)濟和社會領(lǐng)域中經(jīng)常存在欺詐交易等非法活動,因此欺詐拉驗是數(shù)據(jù)挖粼技術(shù)的一個重要應(yīng)用領(lǐng)域。從數(shù)據(jù)分析的角度,欺詐行為通常和異常的觀測值相關(guān)聯(lián),因為這些欺詐行為是偏離常規(guī)的。在多個數(shù)據(jù)分析領(lǐng)域,這些偏離常規(guī)的行為經(jīng)常成為離群值.數(shù)據(jù)挖翻的結(jié)果有助于公司的事后檢查活動,能夠提供某種欺詐概率排序作為輸出結(jié)果,可以使公司以最佳方式來利用其事后檢查資源。關(guān)鍵詞 缺失值填補 決策精確度 回朔精確度 半監(jiān)督技術(shù) scams
2、 (Wang LvliangXueyuan Lvliang 033000) Abstract The fraud is an important area of application for data mining, given that there are often illegal activities such as fraudulent transactions in the economic and social sectors. From the point of view of data analysis, fraud is often associated with the
3、observed value of an exception, as these are deviations from the norm. In the field of multiple data analysis, the deviation from normal behavior often become outliers. Data dig results help the company post-mortem activity, can provide some kind of fraud probability sorting as output, can make the
4、company in the best way to use the post-mortem resources.Key Missing value fill Decision-making accuracy Back to new moon accuracyA semi-supervised technology引言 偵測欺詐交易的目的是找到“奇怪的”交易記錄報告,它可能指出某些銷售員涉嫌欺詐.這里用的數(shù)據(jù)是一個較短時期內(nèi)的銷售數(shù)據(jù),銷售員可按照ti己的策略和公司情況來自由設(shè)置梢售價格。我們的日的是根據(jù)公司過去發(fā)現(xiàn)的交易報告中的錯誤和欺詐企圖,幫助公司完成核實這些悄售報告真實性的工作。1 目
5、標(biāo)任務(wù) 根據(jù)公司過去發(fā)現(xiàn)的交易報告中的錯誤和欺詐企圖,幫助公司完成核實這些銷售報告真實性的工作。我們提供一份欺詐率排名的報告,這個欺詐率排名將允許公司把有限的檢驗資源分配給系統(tǒng)所提示的更“可疑”的那些報告。2 數(shù)據(jù)來源load(sales.Rdata)將從這個文件中把數(shù)據(jù)載入到一個名為sale的數(shù)據(jù)框library(DMwR)data(sales)使用本書添加包中的數(shù)據(jù)得到了名為sale的數(shù)據(jù)框,里面存的是下面將會用到的數(shù)據(jù)3 數(shù)據(jù)探索性分析3.1 探索數(shù)據(jù)集使用summary函數(shù),了解數(shù)據(jù)的統(tǒng)計特征 ID:說明銷售員ID的一個因子變量。Prod:說明銷售產(chǎn)品ID號的一個因子變量。Quant:
6、報告該產(chǎn)品銷售的數(shù)量。Val:報告銷售記錄的總價值。Insp:有3個可能值的因子變量ok表示公司檢查了該交易并認為該交易有效;fraud表示發(fā)現(xiàn)該交易為欺詐;unkn表示該交易未經(jīng)過公司審核。進一步使用nlevels函數(shù)發(fā)現(xiàn)數(shù)據(jù)中包含大量的產(chǎn)品和銷售人員的信息從數(shù)據(jù)的統(tǒng)計特征初步可以看出v431號雇員錄入的數(shù)據(jù)最多,p1125號產(chǎn)品賣出最多,可以看到產(chǎn)品銷售的數(shù)量和總價值的四分位數(shù)據(jù),公司已檢查承認有效的數(shù)據(jù)有14462,已發(fā)現(xiàn)欺詐的數(shù)據(jù)有1270,未經(jīng)過審查的有385414,說明大量數(shù)據(jù)還未經(jīng)過審核,需要接下來的數(shù)據(jù)分析來檢查其中的欺詐數(shù)據(jù)。3.1.3.使用Length函數(shù)計算總數(shù)據(jù)中有多少
7、缺失數(shù)據(jù)可以看到這樣的數(shù)據(jù)有888條,在40萬組數(shù)據(jù)中可以忽略不計。應(yīng)該注意當(dāng)數(shù)據(jù)量特別大時,改用summary函數(shù) 在統(tǒng)計過的銷售記錄中,根據(jù)以上的數(shù)據(jù)結(jié)果可以看出,交易有效的是3%,交易欺詐的是0.31%,未經(jīng)審核的是96%,說明欺詐比例比較小。每個交易人員的交易數(shù)量如圖3-1。圖 3-1每個產(chǎn)品的交易數(shù)量如圖3-2。 圖3-2 結(jié)合兩張圖可以看到:所有銷售人員的數(shù)據(jù)相當(dāng)不同,對于每個產(chǎn)品,波動性較大,所以,下面需要對不同的產(chǎn)品分別進行處理。如果兩個交易報告中的產(chǎn)品是相同的,而產(chǎn)品的標(biāo)準(zhǔn)價格差別太大,那么其中的一個交易報告將視為不正常,不過,用這兩個數(shù)量得出的結(jié)論可能不是理想的根據(jù)。實際上
8、,由于每個交易中銷售的產(chǎn)品數(shù)量不同,所以用單位產(chǎn)品的價格來進行上面的分析可能更正確??梢园堰@個單位產(chǎn)品價格作為新的一列加入到數(shù)據(jù)中。可以看出,當(dāng)分析一個較短的時期內(nèi)的交易時,產(chǎn)品的交易價格不會出現(xiàn)較大的變化。得到五個中最貴和最便宜的產(chǎn)品如圖3-3。圖 3-3下面類似進行分析,找出給公司帶來更多(少)資金的銷售人員可以看出給公司帶來大部分資金的是前100名銷售人員的資金收入,底部2000人的總收入?yún)s不足公司的2%,說明,該公司需要進行內(nèi)部改革。3.2.3如果我們對每個產(chǎn)品所銷售的數(shù)量進行類似分析,結(jié)果更加不平衡由上面的數(shù)據(jù)可知,這個數(shù)據(jù)對產(chǎn)品的生產(chǎn)十分有用,它并不意味著公司應(yīng)該停止生產(chǎn)銷售量少的
9、產(chǎn)品。為了發(fā)現(xiàn)交易異常,我們做出一個假設(shè),所有產(chǎn)品的單位價格都遵循正態(tài)分布。4數(shù)據(jù)清洗4.1 缺失值分析處理缺失值的方法有三種:1、剔除這些個案;2、用某些策略來填補缺失數(shù)據(jù);3、運用可以處理缺失值的工具(本文主要用前兩種方法) 有些產(chǎn)品只有極少的交易量,需要從這些交易的信息來確定交易中是否有異常,這會很困難,所以我們采用將這些物品和一些產(chǎn)品的交易一起來分析,從而避免這個問題。4.2 缺失值處理變量Quant和變量Val都有數(shù)據(jù)缺失交易,上面3.1.3提到因為這樣的數(shù)據(jù)有888條,在40萬組數(shù)據(jù)中可以忽略不計。但是,在實際問題中,如果將這888個案例全部剔除,會導(dǎo)致某些產(chǎn)品和銷售人員的大部分交
10、易值缺失,所以,全部剔除888個案例是有問題的,下面的代碼是驗證這一結(jié)論:先給出每個銷售人員和產(chǎn)品的交易數(shù)量以及存在問題的交易相關(guān)的銷售人員和產(chǎn)品,下面給出變量Quant和變量Val同時有缺失值的交易占很大比例的銷售人員: 結(jié)果表明:從銷售人員來看,同時在這兩個變量都有缺失的交易數(shù)很少,所以,可以直接剔除在兩個變量都有缺失的交易。下面給出變量Quant和變量Val同時有缺失值的交易占很大比例的產(chǎn)品: 從以上兩部分來看,剔除所有同時在數(shù)量和價格上有缺失值的交易是最好的選擇。 下面分析剩余的在數(shù)量或者價格變量上有缺失值的交易,首先計算每一種產(chǎn)品在數(shù)量上有缺失值的交易比: P4491產(chǎn)品的所有交易數(shù)
11、量是缺失的,由于我們沒有其單位價格,所以,沒有辦法得到進一步的信息,所以,我們無法用這些產(chǎn)品的交易信息做進一步分析。下面,我們從數(shù)據(jù)集中刪除該種產(chǎn)品的信息,由于我們在數(shù)據(jù)集中刪除了該種產(chǎn)品的信息,所以,我們要更新列Prod的水平,檢驗是否有銷售人員的所有交易數(shù)量為缺失值? 從結(jié)果可以看到:有幾個銷售人員沒有在報告中填寫交易的數(shù)量信息,但是,由于我們使用單位價格做的假設(shè),所以,只要我們有其他銷售人員報告的相同產(chǎn)品的交易,我們就可以用那些信息來填補這些缺失值,所以,我們不需要刪除這些交易。 下面分析剩余的數(shù)量或價格變量上有缺失值的交易,先計算每一種產(chǎn)品在數(shù)量上有缺失值開始: P2442和p2443
12、這兩個產(chǎn)品的交易數(shù)量有缺失,所以,我們無法可用這些值來進行下一步分析。 下面我們計算每一個產(chǎn)品的標(biāo)準(zhǔn)價格,來填補缺失值,因為每個產(chǎn)品有一個標(biāo)準(zhǔn)單價,我們用它們來計算兩個可能的缺失值。 當(dāng)有些產(chǎn)品只有極少的交易,用這些數(shù)據(jù)來分析是否有異常,是很困難的,下面我們把其他一些產(chǎn)品的交易加進來一起分析 上面使用函數(shù)獲得中位數(shù),第一個四分位數(shù)和第三個四分位數(shù)。對每個產(chǎn)品的所有交易量,計算這些統(tǒng)計值,從分析中剔除有欺詐的交易。行名稱在為其尋找最相似的產(chǎn)品,第一列是相似產(chǎn)品,下面得到相似產(chǎn)品的ID下面找相似產(chǎn)品的數(shù)量從上面結(jié)果可以看到:從其他交易中產(chǎn)品數(shù)得到我們所需要的產(chǎn)品信息,這對于我們分析哪些交易是不正常
13、交易是有用的。 實驗結(jié)果: 結(jié)果可以看出:決策精確度和回朔精確度很低,這個結(jié)果很有可能是錯誤的,下面我們所調(diào)用的函數(shù)通過應(yīng)用每一次迭代(ho.BPrule)的排序方法返回這些值作為統(tǒng)計量向量的屬性。得到下面兩張圖: 兩張圖都是對每次保留(hold-out)過程得到的曲線的垂直平均,為了達到80%的回朔精確度,下面用LOF方法: 由圖可以可以看出:對于低于25%-30%的檢驗限值,LOF方法要優(yōu)于BPrule方法,對于高的檢驗值,兩者差別不明顯。5數(shù)據(jù)建模5.1 實驗方法 我們使用的數(shù)據(jù)集的大小很合理。這種情況下,我們選擇保留方法來進行實驗是比較有意義的。這個方法把已有的數(shù)據(jù)集隨機地分成倆部分(
14、通常比例為70%和30%),其中的一部分用于獲取模型,而另一部分用來測試。如果有必要,這個過程可以重復(fù)多次,以確保獲得的結(jié)果更穩(wěn)健。我們數(shù)據(jù)集的容量可以確保我們獲得的結(jié)果在統(tǒng)計學(xué)上是可靠的。如果,我們選擇30%的數(shù)據(jù)作為驗證集,就相應(yīng)于120343個報告。 在這種方法下,困難就是不同類型報告之間分布的不均衡性,即在標(biāo)記個案上是不平衡的,正常的重抽樣策略可能會導(dǎo)致一個測試集的正常報告/.欺詐報告的不同分布。當(dāng)有這種不均衡的分布類型時,推薦使用分層抽樣方法。這種方法從具有不同類型的觀測值袋子里隨機抽樣,以確保所抽取的樣本遵守初始數(shù)據(jù)的分布。5.2 建模方法 數(shù)據(jù)集中有兩種類型的觀測值,有一個較小的
15、數(shù)據(jù)集,其中的數(shù)據(jù)沒有標(biāo)記,它有交易的特征描述和檢驗的結(jié)果。另外一個較大的數(shù)據(jù)集是沒有標(biāo)記的,它們沒有被檢驗,列Insp的值為unkn,在這種情況下,取決于用于建模的觀測值。我們采用的建模方法是無監(jiān)督技術(shù)。 對于未被檢驗的報告,Insp列沒有任何信息,所以它對分析沒有影響,對于這些觀測值,我們只有對交易的描述。這意味著這些銷售報告僅僅有描述它的自變量。 聚類分析是描述性數(shù)據(jù)挖局的一個例子,聚類方法試圖對一組觀測值形成多個聚類,一個聚類內(nèi)的個案相似,從而找到這些觀測值的“自然”組別。相似性概念通常要求由觀測值的變量所定義的空間給出一個距離定義。這個距離定義衡量一個觀測值和其他觀測值之間距離的函數(shù)
16、。距離靠近的個案通常認為屬于同一個自然組。 異常值檢測也可以看做是描述性的數(shù)據(jù)挖掘任務(wù)。有些異常值(也稱為離群值)檢測方法假定數(shù)據(jù)的預(yù)期分布,把背離這一分布的任何值標(biāo)記為異常值,另一個常見的異常值檢測策略是假定一個變量空間的距離度量,然后把距離其他觀測值“太遠”的觀測值標(biāo)記為異常觀測值。 應(yīng)用PRcurve()函數(shù)表示出給出數(shù)據(jù)的曲線圖,并用這類曲線來評價異常值排序模型 這部分內(nèi)容主要討論:當(dāng)給出交易報告的一個測試集時,每個模型將產(chǎn)生這些報告的排序,所以,下面將主要討論怎樣評價這個排序。 當(dāng)我們的目標(biāo)是預(yù)測一個小集合的事件時,決策精確度和回朔精確度是合適的評價指標(biāo)。給定檢驗限制k值,我們可以計
17、算排序的最頂端k個位置的決策精確度和回朔精確度。這個限定值k決定了根據(jù)模型哪些報告應(yīng)該被檢驗。從監(jiān)督分類的角度看,這相當(dāng)于把頂端的k個位置預(yù)測為frant類,其余的則為正常報告,決策精確度告訴我們頂端k個值的多大比例事實上是標(biāo)記為欺詐的報告?;厮肪_度的值給出這k個位置所包含的測試集的欺詐行為的比例。 通常決策精確度和回溯精確度之間有一個權(quán)衡。比如,如果所有測試集個案都預(yù)測為欺詐事件,那么很容易使決策金確度達到100%。然而,這樣的決策也將不可避免的導(dǎo)致非常低的回溯精確度。但是,我們當(dāng)前的應(yīng)用有一些特殊性。給定用于檢驗行為的資源的約束條件,我們真正想要的是最大限度的利用這些資源。這意味著,如果
18、我們用x小時檢查報告,并能夠在這x個小時捕捉到所有的欺詐行為,那么我們很高興。即使在這x小時,我們實際上也檢查了一些正常的報告,也就是說有較低的回溯精確度?;厮菥_度實際上是在此應(yīng)用中的關(guān)鍵問題。我們需要的是能夠用現(xiàn)有的資源達到100%的回溯精確度。 決策精確度/回朔精確度(PR)曲線是模型性能對這兩者的一種可視化表示,通過在不同的工作點得到上面兩個統(tǒng)計量的插值,從而得到該曲線。在我們的例子中,工作點對應(yīng)于應(yīng)用在模型所產(chǎn)生的離群值排序上的不同資源限制,對不同的限制水平進行迭代,得到不同的決策精確度和回朔精確度。6 數(shù)據(jù)分析與展示圖4-1 每個銷售人員的交易數(shù)量 圖4-2 每個產(chǎn)品的交易數(shù)量 結(jié)
19、合上述兩張圖可以看到:所有銷售人員的數(shù)據(jù)相當(dāng)不同,對于每個產(chǎn)品,波動性較大,所以,下面需要對不同的產(chǎn)品分別進行處理。如果兩個交易報告中的產(chǎn)品是相同的,而產(chǎn)品的標(biāo)準(zhǔn)價格差別太大,那么其中的一個交易報告將視為不正常,不過,用這兩個數(shù)量得出的結(jié)論可能不是理想的根據(jù)。實際上,由于每個交易中銷售的產(chǎn)品數(shù)量不同,所以用單位產(chǎn)品的價格來進行上面的分析可能更正確。可以把這個單位產(chǎn)品價格作為新的一列加入到數(shù)據(jù)中。圖4-3 最便宜和最昂貴產(chǎn)品的單位價格分布圖4-4 單位價格分布的某些特征圖4-5 平滑(右)和非平滑(左)的PR曲線圖4-6 提升圖(左圖)以及累積回溯精確度圖(右圖)圖4-7 BPrule 方法的P
20、R圖PR圖(左圖)和累積回溯精確度曲線(右圖)圖4-8 LOF方法和BPrule方法的PR圖(左圖)和累積回溯精確度曲線(右圖)圖4-9 ORh,LOF方法和BPrule方法的PR圖(左圖)和累積回溯精確度曲線(右圖)圖 4-10 用SMOTE方法產(chǎn)生少數(shù)類的個案圖4-11 簡單貝斯方法和ORh方法的PR圖(左圖)和累積回溯精確度曲線(右圖)圖4-12 兩個版本的簡單貝斯方法和ORh方法的PR圖(左圖)和累積回溯精確度曲線(右圖)圖4-13 簡單貝斯方法,ORh方法和AdaBoost,MI方法的PR圖(左圖)和累積回溯精確度曲線(右圖)圖4-14 自訓(xùn)練的簡單貝斯方法,標(biāo)準(zhǔn)簡單貝斯方法和ORh
21、方法的PR圖(左圖)和累積回溯精確度曲線(右圖)由圖可以可以看出:對于低于25%-30%的檢驗限值,LOF方法要優(yōu)于BPrule方法,對于高的檢驗值,兩者差別不明顯。圖4-15 自訓(xùn)練的AdaBoost,MI方法,ORh方法和標(biāo)準(zhǔn)的AdaBoost,MI方法的PR圖(左圖)和累積回溯精確度曲線(右圖)7 結(jié)論 我們所使用的數(shù)據(jù)的正確率未知,所以,用這些數(shù)據(jù)進行分析自然也存在誤差,所以,在現(xiàn)實問題中,應(yīng)該考慮到不要基于錯誤的數(shù)據(jù)來給公司提建議。8評價與建議在欺詐偵測問題所嘗試的所有模型中,累積回溯精確度曲線確認了自我訓(xùn)練的AdaBoost.Ml模型是最好的模型。特別是,在檢驗限值水平在15%20
22、%時,就偵測出的欺詐報告的比例而言,它明顯地好于其他的模型系統(tǒng)。就決策精確度而言,這個模型的分?jǐn)?shù)不是太吸引人,但前面我們提到,那些被模型放在較高排序位置的未標(biāo)記報告最終被確認認為欺詐也不是一件壞事。附錄程序1:數(shù)據(jù)探索summary(sales) nlevels(sales$ID) nlevels(sales$Prod)length(which(is.na(sales$Quant) & is.na(sales$Val) table(sales$Insp)/nrow(sales)*100 totS - table(sales$ID)totP - table(sales$Prod)barplot(
23、totS,main=Transactions per salespeople,names.arg=,xlab=Salespeople,ylab=Amount) /繪制每個銷售人員報告的數(shù)量barplot(totP,main=Transactions per product,names.arg=,xlab=Products,ylab=Amount)sales$Uprice - sales$Val/sales$Quant /將單位產(chǎn)品價格作為新的一列加入到數(shù)據(jù)框中summary(sales$Uprice) /獲取數(shù)據(jù)統(tǒng)計特性attach(sales) /復(fù)制sales數(shù)據(jù)框的每一列,為每一列建立一
24、個新對象upp - aggregate(Uprice,list(Prod),median,na.rm=T)topP - sapply(c(T,F),function(o) upporder(upp,2,decreasing=o)1:5,1)colnames(topP) - c(Expensive,Cheap)topP/用單位價格的中位數(shù)來表示已售產(chǎn)品的單位價格tops - salesProd %in% topP1,c(Prod,Uprice)tops$Prod - factor(tops$Prod)boxplot(Uprice Prod,data=tops,ylab=Uprice,log=y)
25、 /繪制一個箱圖 /用5個產(chǎn)品的單位價格箱圖來確認他們完全不同的價格分別vs - aggregate(Val,list(ID),sum,na.rm=T)scoresSs - sapply(c(T,F),function(o) vsorder(vs$x,decreasing=o)1:5,1)colnames(scoresSs) - c(Most,Least)scoresSs /進行分類找出給公司帶來更多(更少)資金的銷售人員sum(vsorder(vs$x,decreasing=T)1:100,2)/sum(Val,na.rm=T)*100sum(vsorder(vs$x,decreasing=
26、F)1:2000,2)/sum(Val,na.rm=T)*100qs - aggregate(Quant,list(Prod),sum,na.rm=T)scoresPs - sapply(c(T,F),function(o) qsorder(qs$x,decreasing=o)1:5,1)colnames(scoresPs) - c(Most,Least)scoresPssum(as.double(qsorder(qs$x,decreasing=T)1:100,2)sum(as.double(Quant),na.rm=T)*100sum(as.double(qsorder(qs$x,decre
27、asing=F)1:4000,2)sum(as.double(Quant),na.rm=T)*100 /as.double()轉(zhuǎn)換成double類型 /對每個產(chǎn)品所銷售的數(shù)量進行類似的分析out - tapply(Uprice,list(Prod=Prod),function(x) length(boxplot.stats(x)$out) /boxplot.stats(x)可以獲取某些用于繪制箱圖的統(tǒng)量outorder(out,decreasing=T)1:10 /計算含有較多離群值的產(chǎn)品sum(out) /求離群值sum(out)/nrow(sales)*100 /求離群值的比例Data p
28、roblemstotS - table(ID)totP - table(Prod) /每個銷售人員和產(chǎn)品的交易數(shù)量nas - saleswhich(is.na(Quant) & is.na(Val),c(ID,Prod) /與顯示存在問題的交易相關(guān)的銷售人員的產(chǎn)品propS - 100*table(nas$ID)/totSpropSorder(propS,decreasing=T)1:10 /計算Quant和Val同時有缺失值的交易占大比例的銷售人員propP - 100*table(nas$Prod)/totPpropPorder(propP,decreasing=T)1:10detach(
29、sales) /detach()禁止直接訪問數(shù)據(jù)框的列sales - sales-which(is.na(sales$Quant) & is.na(sales$Val),nnasQp - tapply(sales$Quant,list(sales$Prod), /計算每一種產(chǎn)品在數(shù)量上有缺失的交易比function(x) sum(is.na(x)propNAsQp - nnasQp/table(sales$Prod)propNAsQporder(propNAsQp,decreasing=T)1:10 sales - sales!sales$Prod %in% c(p2442,p2443), /
30、刪除交易報告nlevels(sales$Prod) /更新Prod的列sales$Prod - factor(sales$Prod)nlevels(sales$Prod)nnasQs - tapply(sales$Quant,list(sales$ID),function(x) sum(is.na(x) /判斷是否有銷售人員的所有交易為缺失值propNAsQs - nnasQs/table(sales$ID)propNAsQsorder(propNAsQs,decreasing=T)1:10nnasVp - tapply(sales$Val,list(sales$Prod), /對Val的缺失
31、值進行分析function(x) sum(is.na(x)propNAsVp - nnasVp/table(sales$Prod)propNAsVporder(propNAsVp,decreasing=T)1:10 /對銷售人員方面進行分析nnasVs - tapply(sales$Val,list(sales$ID),function(x) sum(is.na(x)propNAsVs - nnasVs/table(sales$ID)propNAsVsorder(propNAsVs,decreasing=T)1:10tPrice - tapply(salessales$Insp != frau
32、d,Uprice, /使用每個產(chǎn)品單位價格的中位數(shù)作為相應(yīng)的標(biāo)準(zhǔn)價格list(salessales$Insp != fraud,Prod),median,na.rm=T)noQuant - which(is.na(sales$Quant) /填補剩余的缺失值salesnoQuant,Quant - ceiling(salesnoQuant,Val /tPricesalesnoQuant,Prod)noVal - which(is.na(sales$Val)salesnoVal,Val - salesnoVal,Quant *tPricesalesnoVal,Prodsales$Uprice -
33、 sales$Val/sales$Quant /重新計算Uprice列哦值來填充先前未知的單位價格save(sales,file=salesClean.Rdata) /保存到數(shù)據(jù)集attach(sales)notF - which(Insp != fraud)ms - tapply(UpricenotF,list(Prod=ProdnotF),function(x) bp - boxplot.stats(x)$stats / boxplot.stats()獲取中位數(shù),第一個四分位數(shù)和第三個四分位c(median=bp3,iqr=bp4-bp2)ms - matrix(unlist(ms),le
34、ngth(ms),2,byrow=T,dimnames=list(names(ms),c(median,iqr)head(ms) /得到矩陣par(mfrow=c(1,2) /根據(jù)中位數(shù)和IQR繪制圖像plot(ms,1,ms,2,xlab=Median,ylab=IQR,main=)plot(ms,1,ms,2,xlab=Median,ylab=IQR,main=,col=grey,log=xy) /log=xy用來設(shè)置圖像的兩個數(shù)軸的標(biāo)度為對數(shù)標(biāo)度smalls - which(table(Prod) 20)points(log(mssmalls,1),log(mssmalls,2),pch
35、=+)dms - scale(ms) /用對象ms來保存前面獲得的每個產(chǎn)品的單位價格的中位數(shù)和IQRsmalls - which(table(Prod) 20)prods - tapply(sales$Uprice,sales$Prod,list)similar - matrix(NA,length(smalls),7,dimnames=list(names(smalls),c(Simil,ks.stat,ks.p,medP,iqrP,medS,iqrS)for(i in seq(along=smalls) d - scale(dms,dmssmallsi,FALSE)d - sqrt(dro
36、p(d2 %*% rep(1,ncol(d)stat - ks.test(prodssmallsi,prodsorder(d)2)similari, = 0.9,) /檢查單位產(chǎn)品價格分布有相似性的產(chǎn)品數(shù)量save(similar,file=similarProducts.Rdata) /保存similar對象程序2:評價準(zhǔn)則library(ROCR) /添加包ROCRdata(ROCR.simple) pred - prediction( ROCR.simple$predictions, ROCR.simple$labels ) /使用預(yù)測函數(shù)perf - performance(pred,
37、prec,rec)plot(perf) PRcurve - function(preds,trues,.) require(ROCR,quietly=T)pd - prediction(preds,trues)pf - performance(pd,prec,rec)pfy.values - lapply(pfy.values,function(x) rev(cummax(rev(x) /cummax()和rev()來計算差值的預(yù)測精確度 plot(pf,.)PRcurve(ROCR.simple$predictions, ROCR.simple$labels ) / PRcurve()展示示
38、例數(shù)據(jù)pred - prediction( ROCR.simple$predictions, ROCR.simple$labels ) perf - performance(pred,lift,rpp)plot(perf,main=Lift Chart) /用ROCR中的函數(shù)繪制提升圖CRchart - function(preds,trues,.) require(ROCR,quietly=T) /運用ROCRzhong中的函數(shù)pd - prediction(preds,trues)pf - performance(pd,rec,rpp)plot(pf,.) /繪制積累回溯精確圖 CRcha
39、rt(ROCR.simple$predictions, ROCR.simple$labels, /添加一個CRchart()包main=Cumulative Recall Chart)avgNDTP - function(toInsp,train,stats) /計算NDTP的平均值if (missing(train) & missing(stats) stop(Provide either the training data or the product stats)if (missing(stats) notF - which(train$Insp != fraud)stats - tap
40、ply(train$UpricenotF,list(Prod=train$ProdnotF),function(x) bp - boxplot.stats(x)$statsc(median=bp3,iqr=bp4-bp2)stats - matrix(unlist(stats),length(stats),2,byrow=T,dimnames=list(names(stats),c(median,iqr)statswhich(stats,iqr=0),iqr - statswhich(stats,iqr=0),medianmdtp - mean(abs(toInsp$Uprice-statst
41、oInsp$Prod,median) /statstoInsp$Prod,iqr)return(mdtp)程序3:實驗方法evalOutlierRanking - function(testSet,rankOrder,Threshold,statsProds) ordTS - testSetrankOrder,N - nrow(testSet)nF - if (Threshold 1) eger(Threshold*N) else Threshold /計算決策精確度cm - table(c(rep(fraud,nF),rep(ok,N-nF),ordTS$Insp)prec -
42、cmfraud,fraud/sum(cmfraud,) /計算回溯精確度rec - cmfraud,fraud/sum(cm,fraud)AVGndtp - avgNDTP(ordTSnF,stats=statsProds) /計算NDTPreturn(c(Precision=prec,Recall=rec,avgNDTP=AVGndtp)# The modified box plot ruleBPrule - function(train,test) notF - which(train$Insp != fraud)ms - tapply(train$UpricenotF,list(Prod
43、=train$ProdnotF), /計算四分位距function(x) bp - boxplot.stats(x)$statsc(median=bp3,iqr=bp4-bp2)ms - matrix(unlist(ms),length(ms),2,byrow=T, /計算中位數(shù) dimnames=list(names(ms),c(median,iqr)mswhich(ms,iqr=0),iqr - mswhich(ms,iqr=0),medianORscore - abs(test$Uprice-mstest$Prod,median) /mstest$Prod,iqrreturn(list(
44、rankOrder=order(ORscore,decreasing=T), /返回由離群值分?jǐn)?shù)和測試集觀察值組成的列表rankScore=ORscore)notF - which(sales$Insp != fraud) /計算每一種產(chǎn)品的中位數(shù)和IQR值globalStats - tapply(sales$UpricenotF,list(Prod=sales$ProdnotF),function(x) bp - boxplot.stats(x)$statsc(median=bp3,iqr=bp4-bp2)globalStats - matrix(unlist(globalStats),le
45、ngth(globalStats),2,byrow=T,dimnames=list(names(globalStats),c(median,iqr)globalStatswhich(globalStats,iqr=0),iqr - globalStatswhich(globalStats,iqr=0),medianho.BPrule - function(form, train, test, .) /在holdout()函數(shù)中進行,res - BPrule(train,test)structure(evalOutlierRanking(test,res$rankOrder,.), /struc
46、ture()用來建立一個對象并制定該對象的屬性值itInfo=list(preds=res$rankScore, /存儲信息使返回值帶有itsInfo的屬性trues=ifelse(test$Insp=fraud,1,0)bp.res - holdOut(learner(ho.BPrule,pars=list(Threshold=0.1statsProds=globalStats),dataset(Insp .,sales),hldSettings(3,0.3,1234,T), /設(shè)置函數(shù)hldsetting() /第四個參數(shù)為T時表示使用分層隨機抽樣itsInfo=TRUE)summary(bp.res) /總結(jié)bp.res的實驗結(jié)果par(mfrow=c(1,2) /把圖窗口分成兩個info - attr(bp.res,itsInfo) /attr()提取每一迭代中ho.BPrule()返回的包預(yù)測值和真實信息的列表PTs.bp - aperm(array(unlist(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (3篇)2024大學(xué)輔導(dǎo)員個人工作總結(jié)
- 教師政治思想及職業(yè)道德方面的考核報告
- 2024年淮南聯(lián)合大學(xué)高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 烏魯木齊市八年級上學(xué)期期末地理試題及答案
- 二零二五年旅游開發(fā)項目合同2篇
- 2024年陜西省婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年河南藝術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024年阜陽市第三人民醫(yī)院阜陽市中心醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年長春市婦產(chǎn)科醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年江西工商職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 健康食品開發(fā)及生產(chǎn)協(xié)議
- 數(shù)字孿生產(chǎn)業(yè)發(fā)展及軌道交通領(lǐng)域的應(yīng)用研究
- 2024年中學(xué)總務(wù)處工作總結(jié)
- 手術(shù)室各級人員培訓(xùn)
- 教育部中國特色學(xué)徒制課題:基于中國特色學(xué)徒制的新形態(tài)教材建設(shè)與應(yīng)用研究
- 2025年護理質(zhì)量與安全管理工作計劃
- (T8聯(lián)考)2025屆高三部分重點中學(xué)12月第一次聯(lián)考評物理試卷(含答案詳解)
- 工程施工揚塵防治教育培訓(xùn)
- 紅薯采購合同模板
- 2023年河南省公務(wù)員錄用考試《行測》真題及答案解析
- 山西省太原市重點中學(xué)2025屆物理高一第一學(xué)期期末統(tǒng)考試題含解析
評論
0/150
提交評論