版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章SVM與XGBoost本章內容10.1SVM10.2XGBoost10.3課后習題10.1SVM10.1.1SVM的基本概念SVM名為支持向量機算法。它的工作原理很簡單,假設有一個二維特征數據集,數據分為兩類,一類是紅色,一類是藍色,將這個數據集映射在二維坐標系上,如左下圖所示。如何將這兩類進行區分呢?可以找到一條線,將數據集一分為二,左上角都是紅色點,右下角都是藍色點,再有其他數據進行預測時,就看這個點是落在分割線的什么位置,如果在左上,就屬于紅色點,在右下就屬于藍色點。10.1.1SVM的基本概念——最優超平面中間的這條分割線被稱為最優超平面,為什么叫超平面呢?是因為當數據集中的維度大于2時,用于分割數據集的就不是一條線了,而是一個高維平面。如右圖所示,中間的分割平面就是3維數據的最優超平面。可見圖左圖中的分割線是最優超平面的特例。為了便于理解,我們仍然以左圖所示的二維數據為例,介紹SVM的基本概念。10.1.1SVM的基本概念——最優超平面與支持向量何為“最優”呢?仔細觀察并思考,不難想象左圖中能將兩種點進行分割的線段很多,只要在紅藍兩堆節點之間的線都可以將兩類數據進行區分。可是哪個分割線才是最優呢?在保證超平面方向不變且不會出現錯分樣本的情況下移動超平面,會在原來的超平面兩側找到兩個極限位置,通過這些極限位置畫兩條平行虛線。虛線的位置由超平面的方向和距離原超平面最近的幾個樣本的位置決定,兩條虛線之間的垂直距離就是這個超平面對應的分類間隔,不同的超平面的分類間隔通常是不同的,那具有“最大間隔”的兩條平行虛線正中間的分界線就是SVM要尋找的最優超平面。兩條虛線所穿過的樣本點,就是SVM中的支持樣本點,稱為“支持向量”。10.1.2SVM的損失函數現有訓練樣本集(xij,yij),其中i表示樣本編號,j表示特征維度,xi表示樣本i的特征向量,yi是標簽(取值范圍只有-1和1兩種情況,表示兩種類別)。如圖左圖所示為二維特征特例,即將二維特征映射到平面坐標系里,其中一維特征作為橫坐標,另一維作為縱坐標。則最優超平面可以表示為:xi1=axi2+b。即:axi2-xi1+b=0。設w=(a,-1),xi=(xi2,xi1),則超平面可以表達為wxi+b=0,其中x是各個維度的特征向量。在有了最優超平面之后,如果有一個待遇測點xt,將其代入最優超平面公式,w·xt+b=t,可以根據t的符號判斷xt屬于哪一類。wxi+b=010.1.2SVM的損失函數在最優超平面上任取兩點xa和xb,則有
wxa+b=0
wxb+b=0二者相減則可以得到
w(xa-xb)=0前面提到x是各個維度的特征向量,點積為0,說明w和xa-xb是垂直的。因為xa和xb是在最優超平面上的點,所以二者相減之后的直線仍然是沿著最優超平面的,所以w應該是和最優超平面垂直的。xaxb10.1.2SVM的損失函數任意一個藍色的點xp代入最優超平面表達式有:
w·xp+b
=
p同樣,任意一個紅色點xa代入最優超平面表達式有:
w·xr+b
=
r我們可以知道xp和xr是最優超平面右下和左上的點,所以p和r一定不是同一符號。(前文介紹過:如果有一個待遇測點xt,將其代入最優超平面公式,w·xt+b=t,可以根據t的符號判斷xt屬于哪一類)p和r的符號怎么確定呢?我們知道xp點位于最優超平面的下方,是w·x+b=0向右下平移,也就是在截距b上減去一個正數得到的,即w·xp+b-k=0(k>0),因此有w·xp+b=k(k>0),同理對于xr點,w·xr+b+k=0(k>0),因此有w·xp+b=-k(k>0)。所以我們知道當w·xt+b=t且t大于0時,xt屬于最優超平面右下方的藍色類型,如t小于0時,xt屬于最優超平面左上方的紅色類型。xpxr10.1.2SVM的損失函數
可是,我們在各種材料中看到的SVM判斷依據是
如xt位于最優超平面之上,則有w·xr+b>1;
如xt位于最優超平面之下,則有w·xr+b<-1
符號正好與前頁結論相反,且比較標準是1和-1,這是為什么呢?仍假設有某個藍色點xp,有w·xp+b-k=0(k>0),則w·xp+b=k,此時兩邊同時除以-k,則有w·xp/(-k)+b/(-k)=k/(-k),此時規定w/(-k)為新的w,b/(-k)為新的-b,則有w·xp+b=-1,這樣符號就轉過來了。k是多少呢?K是間距的一半,也就是支持向量到最優超平面的距離。xpxr2d10.1.2SVM的損失函數xpxr2d換句話說,我們規定:
(1)對于最優超平面上方的支持向量xr,則有w·xr+b=1,如有點xt使得w·xt+b≥1則xt屬于最優超平面上面的類別;
(2)對于最優超平面下方的支持向量xp,則有w·xp+b=-1,如有點xt使得w·xt+b≤-1則xt屬于最優超平面下面的類別;對于最優超平面上下的支持向量xr、xp有w·(xr-xp)=2·(xr-xp)w線性代數中一個向量除以自身的模長就可以得到向量方向上的單位向量,因此
就是w方向上的單位向量,(xr-xp)得到r點和p點之間的向量,因此.(xr-xp)得到的就是r點和p點之間的向量在w方向上的投影。10.1.2SVM的損失函數不難看出,··(xr-xp)也就是兩倍的邊距。前面介紹過,SVM的中心目標就是找到邊距最大的超平面,即最優超平面,所以我們的目標就是找到
·(xr-xp)的最大值,又因為w·(xr-xp)=2所以
·(xr-xp)=因此SVM的中心目標就是找到
的最大值,也就是找到的最小值。又因為||w||本身是一個開方數,所以將求的
最小值修改為求
的最小值因此
就是SVM的損失函數。xpxr2dw10.1.3拉格朗日對偶函數詳見以下附件推導過程10.1.4核函數很多數據不是線性可分的,如下左圖所示,這些數據呈現環形,無法找到一個最優超平面將它們分成兩部分。當數據無法線性可分,SVM對將原本在低維空間線性不可分的數據映射到高維空間,即將下左圖經過一系列轉化變成下右圖,在高維空間中使其成為線性可分數據,最后尋找最大間隔分類超平面對數據進行劃分。10.1.4核函數由于從原低維空間到新高維空間的映射計算會使得維度發生爆炸似地增長,這給映射過程中的計算帶來了很大地困難,因此SVM引入了核函數,因為雖然也是將特征進行從低維到高維的轉換,但核函數事先在低維上進行計算,將實質上的分類效果表現在了高維上,避免了直接在高維空間中的復雜計算。核函數有二十余種,但常用的只有四種:10.1.4核函數一般情況,線性核函數在線性可分數據中表現非常好,但在非線性可分數據中表現糟糕;高斯徑向基核函數(簡稱RBF)在非線性可分核函數中表現非常好,在線性可分數據中表現也不錯。因此實戰時先選線性核函數,判斷數據集是否線性可分,如果非線性可分就使用高斯徑向基核函數。10.1.5軟間隔如左圖所示數據集,總體看是線性可分的,但是有極個別的藍色點位于紅色點內,也有極個別紅色點位于藍色點內。但為了這些許的異常點使用核函數升維,從而降低SVM整體運算速度又得不償失。10.1.5軟間隔為了處理這種數據,SVM引入了軟件隔概念。原損失函數最優解問題變為:
其中i是各個異常點(“亂入”另一類的點)的編號,ε是異常點到最優超平面的距離,這就相當于在原有損失函數基礎之上,增加考慮了異常點的“懲罰項”,C是懲罰項的重要程度,是一個超參數,其中默認值是1,C越大,懲罰力度越大,即異常點被考慮得越多,實際分錯的點越少,模型越復雜;C越小,懲罰力度越小,異常點被考慮得越少,模型越簡單。10.1.6SVM代碼實現#第一步:導入數據#導入numpy和pandas數據包importnumpyasnpimportpandasaspd#從boston_lishi.csv文件中導入原始數據df=pd.read_csv(r'E:\ruxian_lishi.csv',index_col='Patien')#X為原始數據中不包括target列部分,是由歷史數據中“非結果列”組成的數據X=df.loc[:,(df.columns!='target')]#Y為原始數據中target列部分,是由歷史數據中“結果列”組成的數據Y=df.loc[:,df.columns=='target']10.1.6SVM代碼實現#第二步:數據預處理#缺失值處理df.dropna()#數據標準化fromsklearn.preprocessingimportMinMaxScalerscaler=MinMaxScaler()X=scaler.fit_transform(X)#其他數據預處理將在第6次課介紹10.1.6SVM代碼實現#第三步,建模#將歷史數據按照8:2的比例分隨機分為訓練集和測試集fromsklearn.model_selectionimporttrain_test_splitXtrain,Xtest,Ytrain,Ytest=train_test_split(X,Y,test_size=0.2,random_state=420)#導入SVM工具包fromsklearn.svmimportSVC#創建模型clf=SVC()#訓練模型clf.fit(Xtrain,Ytrain)10.1.6SVM代碼實現#第四步,用測試集檢驗模型預測效果#使用predict方法,根據Xtest預測測試集的結果result=clf.predict(Xtest)#將測試集真實結果和預測結果進行對比df=pd.DataFrame({'真實結果':Ytest.loc[:,'target'],'預測結果':pd.Series(result,index=Ytest.index)})print(df)10.1.6SVM代碼實現#第四步,用測試集檢驗模型預測效果#可以使用一些指標來評價模型表現,例如使用R2值評價多元線性回歸score=clf.score(Xtest,Ytest)print(score)#其他指標(混淆矩陣、recall、AUC值等)與邏輯回歸中的實現方法完全一致,不再贅述10.1.7SVM主要參數kernel,內容為字符串,意為SVM使用何種核函數,例如rbf是指高斯徑向基核函數;gamma,內容是浮點數,意為高斯徑向基核函數公式中的γ;C,內容是浮點數,意為軟件隔“懲罰項”的重要程度。10.2XGBoost10.2.1XGBoost的基本思路XGBoost就是典型的Boosting類算法,它的漢語名稱為“極端梯度提升”,Boosting顧名思義就是“步步提升”,第二個基分類器針對第一個基分類器的結果進行改進,第三個基分類器針對第二個基分類器的結果進行改進,以此類推,預測結果越來越好。XGBoost,是在傳統GBDT(梯度提升算法)基礎之上進行了改進,通過正則化避免過擬合、可以處理稀疏矩陣、并且通過并行優化提升了模型的性能。一句話——好!!^_^XGBoost可以通過sklearn導入,也可以通過xgboost庫單獨導入(xgboost庫獨立與sklearn,由華裔學者陳天奇團隊開發,使用是在anaconda的prompt中通過pipinstallxgboost進行安裝)10.2.1XGBoost的基本思路——構建過程詳見以下附件10.2.2XGBoost實現回歸#XGBoost回歸的實現與其他回歸模型基本一樣,只是導入工具包和建模不同fromxgboostimportXGBRegressorasXGBRreg=XGBR()10.2.3XGBoost實現分類#XGBoost分類的實現與其他分類模型基本一樣,只是導入工具包和建模不同fromxgboostimportXGBClassifierasXGBCclf=XGBC()10.2.4XGBoost的重要參數n_estimators:內容為整數,XGBoost要建立的樹數。max_depth:內容為整數,XGBoost中樹的最大深度----------------------------------------------------------------------------------------------------eta:內容為0-1的浮點數,附件第1頁公式(1)中的ηgamma:內容是0至+∞的浮點數,附件第2頁公式(2)中的γlambda:內容是0至+∞的浮點數,附件第2頁公式(2)中的λalpha:內容是0至+∞的浮點數,附件第2頁公式(2)中如果使用L1正則化時設置該值,默認值是0,即不使用L1正則化。10.3
課后習題10.3課后習題1.重新推導SVM損失函數。2.使用學習曲線+交叉驗證,對于SVM的C參數進行調參3.使用學習曲線+交叉驗證+網格搜索方法,對于XGBoost中的n_estimators、max_depth、eta參數進行聯合調參。第11章
聚類與關聯本章主要內容11.1無監督學習11.2聚類算法11.3模型的保存和導入11.4關聯算法11.5課后習題11.1
無監督學習有監督學習與無監督學習前面介紹了邏輯回歸、決策樹、隨機森林、SVM和XGBoost等分類算法。聚類算法和分類算法一樣,都是把對象集合分成不同的類,但分類算法面向的是有監督學習,而聚類面向的是無監督學習。什么是有監督學習呢?就在訓練模型過程中,歷史數據中的標簽是有結果的,如乳腺癌歷史數據中,樣本是否是惡性的是明確的,換言之,模型在訓練的時候,既需要歷史數據中的數據部分X,也需要歷史數據中的結論部分y。而無監督學習中,歷史數據中沒有明確的標簽,模型是根據某些指標自行去挖掘樣本的規律,完成分類。聚類就是典型的無監督學習,其目的是將數據劃分成有意義或有用的組(聚類中的“類”一般被稱為“簇”)。例如很多企業會對客戶進行分類,但之前沒有成型的歷史數據,無法使用分類算法進行監督學習,那就只好使用聚類。11.2
聚類算法10.2.1K-MeansK-Means是最常用的聚類算法之一,它的計算依據是節點之間的距離。首先將樣本按照各個特征值映射為某個空間的點,例如樣本有兩個特征值,就可以把樣本映射到二維坐標上的點;如果樣本有三個特征,就可以把樣本映射到三維空間上的點,以此類推。10.2.1K-Means假設要將所有樣本聚成K簇,則按照如下步驟進行:步驟一:在所有樣本中隨機選出K個點,作為簇心(又稱為“質心”);步驟二:將其他每個樣本點分配到離他們最近簇心點的簇,生成了K個簇;步驟三:在每個簇內,計算所有被分到這個簇樣本點的各特征平均值作為新的簇心;步驟四:重復步驟二、步驟三,直到達到某個中止條件(如達到迭代次數,或簇心不再變化,或簇心變化帶來的節點與簇心之間的距離變化量小于某個閾值等)。10.2.1K-Means其中x表示簇中的某個樣本點的特征向量,i表示特征列號,n表示每個樣本點中的特征數目,μ為當前簇心的特征向量。聚類時所有樣本點到質心的距離之和越小,我們就認為這個簇中的樣本越相似,簇內差異就越小,分簇效果越好。10.2.1K-Means#第一步:導入數據#導入numpy和pandas數據包importnumpyasnpimportpandasaspd#從boston_lishi.csv文件中導入原始數據df=pd.read_csv(r'E:\ruxian_julei.csv',index_col='Patien')10.2.1K-Means#第二步:數據預處理#缺失值處理df.dropna()#數據標準化fromsklearn.preprocessingimportMinMaxScalerscaler=MinMaxScaler()df=scaler.fit_transform(df)#其他數據預處理將在第6次課介紹10.2.1K-Means#導入Kmeans包fromsklearn.clusterimportKMeans#聚3類,隨機狀態(隨機選取初始簇心)為0,迭代300次cluster=KMeans(n_clusters=3,max_iter=300,random_state=0)clu=cluster.fit_predict(df)print(pd.Series(clu))左列是樣本編號右列是類別號10.2.1K-Means可以看到,輸出結果就是每一個樣本聚類之后所屬的類別。再次強調,雖然使用的是乳腺癌數據,但與結果惡性與否沒有關系,只是單純的將樣本聚類成3簇。上例中聚類為3簇,具體的簇數是如何確定的呢?方法一:業務指定,這是最常見的,例如某家公司要將客戶分成3類并發放禮品,這就需要指定簇數是3。方法二:根據指標選擇合理的簇數(例如使用學習曲線方法)。但因為訓練模型用的歷史數據中沒有標簽列,所以就不會有準確率等指標。那如何判斷一個分簇的好壞呢?10.2.1K-Means——聚類的衡量指標:簇內平方和(1)簇內平方和,如下公式所示其中,m為一個簇中樣本的個數,j是每個樣本的編號。這個公式被稱為簇內平方和(clusterSumofSquare),又叫做Inertia。而將一個數據集中的所有簇的簇內平方和相加,就得到了整體平方和(TotalClusterSumofSquare),又叫做totalinertia。TotalInertia越小,代表著每個簇內樣本越相似,聚類的效果就越好。可以使用kmeans的inertia_屬性查看聚類后的簇內平方和。雖然目標是整體平方和越小越好,但這是指對某一個聚類過程而言的,但對于簇數的選擇沒有太大幫助。假設有n個節點,如果將它聚成n簇,那整體平方和就是0,從整體平方和指標來看效果最好,但是沒有實際意義。10.2.1K-Means——聚類的衡量指標:輪廓系數(2)輪廓系數:輪廓系數是對每個樣本來定義的,設樣本與其自身所在的簇中的其他樣本的相似(相異)度a,等于樣本與同一簇中所有其他點之間的平均距離;設樣本與其他簇中的樣本的相似(相異)度b,等于樣本與下一個最近的簇中的所有點之間的平均距離,根據聚類的要求“簇內差異小,簇外差異大”,我們希望b永遠大于a,并且大得越多越好。單個樣本的輪廓系數如下公式對于一個樣本點而言,當它的輪廓系數接近1是說明它與自己所處的簇其他樣本很相似,與其他簇樣本不相似,這是我們希望的結果;但當一個樣本的輪廓系數接近-1時,說明它與自己所處簇的其他樣本不相似,與其他簇樣本相似,這是聚類很糟糕的效果,即它應該屬于其他簇;當輪廓系數為0時,說明它屬于哪個簇都可以(從這個樣本角度看,自己所處的簇和其他的簇應該是一個簇)將所有樣本輪廓系數匯總,就得到了總輪廓系數和平均輪廓系數,我們當然希望這個數越高越好。10.2.1K-Means——聚類的衡量指標:輪廓系數實現#引入輪廓系數計算工具包fromsklearn.metricsimportsilhouette_score#計算整體平均輪廓系數fromsklearn.metricsimportsilhouette_samples#計算每個樣本的輪廓系數print("數據集聚類后平均輪廓系數為:")print(silhouette_score(df,clu))print("數據集聚類后每個樣本輪廓系數為:")print(silhouette_samples(df,clu))10.2.1K-Means——聚類的衡量指標:卡林斯基-哈拉巴斯指數(3)卡林斯基-哈拉巴斯指數(Calinski_harabaszIndex)輪廓系數的最大缺點是計算起來比較麻煩(因為需要每個樣本計算一遍),因此人們又想出了使用矩陣的方式進行計算。卡林斯基-哈拉巴斯指數如下所示。其中N為數據集中的樣本量,k為簇的個數,Bk是組間離散矩陣,即不同簇之間的協方差矩陣,Wk是簇內離散矩陣,即一個簇內數據的協方差矩陣,而tr表示矩陣的跡。(一個n×n矩陣A的主對角線上各個元素的總和被稱為矩陣A的跡,記為Tr(A))。數據之間的離散程度越高,協方差矩陣的跡就會越大。組內離散程度低,協方差的跡就會越小,Tr(Wk)也就越小,同時,組間離散程度大,協方差的的跡也會越大,Tr(Bk)就越大,這正是我們希望的,因此calinski_harabasz指數越高越好。
10.2.1K-Means——聚類的衡量指標:卡林斯基-哈拉巴斯指數#引入calinski_harabaz指數工具包fromsklearn.metricsimportcalinski_harabasz_score#計算calinski_harabaz指數print("卡林斯基-哈拉巴斯指數為:")print(calinski_harabasz_score(df,clu))10.2.1K-Means——K-Means重要參數n_clusters:簇數max_iter:計算迭代次數random_state:隨機找質心的種子10.1.2DBSCAN在弄清楚DBSCAN聚類原理之前,先要搞清楚一些重要概念:(1)核心點:若某個點的密度達到算法設定的閾值(min_samples)則其為核心點。(2)ε鄰域的距離閾值:可以理解為一個區域的半徑ε(3)直接密度可達:若p點在q點的鄰域內,且q是核心點,則稱p和q直接密度可達。(4)密度可達:假設有一系列點:a0、a1、…、ak,對任意ai與ai-1是直接密度可達的,則稱a0與ak密度可達,這實際上是直接密度可達的“傳播”。(5)密度相連:若有某核心點a0,它與點am和點an都是密度可達的,則稱點am和點an是密度相連的。(6)邊界點:屬于某一個類的非核心點,邊界點不能發展“下線”了。(7)噪聲點:不屬于任何一個類簇的點,從任何一個核心點出發都是密度不可達的。10.1.2DBSCAN有了以上概念,DBSCAN的聚類思想就很清楚:由密度可達關系導出的最大密度相連的樣本集合,就是聚成的一個簇。假設一個數據集有兩個特征列,將它們映射到一個二維空間,如下圖所示。如果說K-means是在找到簇心之后,其他樣本點向簇心靠攏的話,那么DBSCAN則是樣本主動去找同伴10.1.2DBSCAN從A點開始,以A點為圓心畫一個圓,規定這個圓的半徑(ε)以及圓內最少包含的樣本點數(min_samples),如果在圓內有足夠多的樣本點,那么A點就是一個核心點,以A為圓心畫的圓內其他樣本點就是A點的直接密度可達點。從A點的直接密度可達點為圓心,重復上面步驟,繼續尋找直接密度可達點(也就是與A密度可達的點),直到再沒有辦法找到新的A點密度可達點(如左圖中,B和C就沒有辦法再找到直接密度可達點,也就沒有辦法再找A密度可達點,但B和C與A是密度相連的),這時將A點、A所有直接密度可達點、A密度可達點及所有密度相連的點共同組成了一個簇,但N點就不屬于這個簇。10.1.2DBSCAN比起K-means,DBSCAN有以下特點:(1)DBSCAN可以處理非凸數據集聚類問題,所謂凸數據集如下圖所示(以二維為例),這種圖形K-means處理起來比較困難,聚類的結果不是太合理。(2)DBSCAN不需要指定簇數,整個模型只能指定ε和min_samples(只有這兩個參數),聚出多少簇則是模型自行計算。10.1.2DBSCAN#第一步:導入數據#導入numpy和pandas數據包importnumpyasnpimportpandasaspd#從boston_lishi.csv文件中導入原始數據df=pd.read_csv(r'E:\ruxian_julei.csv',index_col='Patien')10.1.2DBSCAN#第二步:數據預處理#缺失值處理df.dropna()#數據標準化fromsklearn.preprocessingimportMinMaxScalerscaler=MinMaxScaler()df=scaler.fit_transform(df)#其他數據預處理將在第6次課介紹10.1.2DBSCAN#引入DBSCAN工具包fromsklearn.clusterimportDBSCAN#指定DBSCAN的ε為0.2、min_samples為3cluster=DBSCAN(eps=0.2,min_samples=3)clu=cluster.fit_predict(df)print(pd.Series(clu)+1)左列是樣本編號右列是類別號10.1.2DBSCANfromsklearn.metricsimportsilhouette_scorefromsklearn.metricsimportcalinski_harabasz_scoreprint("數據集聚類后平均輪廓系數為:")print(silhouette_score(df,clu))print("卡林斯基-哈拉巴斯指數為:")print(calinski_harabasz_score(df,clu))11.3
模型的保存和導入保存與調用模型:方法一#導入pickle包importpickle#使用pickle中的dump方法將cluster模型保存為cluster1.dat文件,后面的wb表示以二進制寫入pickle.dump(cluster,open(r"E:\cluster1.dat","wb"))#保存成功后,可以在其他地方調用,后面的rb表示以二進制讀出my_model=pickle.load(open(r"E:\cluster1.dat","rb"))#導出后的模型使用方法與普通模型一模一樣result=my_model.fit_predict(df)print(result)保存與調用模型:方法二#導入joblib包importjoblib#使用joblib中的dump方法將cluster模型保存為cluster1.dat文件,后面的wb表示以二進制寫入joblib.dump(cluster,open(r"E:\cluster2.dat","wb"))#保存成功后,可以在其他地方調用,后面的rb表示以二進制讀出my_model=joblib.load(open(r"E:\cluster2.dat","rb"))#導出后的模型使用方法與普通模型一模一樣result=my_model.fit_predict(df)print(result)11.4
關聯算法11.4.1Apriori算法在日常生活中,經常會遇到關聯問題,尋找關聯規則。所謂關聯規則是反映一個事物與其他事物之間的相互依存性和關聯性。如果兩個或者多個事物之間存在一定的關聯關系,那么,其中一個事物就能夠通過其他事物預測到。例如沃爾瑪超市經典案例:沃爾瑪通過對超市一年多的原始交易數據進行詳細分析,發現了尿布與啤酒這一神奇組合——跟尿布一起購買最多的商品竟是啤酒。這是因為美國太太們常叮囑丈夫下班后為小孩買尿布,而丈夫們在買尿布后又隨手帶回了他們喜歡的啤酒,于是尿布就和啤酒關聯在了一起,也就找到了由尿布和啤酒組成的關聯規則。計算機是如何發現不同事物之間的關聯規則呢?可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文物保護工程從業資格真題解析(帶評分標準)
- 文物保護工程從業資格真題模擬測試(含答案)
- 大班安全教案打雷時
- 酒店安全部培訓
- 2026年內科主治醫師(內科學)考試題庫及答案
- 金屬加工企業安全管理員日常檢查安全操作規程
- 線上2026年防損員專項培訓協議
- 建筑工地應急低溫施工規程
- 學校食堂錯時就餐方案
- 互聯網廣告數據保護合同(2026修訂)
- 簡單的詳細房屋抵押合同模板7篇
- GJB1032A-2020 電子產品環境應力篩選方法
- 血透室水處理維護課件
- 工會經費審計條例課件
- 2025年機關事業單位工勤技能人員職業道德試題及答案
- 鍍鋅工安全教育培訓手冊
- 第三屆全國技能大賽競賽(軟件測試賽項)選拔賽備考試題(附答案)
- 消化道出血的業務學習
- 代收貨款合同
- JJF(皖) 223-2025 測量用電力電壓互感器在線監測技術規范
- 旋挖鉆機操作保養手冊(已定稿)最后修改
評論
0/150
提交評論