HAWQ + MADlib 玩轉資料探勘之(六)——主成分分析與主成分投影
一、主成分分析(Principal Component Analysis,PCA)簡介
在資料探勘中經常會遇到多個變數的問題,而且在多數情況下,多個變數之間常常存在一定的相關性。例如,網站的“瀏覽量”和“訪客數”往往具有較強的相關關係,而電商應用中的“下單數”和“成交數”也具有較強的相關關係。這裡的相關關係可以直觀理解為當瀏覽量較高(或較低)時,應該很大程度上認為訪客數也較高(或較低)。這個簡單的例子中只有兩個變數,當變數個數較多且變數之間存在複雜關係時,會顯著增加分析問題的複雜性。主成分分析方法可以將多個變數綜合為少數幾個代表性變數,使這些變數既能夠代表原始變數的絕大多數資訊又互不相關,這種方法有助於對問題的分析和建模。
Madlib提供了兩個主成分分析函式:訓練函式與投影函式。訓練函式以原始資料為輸入,輸出主成分。投影函式將原始資料投影到主成分上,實現線性無關降維,輸出降維後的資料矩陣。
1. PCA的基本思想
主成分分析採取一種數學降維的方法,其所要做的就是設法將原來眾多具有一定相關性的變數,重新組合為一組新的相互無關的綜合變數來代替原來變數。通常,數學上的處理方法就是將原來的變數做正交變換,作為新的綜合變數,轉換後的變數叫主成分。變換的定義方法是用F1(選取的第一個線性組合,即第一個綜合指標)的方差來表達,即Var(F1)越大,表示F1包含的資訊越多。因此在所有的線性組合中選取的F1應該是方差最大的,故稱F1為第一主成分。如果第一主成分不足以代表原來P個指標的資訊,再考慮選取F2即選第二個線性組合,為了有效地反映原來資訊,F1已有的資訊就不需要再出現在F2中,用數學語言表達就是要求Cov(F1, F2)=0,稱F2為第二主成分,依此類推可以構造出第三、第四,……,第P個主成分。Cov表示統計學中的協方差。2. PCA的計算步驟
(1)對原始資料進行標準化處理
(2)計算樣本相關係數矩陣
(3)計算相關矩陣的特徵值和相應的特徵向量
(4)選擇重要的主成分,並寫出主成分表示式
(5)計算主成分得分
(6)依據主成分得分資料,進一步對問題進行後續的分析和建模
3. 主成分投影
主成分投影是指在主成分分析的基礎上,通過正交變換將原有的指標轉換為彼此正交的綜合指標,消除了指標間的資訊重疊問題,並利用各主成分設計一個理想決策變數,以各被評價物件相應的決策向量在該理想決策向量方向上的投影作為一維的綜合評價指標。主成分投影法的基本步驟為:(1)確定評價矩陣。
(2)指標的無量綱化。
(3)指標權重的確定。
(4)指標的正交變換。
(5)理想評價向量的構造和投影值計算。
(6)比較分析及評價標準。
二、Madlib中的PCA訓練函式
1. 技術背景
Madlib中PCA的實現是使用一種分散式的SVD(奇異值分解)找出主成分,而不是直接計算方差矩陣的特徵向量。設為資料矩陣,為的列平均值向量。PCA首先將原始矩陣標準化為矩陣:其中是所有的向量。
Madlib PCA對矩陣進行SVD分解:
其中是對角矩陣,特徵值為的條目,主成分是的行。Bessel's correction用N-1代替N計算協方差。
這種實現的重要前提是假設使用者只使用具有非零特徵值的主成分,因為SVD計算用的是Lanczos演算法,它並不保證含有零特徵值的奇異向量的正確性。通常這不成問題,除非使用者希望使用全部特徵值的集合作為主成分。
2. 訓練函式
(1)語法稠密矩陣和稀疏矩陣的訓練函式有所不同。稠密矩陣訓練函式為:
pca_train( source_table, out_table, row_id, components_param, grouping_cols, lanczos_iter, use_correlation, result_summary_table )
稀疏矩陣訓練函式為:
pca_sparse_train( source_table, out_table, row_id, col_id, -- Sparse matrices only val_id, -- Sparse matrices only row_dim, -- Sparse matrices only col_dim, -- Sparse matrices only components_param, grouping_cols, lanczos_iter, use_correlation, result_summary_table )
(2)引數
source_table:TEXT型別,儲存PCA訓練資料的輸入表名。輸入的資料矩陣應該具有N行M列,N為資料點的數量,M為每個資料點的特徵數。
稠密輸入表可以使用兩種標準的Madlib稠密矩陣格式:
{TABLE|VIEW} source_table ( row_id INTEGER, row_vec FLOAT8[], )或
{TABLE|VIEW} source_table ( row_id INTEGER, col1 FLOAT8, col2 FLOAT8, ... )注意row_id作為入參是輸入矩陣的行標識,必須是從1開始且連續的整數。PCA的稀疏矩陣輸入表的格式為:
{TABLE|VIEW} source_table ( ... row_id INTEGER, col_id INTEGER, val_id FLOAT8, ... )row_id和col_id列指示矩陣下標,是正整數,val_id列定義非0的矩陣元素值。
out_table:TEXT型別,輸出表的名稱。有三種可能的輸出表。
主輸出表(out_table)包含特徵值最高的k個主成分的特徵向量,k值直接由使用者引數指定,或者根據方差的比例計算得出。主輸出表包含以下四列:
row_id:特徵值倒序排名。
principal_components:包含主成分元素的向量(特徵向量)。
std_dev:每個主成分的標準差。
proportion:主成分方差的比例。
out_table_mean表包含列的均值,只有一列:
column_mean:包含輸入矩陣的列的均值。
可選的result_summary_table表包含PCA的效能資訊。
row_id:TEXT型別,源輸入表中表示行ID的列名。該列應該為整型,值域為1到N,對於稠密矩陣格式,該列應該包含從1到N的連續整數。
col_id:TEXT型別,稀疏矩陣中表示列ID的列名。列應為整型,值域為1到M。該引數只用於稀疏矩陣。
val_id:TEXT型別,稀疏矩陣中表示非零元素值的列名。該引數只用於稀疏矩陣。
row_dim:INTEGER型別,矩陣的實際行數,指的是當矩陣轉換為稠密矩陣時所具有的行數。該引數只用於稀疏矩陣。
col_dim:INTEGER型別,矩陣的實際列數,指的是當矩陣轉換為稠密矩陣時所具有的列數。該引數只用於稀疏矩陣。row_dim和col_dim實際上可以從稀疏矩陣推斷出,當前是為了向後相容而存在,將來會被移除。這兩個值大於矩陣的實際值時會補零。
components_param:INTEGER或FLOAT型別,該引數控制如何從輸入資料確定主成分的數量。如果為INTEGER型別,代表需要計算的主成分的個數。如果為FLOAT型別,演算法將返回足夠的主成分向量,使得累積特徵值大於此引數(方差比例)。‘components_param’的值域為正整數或(0.0,1.0]。這裡要注意整型和浮點數的區別,如果components_param指定為1,則返回一個主成分,而指定為1.0時,返回所有的主成分,因為此時方差比例為100%。還要注意一點,主成分數量是全域性的。在分組時(由grouping_cols引數指定)可能選擇方差比例更好,因為這可以使不同分組有不同的主成分數量。
grouping_cols(可選):TEXT型別,預設值為NULL。指定逗號分隔的列名,使用此引數的所有列分組,對每個分組獨立計算PCA。稠密矩陣的各個分組大小可能不同,而稀疏矩陣的每個分組大小都一樣,因為稀疏矩陣的‘row_dim’和‘col_dim’是跨所有組的全域性引數。
lanczos_iter(可選):INTEGER型別,預設值為k+40與最小矩陣維度的較小者,k是主成分數量。此引數定義計算SVD時的Lanczos迭代次數,迭代次數越大精度越高,同時計算越花時間。迭代次數不能小於k值,也不能大於最小矩陣維度。如果此引數設定為0,則使用預設值。如果‘lanczos_iter’和‘components_param’引數同時設定,在確定主成分數量時,優先考慮‘lanczos_iter’。
use_correlation(可選):BOOLEAN型別,預設值為FALSE。指定在計算主成分時,是否使用相關矩陣代替協方差矩陣。當前該引數僅用於向後相容,因此必須設定為false。
result_summary_table(可選):TEXT型別,預設值為NULL。指定概要表的名稱,NULL時不生成概要表。概要表具有下面的列:
rows_used:INTEGER型別,輸入資料點的個數。
exec_time (ms):FLOAT8型別,函式執行的毫秒數。
iter:INTEGER型別,SVD計算時的迭代次數。
recon_error:FLOAT8型別,SVD近似值的絕對誤差。
relative_recon_error:FLOAT8型別,SVD近似值的相對誤差。
use_correlation:BOOLEAN型別,表示使用的是相關矩陣。
3. 檢視聯機幫助
select madlib.pca_train('usage'); select madlib.pca_sparse_train('usage');
三、Madlib中的PCA投影函式
1. 技術背景
給定包含主成分的輸入資料矩陣,則對應的降維後的低維度矩陣為,其計算公式為:其中是的列平均值,是所有的向量。這步計算的結果近似於原始資料,保留了絕大部分的原始資訊。
殘餘表用於估量降維後的矩陣與原始輸入資料的近似程度,計算公式為:
如果殘餘矩陣的元素接近於零,則表示降維後的資訊丟失很少,基本相當於原始資料。
殘差範數表示為:
其中是Frobenius範數。相對殘差範數為:
2. 投影函式
(1)語法稠密矩陣和稀疏矩陣的投影函式有所不同。稠密矩陣投影函式為:
madlib.pca_project( source_table, pc_table, out_table, row_id, residual_table, result_summary_table )稀疏矩陣的投影函式為:
madlib.pca_sparse_project( source_table, pc_table, out_table, row_id, col_id, -- Sparse matrices only val_id, -- Sparse matrices only row_dim, -- Sparse matrices only col_dim, -- Sparse matrices only residual_table, result_summary_table )
(2)引數
source_table:TEXT型別,等同於PCA訓練函式,指定源表名稱。輸入資料矩陣應該有N行M列,N為資料點個數,M為每個資料點的特徵數。與PCA訓練函式類似,pca_project函式的輸入表格式,應該為Madlib兩種標準稠密矩陣格式之一,而pca_sparse_project函式的輸入表應該為Madlib的標準稀疏矩陣格式。
pc_table:TEXT型別,主成分表名,使用中通常為PCA訓練函式的主輸出表。
out_table:TEXT型別,輸入資料降維後的輸出表名稱。out_table是一個投影到主成分上的稠密矩陣,具有以下兩列:
row_id:輸出矩陣的行ID。
row_vec:矩陣行中所含的向量。
row_id:同PCA訓練函式。
col_id:同PCA訓練函式。
val_id:同PCA訓練函式。
row_dim:同PCA訓練函式。
col_dim:同PCA訓練函式。
residual_table(可選):TEXT型別,預設值為NULL,殘餘表的名稱。residual_table表現為一個稠密矩陣,具有以下兩列:
row_id:輸出矩陣的行ID。
row_vec:包含殘餘矩陣行元素的向量。
result_summary_table(可選):TEXT型別,可選值為NULL,概要表的名稱。result_summary_table中含有PCA投影函式的效能資訊,具有以下三列:
exec_time:函式執行所用的時間(毫秒)。
residual_norm:絕對誤差。
relative_residual_norm:相對誤差。
3. 檢視聯機幫助
select madlib.pca_project('usage'); select madlib.pca_sparse_project('usage');
四、PCA應用示例:企業綜合實力排序
為了系統地分析某IT類企業的經濟效益,選擇了8個不同的利潤指標,對15家企業進行了調研,並得到如表1所示的資料。現在需要根據根據這些資料對15家企業進行綜合示例排序。企業編號 | 淨利潤率(%) | 固定資產利潤率(%) | 總產值利潤率(%) | 銷售收入利潤率(%) | 產品成本利潤率(%) | 物耗利潤率(%) | 人均利潤(千元/人) | 流動資產利潤率(%) |
1 | 40.4 | 24.7 | 7.2 | 6.1 | 8.3 | 8.7 | 2.442 | 20 |
2 | 25 | 12.7 | 11.2 | 11 | 12.9 | 20.2 | 3.542 | 9.1 |
3 | 13.2 | 3.3 | 3.9 | 4.3 | 4.4 | 5.5 | 0.578 | 3.6 |
4 | 22.3 | 6.7 | 5.6 | 3.7 | 6 | 7.4 | 0.176 | 7.3 |
5 | 34.3 | 11.8 | 7.1 | 7.1 | 8 | 8.9 | 1.726 | 27.5 |
6 | 35.6 | 12.5 | 16.4 | 16.7 | 22.8 | 29.3 | 3.017 | 26.6 |
7 | 22 | 7.8 | 9.9 | 10.2 | 12.6 | 17.6 | 0.847 | 10.6 |
8 | 48.4 | 13.4 | 10.9 | 9.9 | 10.9 | 13.9 | 1.772 | 17.8 |
9 | 40.6 | 19.1 | 19.8 | 19 | 29.7 | 39.6 | 2.449 | 35.8 |
10 | 24.8 | 8 | 9.8 | 8.9 | 11.9 | 16.2 | 0.789 | 13.7 |
11 | 12.5 | 9.7 | 4.2 | 4.2 | 4.6 | 6.5 | 0.874 | 3.9 |
12 | 1.8 | 0.6 | 0.7 | 0.7 | 0.8 | 1.1 | 0.056 | 1 |
13 | 32.3 | 13.9 | 9.4 | 8.3 | 9.8 | 13.3 | 2.126 | 17.1 |
14 | 38.5 | 9.1 | 11.3 | 9.5 | 12.2 | 16.4 | 1.327 | 11.6 |
15 | 26.2 | 10.1 | 5.6 | 15.6 | 7.7 | 30.1 | 0.126 | 25.9 |
由於本問題中涉及8個指標,這些指標間的關聯關係並不明確,而且各指標數值的數量級也有差異,為此這裡將首先借助PCA方法對指標體系進行降維處理,然後根據PCA打分結果實現對企業的綜合實力排序。
1. 建立稠密矩陣表並新增資料
drop table if exists mat; create table mat (id integer, row_vec double precision[] ); insert into mat values (1, '{40.4, 24.7, 7.2, 6.1, 8.3, 8.7, 2.442, 20}'), (2, '{ 25, 12.7, 11.2, 11, 12.9, 20.2, 3.542, 9.1}'), (3, '{13.2, 3.3, 3.9, 4.3, 4.4, 5.5, 0.578, 3.6}'), (4, '{22.3, 6.7, 5.6, 3.7, 6, 7.4, 0.176, 7.3}'), (5, '{34.3, 11.8, 7.1, 7.1, 8, 8.9, 1.726, 27.5}'), (6, '{35.6, 12.5, 16.4, 16.7, 22.8, 29.3, 3.017, 26.6}'), (7, '{ 22, 7.8, 9.9, 10.2, 12.6, 17.6, 0.847, 10.6}'), (8, '{48.4, 13.4, 10.9, 9.9, 10.9, 13.9, 1.772, 17.8}'), (9, '{40.6, 19.1, 19.8, 19, 29.7, 39.6, 2.449, 35.8}'), (10, '{24.8, 8, 9.8, 8.9, 11.9, 16.2, 0.789, 13.7}'), (11, '{12.5, 9.7, 4.2, 4.2, 4.6, 6.5, 0.874, 3.9}'), (12, '{ 1.8, 0.6, 0.7, 0.7, 0.8, 1.1, 0.056, 1}'), (13, '{32.3, 13.9, 9.4, 8.3, 9.8, 13.3, 2.126, 17.1}'), (14, '{38.5, 9.1, 11.3, 9.5, 12.2, 16.4, 1.327, 11.6}'), (15, '{26.2, 10.1, 5.6, 15.6, 7.7, 30.1, 0.126, 25.9}');
2. 呼叫PCA訓練函式生成特徵向量矩陣
drop table if exists result_table, result_table_mean; select madlib.pca_train('mat', -- source table 'result_table', -- output table 'id', -- row id of source table 3 -- number of principal components );
3. 檢視輸出表
select * from result_table order by row_id;
結果如下:
row_id | principal_components | std_dev | proportion --------+------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-------------------- 1 | {0.54951113056651,0.22059946589484,0.221798212432593,0.234122486371152,0.323859692705692,0.460000381165952,0.0350228413699574,0.477130544733463} | 19.4865050268107 | 0.743985609635922 2 | {-0.679390383883709,-0.258058109137903,0.0922351692999137,0.224015136531732,0.25512757908769,0.589575496706845,-0.0194312272521382,0.00881420572763583} | 9.06653318232267 | 0.161056826858628 3 | {-0.293070645355269,0.116853642654378,-0.357654514354919,-0.0363160573731402,-0.370902632819521,-0.0699941930259179,-0.0562050276014156,0.790943904553534} | 5.06251973016091 | 0.0502146089885736 (3 rows)可以看到,主成分數量為3時,累積方差比例為95.5,即反映了95.5%的原始資訊,而維度已經從8個降低為3個。
4. 呼叫PCA投影函式生成降維後的資料表
drop table if exists residual_table, result_summary_table, out_table; select madlib.pca_project( 'mat', 'result_table', 'out_table', 'id', 'residual_table', 'result_summary_table' );
5. 檢視投影函式輸出表
out_table為降維後,投影到主成分的資料表。residual_table中的資料表示與每個原始資料項對應的誤差,越接近零說明誤差越小。result_summary_table表中包含函式執行概要資訊。dm=# select * from out_table order by row_id; row_id | row_vec --------+--------------------------------------------------------- 1 | {7.08021173666004,-17.6113408380368,3.62504928877283} 2 | {-0.377499074086432,5.25083911315586,-6.06667264391957} 3 | {-24.3659516926199,2.69294552046529,-0.854680487274521} 4 | {-15.235298685282,-2.7756923532236,-1.48789032627869} 5 | {4.64264829479036,-9.80192214158058,9.97441166441563} 6 | {23.6146598612176,7.91277187194797,-1.70125446716029} 7 | {-4.25445515316499,6.71053107113929,-3.63489574437095} 8 | {12.8547303317577,-15.2151276724561,-4.53202062778529} 9 | {40.4531114732088,11.566606363421,0.333514089765778} 10 | {-2.3918721025776,3.48063922820141,-1.53633678788746} 11 | {-22.6173674430242,2.15970955881415,0.0711392924992467} 12 | {-37.2273102800874,6.50778045364591,3.06216108712083} 13 | {2.45676837959725,-5.55018275237518,0.715863146049784} 14 | {5.05828673790116,-5.6726215744102,-7.79762716115412} 15 | {10.3093376158273,10.3450641508798,9.82923967771456} (15 rows) dm=# select * from result_summary_table; exec_time | residual_norm | relative_residual_norm ---------------+---------------+------------------------ 7834.64002609 | 17.8804330669 | 0.0999460602087 (1 row) dm=# select * from residual_table order by row_id; row_id | row_vec --------+---------------------------------------------------------------------------------------------------------------------------------------------------------- 1 | {-2.25323523421767,7.27642620892876,-0.31614472682197,-0.494115688859853,1.00468388047691,0.433380657606633,0.599100230104459,-1.52349927341588} 2 | {-0.863154123125062,3.95387717098127,-0.237022939622535,0.678462615857513,-1.40752199307202,1.2065851169394,1.85980716819093,-1.40110122200098} 3 | {0.308441190889249,-1.42340844662228,-0.116406757628345,0.356984675694431,0.447101713452669,-0.585836964458252,-0.0208119097031971,0.444674616668891} 4 | {0.490130533527738,-1.37485909630399,-0.163638890332356,-1.17864453350125,0.250392381501536,0.293913050865083,-0.884445243345333,0.337196335237827} 5 | {0.152688703669817,-3.81251089756285,1.67507754859814,-0.442271462365288,1.85670956345357,-2.40516264125975,0.477083304830599,2.04871340760574} 6 | {-0.3592450632185,-1.36196195708871,0.957346795421167,0.323580259078128,1.66239742146767,-1.99367354425669,0.791616661159451,1.17524319516153} 7 | {-0.0283404999568164,0.00165496908974205,0.057980039554014,0.54746466878389,0.0776125903500138,-0.300401958384908,-0.5343691201399,0.0124478027687696} 8 | {1.81096896189017,-3.72588393721226,-1.03535063544512,1.12091902152632,-1.90226870931166,0.993403809233695,-0.685046795881378,-0.0480344625583826} 9 | {-1.53345069357698,2.22861611294688,1.01334044488596,-2.06329935977889,2.93160872351416,-1.45115700607537,-0.180751047312987,0.699510168883641} 10 | {0.168817950757148,-1.28795389715317,0.593331153806535,-0.388851856449367,0.376792544638479,-0.506038843322491,-0.602413269186595,0.592379053435519} 11 | {-1.44337010134268,4.34506352414871,0.176067114438398,0.000676834542009175,0.560237949521619,-0.011001520447941,0.255621998627472,-0.817199798912856} 12 | {-0.284425653421206,-0.759447727683328,0.585233711708927,-0.944218598761936,1.49187460452629,-1.04458414728561,0.201902525223109,0.849594937231783} 13 | {-0.470963886374596,0.948783991627835,0.756380230030218,-0.0191957806666807,-0.154128037749362,-0.154423041481078,0.515878569618902,-0.0228197077983638} 14 | {1.72123496250158,-3.46187354552954,-0.954226967261204,0.289982019939877,-1.72309342301114,1.22516956751968,-0.855114089441233,-0.0293111133050323} 15 | {2.58390295180211,-1.54652247225864,-2.99196612118835,2.21252718509424,-5.47239920950344,4.29982746453179,-0.938058982777885,-2.31779393895638} (15 rows)
6. 按主成分總得分降序排列得到綜合實力排序
select row_id, row_vec, madlib.array_sum(row_vec) r from out_table order by r desc;
結果如下:
row_id | row_vec | r --------+----------------------------------------------------------+------------------- 9 | {40.4531114732088,11.566606363421,-0.333514089765778} | 51.686203746864 6 | {23.6146598612176,7.91277187194796,1.70125446716029} | 33.2286862003258 2 | {-0.377499074086431,5.25083911315585,6.06667264391957} | 10.940012682989 15 | {10.3093376158273,10.3450641508798,-9.82923967771456} | 10.8251620889925 14 | {5.05828673790117,-5.6726215744102,7.79762716115411} | 7.18329232464508 7 | {-4.254455153165,6.71053107113929,3.63489574437095} | 6.09097166234524 10 | {-2.3918721025776,3.48063922820141,1.53633678788746} | 2.62510391351128 8 | {12.8547303317577,-15.2151276724561,4.53202062778528} | 2.17162328708682 13 | {2.45676837959725,-5.55018275237518,-0.715863146049783} | -3.80927751882771 1 | {7.08021173666005,-17.6113408380368,-3.62504928877282} | -14.1561783901495 5 | {4.64264829479035,-9.80192214158058,-9.97441166441563} | -15.1336855112059 4 | {-15.235298685282,-2.7756923532236,1.48789032627869} | -16.5231007122269 11 | {-22.6173674430242,2.15970955881415,-0.0711392924992431} | -20.5287971767093 3 | {-24.3659516926199,2.69294552046528,0.85468048727452} | -20.8183256848801 12 | {-37.2273102800874,6.50778045364591,-3.06216108712083} | -33.7816909135623 (15 rows)從該結果可知,第9家企業的綜合實力最強,第12家企業的綜合實力最弱。row_vec中的三列為個主成分的得分。以上應用示例比較簡單,真實場景中,PCA方法還要根據實際問題和需求靈活使用。
參考文獻:
相關推薦
HAWQ + MADlib 玩轉資料探勘之(六)——主成分分析與主成分投影
一、主成分分析(Principal Component Analysis,PCA)簡介 在資料探勘中經常會遇到多個變數的問題,而且在多數情況下,多個變數之間常常存在一定的相關性。例如,網站的“瀏覽量”和“訪客數”往往具有較強的相關關係,而電商應用中的“下單數”和“成交數”也具有較強的相關關係。
HAWQ + MADlib 玩轉資料探勘之(七)——關聯規則方法之Apriori演算法
一、關聯規則簡介 關聯規則挖掘的目標是發現數據項集之間的關聯關係,是資料挖據中一個重要的課題。關聯規則最初是針對購物籃分析(Market Basket Analysis)問題提出的。假設超市經理想更多地瞭解顧客的購物習慣,特別是想知道,哪些商品顧客可能會在一次購
Modeler玩轉資料探勘——保險公司商品關聯與推薦分析
保險公司在運營過程中儲存了很多交易明細資料,根據客戶購買保險商品的記錄,可以分析保險商品購買之間的關聯,從而為公司提供合理的建議。 首先在Modeler 資料流中匯入原始資料 可以先預覽一下原始資料的結構 接著引入一個“型別”節點,將“商品”欄位設為“名義”
轉載:資料探勘之_SVD的python實現和分析
作者:NumX 來源:CSDN 原文:https://blog.csdn.net/baidu_36316735/article/details/53760479?utm_source=copy 前言 今日實現第一個推薦演算法,在”機器學習實戰“一書中找到了SVD方法一
資料探勘之_SVD的python實現和分析pin
前言 今日實現第一個推薦演算法,在”機器學習實戰“一書中找到了SVD方法一章練習。這裡總結下筆記經驗,與大家分享 。 簡介 對於一個簡單的推薦系統,例如電影推薦,我們知道N個使用者對M個電影的評分。這時候對於一個新的使用者,我們應該如何給他推薦新的電影呢?一個最簡單的方法,
資料探勘學習(四)——常見案例總結
1、K-meaning演算法實戰主要是通過均值來聚類的一個方法。步驟為:1)隨機選擇k個點作為聚類中心;2)計算各個點到這k個點的距離,將距離相近的點聚集在一起,行程k個類;3)將對應的點聚到與他最近的聚類中心;4)分成k個聚類之後,重新計算聚類中心;5)比較當前聚類中心與前
資料探勘技術(一)——預處理
1、資料預處理 資料預處理技術包括:聚集、抽樣、維規約、特徵子集選擇、特徵建立、離散化和二元化、變數變換。 屬性的型別:標稱(定性的)(值僅僅是不同的名字,即只提供足夠的資訊以區分物件, 如僱員ID,性別)、序數(定性的)(值提供足夠資訊確定物件的序, ,如成績,街道
資料探勘學習(一)——常用的python包
1、資料分析的內容: 2、資料分析與挖掘的相關模組: 3、安裝報錯:Import genism時會報錯:Chunkize warning while installing gensim此時需要在import genism前面加上:UserWarning: d
DataMining學習1_資料探勘技術(三)——關聯分析
3、關聯分析 3.1、基本概念 (1)通常認為項在事物中出現比不出現更重要,因此項是非對稱二元變數。(2)關聯規則是形如X->Y的蘊涵表示式,其中X和Y是不相交的項集,即X交Y=空。(3)由關聯規則作出的推論並不必然蘊涵因果關係。它只表示規則前件和後件中的項明
資料探勘步驟(流程)
流程說明: 暫且總結為五步:1、確立挖掘目的,2、資料準備,3、數學建模,4、模型評估,5、模型應用。 第一步:確立挖掘目的, 確立業務目標 --> 對目標做簡單評估,確立所需要的資料型別,人
資料探勘筆記(三)—資料預處理
1.原始資料存在的幾個問題:不一致;重複;含噪聲;維度高。 2.資料預處理包含資料清洗、資料整合、資料變換和資料歸約幾種方法。 3.資料探勘中使用的資料的原則 應該是從原始資料中選取合適的屬性作為資料探勘屬性,這個選取過程應參考的原則是:儘可能賦予屬性名和屬性值明確的含義;
資料探勘專案(一)Airbnb 新使用者的民宿預定結果預測
摘要 本文主要根據對Airbnb 新使用者的民宿預定結果進行預測,完整的陳述了從資料探索到特徵工程到構建模型的整個過程。 其中: 1 資料探索部分主要基於pandas庫,利用常見的:head(),value_counts(),describe(),is
資料探勘例項(航空公司客戶價值分析)
一、實現目標 (1)藉助航空公司客戶資料,對客戶進行分類 (2)對不同的客戶進行特徵分析,比較不同類客戶的客戶價值 (3)對不同價值的客戶類別提供個性化服務,指定相應的營銷策略 二、分析方法與過程 航空客運資訊挖掘主要步驟: (1)從航空公司的資料來
資料探勘實驗(一)資料規範化【最小-最大規範化、零-均值規範化、小數定標規範化】
本文程式碼均已在 MATLAB R2019b 測試通過,如有錯誤,歡迎指正。 [toc] ## 一、資料規範化的原理 資料規範化處理是資料探勘的一項基礎工作。不同的屬性變數往往具有不同的取值範圍,數值間的差別可能很大,不進行處理可能會影響到資料分析的結果。為了消除指標之間由於取值範圍帶來的差異,需要進行標準化
資料探勘之售房資料分析1
最近再做一批關於售房的資料,感覺自己陷入一個死衚衕裡: 該批資料是儲存再postgresql裡面,是從某售房網站上爬下來的,以資料庫中的一列欄位作為儲存資料,該列欄位是以json的資料形式儲存的,這裡跟我打開了一個新大門,資料庫能儲存json資料格式的資料,而且postgresql還有一套專門的
資料探勘之十大經典演算法
國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 2006年12月評選出了資料探勘領域的十大經典演算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, k
資料探勘之FP_Tree演算法實現
轉自http://www.cnblogs.com/zhangchaoyang/articles/2198946.html (格式複製之後有變化,建議直接點連結去部落格園看原文) python程式碼見https://github.com/yantijin/Lean_DataMining F
資料探勘之AdaBoost裝袋提升演算法
python3程式碼實現在https://github.com/yantijin/Lean_DataMining上,時間匆忙,敬請之處錯誤之處,謝謝! 以下內容轉自:https://blog.csdn.net/androidlushangderen/article/details/4363511
資料探勘之關聯規則Apriori演算法
一、Aoriori原始演算法: 頻繁挖掘模式與關聯規則 關聯規則兩個基本的指標(假設有事務A和事務B) 1、支援度(suport):計算公式如下 2、置信度(confidence): 關聯規則的挖掘過程: 1、設定最小支援度閾值,找出所有的頻繁項集且每個出現的次數要
零基礎入門大資料探勘之spark中的幾種map
今天再來說一下spark裡面的幾種map方法。前面的文章介紹過單純的map,但是spark還有幾種map值得對比一下,主要是下面幾種: map:普通的map flatMap:在普通map的基礎上多了一個操作,扁平化操作; mapPartitions:相對於分割槽P