背景介紹
葡萄酒在人類歷史中扮演著非常重要的角色,它能舒緩疲勞、減輕病痛、消毒殺菌、美容養(yǎng)顏等等直到19世紀(jì)晚期,葡萄酒都是西方醫(yī)學(xué)中不可缺少的用品,適量飲用對人的身體會(huì)有益處。無論是用于交際會(huì)談,還是滋身養(yǎng)顏,優(yōu)良的葡萄酒因其獨(dú)特的風(fēng)味與絕佳的品質(zhì)往往具有高昂的價(jià)格。因而,葡萄酒的質(zhì)量評估成為酒品釀造行業(yè)的重要過程。
通常情況下,我們根據(jù)葡萄酒的理化性質(zhì)及行業(yè)的前導(dǎo)經(jīng)驗(yàn)判斷葡萄酒的品質(zhì)。本次實(shí)驗(yàn),我們基于葡萄酒數(shù)據(jù)集,通過數(shù)據(jù)挖掘的方法實(shí)現(xiàn)了對數(shù)據(jù)集的可視化及數(shù)據(jù)清洗,利用異常檢測的方法篩除劣質(zhì)葡萄酒。
數(shù)據(jù)可視化探索分析
2.1. 數(shù)據(jù)整體情況介紹
數(shù)據(jù)來源于UCI機(jī)器學(xué)習(xí)庫中與葡萄牙“Vinho Verde”葡萄酒的紅白變體(白葡萄酒和紅葡萄酒)有關(guān)的兩個(gè)數(shù)據(jù)集?!癡inho Verde”葡萄酒是葡萄牙米尼奧(西北)地區(qū)的獨(dú)特產(chǎn)品,由于其酒精含量適、新鮮度高等特點(diǎn)受到市場歡迎。
我們得到原始的葡萄酒數(shù)據(jù)集,利用info函數(shù)查看數(shù)據(jù)集基本情況:


可以得知,總數(shù)據(jù)量為6497條,包含13種屬性,其中葡萄酒種類(type)為object類型,感官評分(quality)為int類型,其余屬性均為float類型。數(shù)據(jù)集中的各屬性描述如表1所示:
Field |
Attribute |
Description |
type |
類型 |
葡萄酒種類:白葡萄酒和紅葡萄酒 |
fixed acidity |
固定酸度 |
固定酸度是由于葡萄酒中存在非揮發(fā)性酸。例如,酒石酸、檸檬酸或蘋果酸。這種酸結(jié)合了葡萄酒味道的平衡,使味道清新 |
volatile acidity |
揮發(fā)性酸度 |
揮發(fā)性酸度是葡萄酒中可以通過嗅覺聞到的酸的一部分,是最常見的缺陷之一。葡萄酒中醋酸的含量過高會(huì)導(dǎo)致令人不愉快的醋味 |
citric acid |
檸檬酸 |
可以用于葡萄酒的酸處理(增加酸度)、收集葡萄酒、清洗過濾器以防真菌和霉菌感染。少量檸檬酸可以增加葡萄酒的“新鮮度”和風(fēng)味 |
residual sugar |
殘?zhí)?/p> |
發(fā)酵停止后剩余的糖量 |
chlorides |
氯化物 |
葡萄酒中部分礦物質(zhì)(例如鹽)的含量 |
free sulfur dioxide |
游離二氧化硫 |
游離形式的二氧化硫在分子SO?(作為溶解氣體)和亞硫酸氫根離子之間存在平衡;它可以防止微生物的生長和葡萄酒的氧化 |
total sulfur dioxide |
二氧化硫總量 |
游離和結(jié)合形式的SO?的量;在低濃度下,SO?在葡萄酒中幾乎檢測不到,但在游離SO?濃度超過50ppm時(shí),SO?在酒的鼻子和味道中變得明顯 |
density |
密度 |
葡萄酒的密度可以小于或大于水,其值主要由酒精濃度和糖的含量決定 |
pH |
酸堿度 |
描述葡萄酒的酸度或堿度從0(非常酸性)到14(非常堿性) |
sulphates |
硫酸鹽 |
一種葡萄酒添加劑,可以促進(jìn)二氧化硫氣體(SO?)水平,作為抗菌劑和抗氧化劑 |
alcohol |
酒精 |
葡萄酒的酒精含量百分比 |
quality |
基于感官的評分 |
多名葡萄酒專家根據(jù)個(gè)人感官感受對這些酒做了評分,分?jǐn)?shù)在0(?常差)和10(?常好)之間,僅作為最后預(yù)測效果的參考 |
表1 葡萄酒數(shù)據(jù)集屬性介紹
作為一種常見的飲品,我國對葡萄酒的理化性質(zhì)有著明確的規(guī)定。根據(jù)國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局頒布的GB/T 15037-2006 葡萄酒國家標(biāo)準(zhǔn),我們了解到葡萄酒的基本理化要求,明確葡萄酒數(shù)據(jù)字段值范圍的強(qiáng)制要求,方便后續(xù)處理可能的異常值時(shí),能夠較好地根據(jù)酒類學(xué)理論及國標(biāo)對其進(jìn)行處理。

結(jié)合上述圖表,我們對數(shù)據(jù)集中各字段及酒品的特征要求進(jìn)行分析:
查閱資料可知,葡萄酒的三大基本特征是酸度、酒精和甜味。
酸度可以從兩方面考慮。一方面,酸可分為fixed acidity(固定酸)和volatile acidity(揮發(fā)酸),其總含量反映葡萄酒濃度。其中citric acid(檸檬酸)及揮發(fā)酸的含量能夠較好地反映葡萄酒的健康狀態(tài),幫助我們判斷葡萄酒的質(zhì)量、預(yù)測貯藏的困難程度。另一方面,pH(酸堿度)同樣可以指示酸度,反映葡萄酒品嘗起來口感的濃郁度。
此外,二氧化硫作為酸性氧化物,既能殺菌抗氧、澄清酒液,又對酸度有影響,本數(shù)據(jù)集中有free sulfur dioxide(游離二氧化硫)和total sulfur dioxide(二氧化硫總量)兩個(gè)相關(guān)字段。
酒精即葡萄酒中alcohol(酒精)的含量,大部分葡萄酒的酒精含量都在10-15%之間,酒精濃度過高會(huì)影響葡萄酒的口感;甜味則由葡萄酒中的residual sugar(殘留糖分)決定。
葡萄酒的density(密度)主要由酒精濃度和糖的含量決定,這同樣是葡萄酒酒精及甜味的重要衡量指標(biāo)。
chlorides(氯化物)和sulphates(硫酸鹽)都屬于葡萄酒中的礦物鹽成分,通常情況下含量分別是0.1-0.4g/L和0.25-0.85g/L,且紅葡萄酒所含的礦物質(zhì)多于白葡萄酒。
2.2. 數(shù)據(jù)質(zhì)量分析
2.2.1. 缺失率和覆蓋率
根據(jù)前述的數(shù)據(jù)集基本情況,我們發(fā)現(xiàn)部分字段存在缺失值。我們選擇查看數(shù)據(jù)的缺失率和覆蓋率情況。
繪制缺失值矩陣圖:


圖1 葡萄酒數(shù)據(jù)集缺失值矩陣圖
由圖可知原數(shù)據(jù)集的缺失值數(shù)量極少。
統(tǒng)計(jì)各個(gè)字段缺失率和整體的數(shù)據(jù)覆蓋率(如果缺失字段同時(shí)為空,則表示該條數(shù)據(jù)沒有從外部數(shù)據(jù)中獲取到對應(yīng)的實(shí)例數(shù)據(jù),則數(shù)據(jù)未覆蓋該實(shí)例):


由結(jié)果可以看出數(shù)據(jù)缺失率較低且覆蓋率為100%。
綜上可知,數(shù)據(jù)集極少存在數(shù)據(jù)字段缺失的情況,數(shù)據(jù)質(zhì)量基本良好,具有開展數(shù)據(jù)挖掘的價(jià)值。
2.2.2. 重復(fù)率
我們認(rèn)為所有屬性值均相同的兩個(gè)實(shí)例數(shù)據(jù)算作重復(fù)數(shù)據(jù),在此基礎(chǔ)上,我們計(jì)算重復(fù)數(shù)據(jù)在整個(gè)數(shù)據(jù)集中的比例大?。?/p>


圖2 葡萄酒數(shù)據(jù)集重復(fù)率餅圖
由圖可以看出,數(shù)據(jù)集中重復(fù)值所占比例較小,數(shù)據(jù)整體可用性較高。
綜上所述,該數(shù)據(jù)集數(shù)據(jù)質(zhì)量較高,具有挖掘潛力。
2.3. 可視化探索分析
2.3.1. 箱線圖分析
箱線圖也稱箱形圖,用于反映一組或多組連續(xù)型定量數(shù)據(jù)分布的中心位置和散布范圍。它不僅能夠分析不同類別數(shù)據(jù)各層次水平差異,還能揭示數(shù)據(jù)間的離散程度、異常值、分布差異等。
基于葡萄酒數(shù)據(jù)集,我們繪制所有屬性的箱型圖進(jìn)行預(yù)覽:

我們選擇葡萄酒中比較有代表性的三個(gè)屬性:固定酸度(fixed acidity)、揮發(fā)性酸度(volatile acidity)、檸檬酸(citric acid),繪制箱型圖:


圖3 固定酸度、揮發(fā)性酸度、檸檬酸屬性箱型圖
以固定酸度(fixed acidity)的箱線圖為例,我們將該屬性下n條數(shù)據(jù)從小到大進(jìn)行排序,分為四等份。位于第25%(n+1)位置的數(shù)字是第一四分位數(shù)Q1,位于第50%(n+1)位置的數(shù)字是第二四分位數(shù)Q2(即中位數(shù)),位于第75%(n+1)位置的數(shù)字是第三四分位數(shù)Q3。第三四分位數(shù)與第一四分位數(shù)的差值稱為四分位距IQR(IQR=Q3-Q1),IQR表征在箱線圖中即為箱體的長度。
如圖所示,箱體填充部分包含了50%的數(shù)據(jù),箱體的上邊緣線值為Q3+1.5IQR,稱為上限;下邊緣線值為Q1-1.5IQR,稱為下限。上限是非異常范圍的最大值,下限是非異常范圍的最小值,即正常范圍是[Q1-1.5IQR,Q3+1.5IQR]。我們認(rèn)為超過該正常范圍的就是異常值(即圖中黃色方框區(qū)域)。

由圖3可知,固定酸度(fixed acidity)、揮發(fā)性酸度(volatile acidity)、檸檬酸(citric acid)這三個(gè)屬性都有一定數(shù)量的離群值,且其大多集中在較大值一側(cè),數(shù)據(jù)分布呈右偏態(tài)。
查看這三個(gè)屬性的數(shù)據(jù)描述,可以分別得到它們的四分位數(shù)、最大、最小值等重要信息。

根據(jù)箱線圖,我們進(jìn)一步繪制紅葡萄酒和白葡萄酒(數(shù)據(jù)集中type屬性值分別為red和white)的上述三個(gè)屬性的對比箱線圖,如圖4所示。
以固定酸度(fixed acidity)屬性為例,由圖可以看出,在該屬性下,紅葡萄酒的異常值均集中在較大值一側(cè),而白葡萄酒的異常值則在較大值和較小值兩側(cè)均有分布。此外,紅葡萄酒數(shù)據(jù)在這三個(gè)屬性下的分布區(qū)間長度均大于白葡萄酒。這表明紅葡萄酒的固定酸度、揮發(fā)性酸度屬性的整體數(shù)值較白葡萄酒偏高。

圖4 紅葡萄酒和白葡萄酒的固定酸度、揮發(fā)性酸度、檸檬酸屬性對比箱型圖
2.3.2. 數(shù)據(jù)集統(tǒng)計(jì)特征
常見的數(shù)據(jù)統(tǒng)計(jì)特征包括均值(Mean)、標(biāo)準(zhǔn)差(Std)、最小值(Min)、下四分位數(shù)(25%)、中位數(shù)(50%)、上四分位數(shù)(75%)、最大值(Max)等。
經(jīng)過計(jì)算,我們將數(shù)據(jù)集的統(tǒng)計(jì)特征結(jié)果進(jìn)行可視化,結(jié)果如圖5所示。



圖5 數(shù)據(jù)集各屬性統(tǒng)計(jì)特征條形圖
2.3.3. 數(shù)據(jù)集數(shù)據(jù)可視化
直方圖是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況,用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況。直方圖可以對數(shù)據(jù)集中各屬性的頻數(shù)表進(jìn)行可視化,用于探索各屬性下數(shù)值變量的分布。我們繪制直方圖如下。



圖6 數(shù)據(jù)集各屬性直方圖
熱力圖是一種通過對色塊著色來顯示數(shù)據(jù)的統(tǒng)計(jì)圖表。利用熱力圖,我們可以根據(jù)圖中顏色直觀地查看數(shù)據(jù)集中多個(gè)屬性兩兩之間的相似度大小,相似度由皮爾遜相關(guān)系數(shù)度量。


圖7 數(shù)據(jù)集各屬性相關(guān)系數(shù)熱力圖
Python中sns.pairplot() 函數(shù)可以探索數(shù)據(jù)集中的多個(gè)成對雙變量的分布,它會(huì)同時(shí)展示出輸入的Dataframe中每對變量的關(guān)系,并在對角線上展示每個(gè)變量自身作為單變量時(shí)的分布情況,有利于幫助我們理解變量間的關(guān)系。
繪圖時(shí),我們按葡萄酒種類(type)進(jìn)行分類。


圖8 數(shù)據(jù)集部分屬性成對關(guān)系圖

圖9 數(shù)據(jù)集各屬性成對關(guān)系圖
數(shù)據(jù)清洗
3.1. 缺失值處理
根據(jù)2.2.1節(jié)中的缺失值分析可知,部分?jǐn)?shù)據(jù)的部分字段存在缺失值,可能會(huì)對后續(xù)分析造成影響,因此我們需要對數(shù)據(jù)集中的缺失值進(jìn)行處理。
統(tǒng)計(jì)所有實(shí)例屬性的缺失值情況:


由于缺失值大于1的實(shí)例數(shù)量極少,我們使用刪除的方法進(jìn)行處理;缺失值小于等于1的實(shí)例有留存及后續(xù)處理的意義,對于缺失值等于1的實(shí)例,我們選用該缺失值所在特征屬性的中位數(shù)進(jìn)行填充:

經(jīng)過處理,我們實(shí)現(xiàn)了對缺失數(shù)據(jù)的刪除及填充。
3.2. 數(shù)據(jù)去重
由2.2.2節(jié)中的重復(fù)率分析可知,數(shù)據(jù)集中存在小部分重復(fù)的實(shí)例。在本次數(shù)據(jù)分析工作中,重復(fù)值對質(zhì)量評估及異常檢測幾乎沒有影響,因而我們將異常的重復(fù)數(shù)據(jù)進(jìn)行處理,減少無效冗余。


3.3. 數(shù)據(jù)異常值識(shí)別和處理
異常值通常指與數(shù)據(jù)集中的大多其他數(shù)據(jù)對象有明顯不同或其字段值不符合范圍的數(shù)據(jù)對象。
由于不同類型的酒的風(fēng)味、工藝及評價(jià)標(biāo)準(zhǔn)不同,我們選擇在異常值處理及后續(xù)過程中,根據(jù)酒的類型將原始數(shù)據(jù)集劃分為兩部分。其中,去重后的紅酒數(shù)據(jù)集的實(shí)例數(shù)為1357,去重后的白酒數(shù)據(jù)集的實(shí)例數(shù)為3968.
基于上述兩類數(shù)據(jù)集,我們將異常值的處理分為兩個(gè)步驟:
3.3.1. 異常值挖掘
由于數(shù)據(jù)來源于同一種酒,因而我們認(rèn)為酒的理化性質(zhì)值及其感官評分均表現(xiàn)出一定的穩(wěn)定性,界于某個(gè)合理的范圍內(nèi)。因而,若數(shù)據(jù)某字段值偏大或偏小,則該字段可能存在異常。我們接受部分?jǐn)?shù)據(jù)的部分字段值與其他數(shù)據(jù)的存在差異,但拒絕差距極大的假設(shè)。
在此,我們選用3σ原則發(fā)現(xiàn)異常值。
3σ原則是指我們認(rèn)為服從正態(tài)分布或近似正態(tài)分布的數(shù)據(jù),其值有99.7%的概率集中在(μ-3σ,μ+3σ)區(qū)間內(nèi)(μ為平均值,σ為標(biāo)準(zhǔn)差),超出這個(gè)范圍的可能性僅占0.3%,屬于極個(gè)別的小概率事件,因此我們將超出(μ-3σ,μ+3σ)范圍的值認(rèn)為是異常值。
3σ原則中涉及到的重要數(shù)據(jù)特征為平均值與標(biāo)準(zhǔn)差。此外,數(shù)據(jù)的最大值和最小值也能幫助我們了解數(shù)據(jù)的分布情況。
因而,我們計(jì)算并可視化了去重后的數(shù)據(jù)的關(guān)鍵統(tǒng)計(jì)特征,結(jié)果如圖10和圖11所示:


圖10 紅葡萄酒的關(guān)鍵數(shù)據(jù)特征條形圖


圖11 白葡萄酒的關(guān)鍵數(shù)據(jù)特征條形圖
我們根據(jù)紅葡萄酒和白葡萄酒的均值與標(biāo)準(zhǔn)差,對各屬性計(jì)算3σ區(qū)間范圍,并對負(fù)值進(jìn)行歸零處理,獲得3σ區(qū)間向量。


我們認(rèn)為數(shù)據(jù)任意字段的屬性值不在3σ區(qū)間內(nèi)則數(shù)據(jù)的該字段值存在異??赡?,我們記錄各類型葡萄酒的各屬性下異常值對應(yīng)的數(shù)據(jù)索引值。以紅葡萄酒為例:

紅葡萄酒和白葡萄酒的異常字段值的數(shù)據(jù)索引列表如下:


我們對上述索引進(jìn)行記錄后,需要根據(jù)相關(guān)的酒類學(xué)理論對這些可能的異常值其進(jìn)行核驗(yàn),確定是否需要處理。
3.3.2. 異常值處理
由于酒品質(zhì)量本身存在差異,葡萄酒的理化性質(zhì)也會(huì)有所不同,數(shù)值有存在較大差異的可能且該差異是我們后續(xù)篩除劣質(zhì)葡萄酒的重要區(qū)分條件,不能粗暴簡單地以所謂的“嚴(yán)重偏離”來定義異常值。
我們假定,在數(shù)據(jù)本身記錄無誤的情況下,我們在此只認(rèn)定不符合食品生產(chǎn)理化要求的數(shù)據(jù)為不符合生產(chǎn)要求的異常值,并予以剔除。
我們根據(jù)2.1中的GB/T 15037-2006 葡萄酒國家標(biāo)準(zhǔn),明確其對葡萄酒的酒精含量、揮發(fā)酸含量及不同甜度下的檸檬酸含量的限制,即:

依此,我們篩除上述理化要求對應(yīng)的異常值。
首先,根據(jù)3.3.1中的屬性條形圖可知,白葡萄酒和紅葡萄酒數(shù)據(jù)的酒精含量屬性值均高于國標(biāo)閾值7.0,因而該字段不存在異常值。
其次,根據(jù)3.3.1中的屬性條形圖可知,白葡萄酒數(shù)據(jù)的揮發(fā)酸含量屬性正常,紅葡萄酒數(shù)據(jù)則存在異常值,我們利用3.3.1中的索引列表,迅速定位異常值。

最后,根據(jù)3.3.1中的屬性條形圖可知,數(shù)據(jù)多為殘?zhí)呛康陀?5g/L的非甜葡萄酒,且部分葡萄酒檸檬酸含量高于1g/L。因此,我們基于國標(biāo)對葡萄酒甜度的分類,根據(jù)數(shù)據(jù)的residual sugar(殘?zhí)牵┳侄沃祵Σ煌愋推咸丫频臋幟仕岷窟M(jìn)行分析。


我們依據(jù)索引值在對應(yīng)數(shù)據(jù)集中刪除不符合生產(chǎn)要求的實(shí)例,由于白葡萄酒數(shù)據(jù)中沒有不符合理化要求的實(shí)例,我們只對紅葡萄酒數(shù)據(jù)集進(jìn)行處理。


3.4. 數(shù)據(jù)噪聲識(shí)別和處理
噪聲是指數(shù)據(jù)集中的干擾數(shù)據(jù),對場景描述不準(zhǔn)確的數(shù)據(jù),即測量變量中的隨機(jī)誤差或方差。我們選用箱線圖對數(shù)據(jù)噪聲情況進(jìn)行分析。
首先,我們對不同類型的葡萄酒的各屬性再次繪制箱線圖,結(jié)果如圖12所示。由箱線圖可以看出,紅葡萄酒和白葡萄酒的各屬性均存在噪聲,且數(shù)據(jù)特征間存在較明顯的差異。
但紅葡萄酒數(shù)據(jù)的citric acid(檸檬酸含量)屬性相對白葡萄酒集中,噪聲較少;白葡萄酒數(shù)據(jù)的alcohol(酒精含量)屬性相對紅葡萄酒集中,噪聲較少,即紅葡萄酒的檸檬酸含量和白葡萄酒的酒精含量字段無明顯噪聲。
考慮到算法特性,我們在此不處理這些噪聲數(shù)據(jù)。


圖12 不同類型葡萄酒的各屬性箱線圖
3.5. 主成分分析
PCA(主成分分析)是一種常見的數(shù)據(jù)降維方法,能夠在“信息”損失較少的前提下,對高維的數(shù)據(jù)進(jìn)行降維,從而減小計(jì)算量,其原理為如下:
基于最小投影距離和最大投影方差的思想,我們通過對n維樣本x(i)求其k維(k<n)主成分,即為求其協(xié)方差矩陣XXT的前k個(gè)特征值對應(yīng)的特征向量矩陣W,然后對樣本x(i)做如下變換z(i)=WTx(i),即可達(dá)到降維目的。

接下來,我們將利用PCA對紅葡萄酒和白葡萄酒的數(shù)值屬性分別做主成分分析。
我們定義方法PCA:首先計(jì)算每一列的均值向量mean_vector,獲得原始數(shù)據(jù)減掉均值后中心化得到的矩陣normal_data。

根據(jù)中心化后的數(shù)據(jù),計(jì)算其協(xié)方差矩陣Covmatrix。我們默認(rèn)行為數(shù)據(jù)的基本處理單位,對協(xié)方差矩陣進(jìn)行對角化,計(jì)算出其特征值矩陣eig_val與特征向量矩陣eig_vec。我們利用切片方法,根據(jù)特征值大小從大到小對特征值矩陣進(jìn)行排序,得到eig_val_sorted。


由PCA原理可知,eig_val_sorted的前k個(gè)特征值對應(yīng)的k個(gè)特征向量即為前k個(gè)主成分。我們計(jì)算各主成分的累計(jì)率及累積貢獻(xiàn)率,了解各主成分對方差的解釋率,從而幫助我們選擇合適的主成分?jǐn)?shù)。

我們利用numpy中的argsort方法,得到特征值的有序索引列表,以便由此篩選出特征向量,組成用于降維的矩陣eig_tool。

最后,我們利用矩陣乘法,將中心化后的數(shù)據(jù)進(jìn)行降維,得到降維后的數(shù)據(jù)new_data,并返回用于降維的矩陣、排序后的特征值向量及降維后的矩陣。

在主函數(shù)中,我們導(dǎo)入數(shù)據(jù)并除去“屬性”和“質(zhì)量”字段,僅保留其余11個(gè)與葡萄酒理化性質(zhì)有關(guān)的字段。

我們先隨機(jī)指定任意要降維到的維度,得到各主成分的累積貢獻(xiàn)率??梢钥闯觯皟蓚€(gè)主成分解釋了原數(shù)據(jù)99.5%的方差,所以使用兩個(gè)主成分幾乎可以完全代替原來11個(gè)變量,我們確定紅酒數(shù)據(jù)的主成分?jǐn)?shù)為2。

我們指定降維維度dim = 2,調(diào)用PCA方法得到與紅葡萄酒數(shù)據(jù)相關(guān)的各矩陣,其中用于降維的兩個(gè)主成分如下,紅色框向量為第一主成分,藍(lán)色框向量為第二主成分。

最后,我們利用上述數(shù)據(jù)繪制圖像,得到去除與PCA無關(guān)字段后的特征值-字段索引值折線圖,見圖13。


圖13 紅葡萄酒字段索引值-特征值折線圖
同理,利用白葡萄酒數(shù)據(jù),我們可以得到白葡萄酒各主成分的累積貢獻(xiàn)率、前兩個(gè)主成分向量及其特征值-字段索引值折線圖。



圖14 白葡萄酒字段索引值-特征值折線圖
至此,我們完成了對紅葡萄酒和白葡萄酒數(shù)據(jù)的主成分分析。
3.6. 特征工程
特征工程的目的是最大限度地從原始數(shù)據(jù)中提取特征以供算法和模型使用。特征工程處理流程主要包括四個(gè)方面,我們在此僅關(guān)注特征處理和特征生成這兩方面。
特征工程對數(shù)據(jù)挖掘具有重要的意義。通常情況下,特征越好,其靈活性越強(qiáng),構(gòu)建的模型在參數(shù)非最優(yōu)的條件下仍然可以簡單而性能出色,
由于我們的數(shù)據(jù)集均為數(shù)字特征,因此我們后續(xù)均針對數(shù)字特征選用合適的方法進(jìn)行處理。
3.6.1. 數(shù)字特征處理
在數(shù)據(jù)挖掘過程中,不同評價(jià)指標(biāo)間往往具有不同的量綱和單位,這會(huì)影響到數(shù)據(jù)分析的結(jié)果。為了消除指標(biāo)之間量綱的影響,我們需要對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,使數(shù)據(jù)指標(biāo)具有可比性。
常見的數(shù)據(jù)標(biāo)準(zhǔn)化處理方法是Z-score,這是一種基于原始數(shù)據(jù)的均值和標(biāo)準(zhǔn)差,通過減去均值然后除以標(biāo)準(zhǔn)差實(shí)現(xiàn)中心化和正態(tài)分布的方法,公式可表示為:
x =(x - μ)/σ
我們利用sklearn庫中的preprocessing對數(shù)據(jù)進(jìn)行處理,得到紅葡萄酒和白葡萄酒的Z-score結(jié)果。



3.6.2. 數(shù)字特征構(gòu)建
根據(jù)2.1中數(shù)據(jù)的整體情況介紹及查閱到的相關(guān)資料,我們決定基于數(shù)據(jù)的11個(gè)與理化性質(zhì)有關(guān)的字段進(jìn)行新的數(shù)字特征構(gòu)建。
首先,我們選擇將fixed acidity(固定酸度)、volatile acidity(揮發(fā)性酸度)和pH(酸堿度)進(jìn)行合并,構(gòu)建total acidity(總酸度)特征。由于citric acid(檸檬酸)是固定酸中的一種,我們忽略該字段。
其次,我們選擇將residual sugar(殘?zhí)牵?、density(密度)和alcohol(酒精)進(jìn)行合并,構(gòu)建sugar alcohol percent(酒糖比例)特征。
此外,我們選擇將chlorides(氯化物)和sulphates(硫酸鹽)進(jìn)行合并,構(gòu)建mineral salt(礦物鹽)特征。
最后,我們選擇保留total sulfur dioxide(二氧化硫總量)特征和quality(質(zhì)量)特征。由于free sulfur dioxide(游離二氧化硫)是二氧化硫中的一種組分,我們忽略該字段。

根據(jù)國標(biāo),我們對新的特征定義如下(均基于Z-score標(biāo)準(zhǔn)化后的字段):

我們構(gòu)建的新特征含義如下:
總酸度特征反映葡萄酒的濃度及酸度,總酸度值越高(低),葡萄酒的口感越(不)酸。
酒糖比例特征反映葡萄酒的甜度及酒精度數(shù),酒糖比例越高(低),葡萄酒的酒精度數(shù)越高(低),口感越澀(甜)。
礦物鹽特征反映葡萄酒的礦物質(zhì)含量,礦物鹽量越高(低),葡萄酒的礦物質(zhì)總含量越高(低)。其中,礦物鹽特征的線性組合系數(shù)由原數(shù)據(jù)集兩字段的均值之比經(jīng)規(guī)范化處理后得到。
異常檢測
4.1.相關(guān)原理及概念
4.1.1. 異常檢測的概念
異常是數(shù)據(jù)集中的小比例數(shù)據(jù)對象,也被稱作離群點(diǎn)。
異常檢測也被稱作離群值檢測,即從整個(gè)數(shù)據(jù)集中識(shí)別出不同于大比例數(shù)據(jù)對象的離群對象以便進(jìn)行后續(xù)分析。在本次數(shù)據(jù)挖掘任務(wù)中,我們的目標(biāo)檢測異常為經(jīng)主成分分析后的葡萄酒數(shù)據(jù)中綜合得分較差的數(shù)據(jù),即原數(shù)據(jù)集中的劣質(zhì)葡萄酒。
4.1.2. 異常檢測的原理
異常檢測的原理是基于相似性度量進(jìn)行的相似度分析。
根據(jù)定義,異常是數(shù)據(jù)集中的小比例數(shù)據(jù)對象,它們通常表現(xiàn)為屬性值與多數(shù)對象差異較大或在多維空間中的位置分布與其余數(shù)據(jù)對象距離很遠(yuǎn),即與其他對象數(shù)據(jù)的相似程度比較低。
通常情況下,我們利用相似度指標(biāo)對數(shù)據(jù)進(jìn)行分析,找出與大多數(shù)據(jù)存在明顯差異的離群數(shù)據(jù),實(shí)現(xiàn)異常檢測。
常見的相似度指標(biāo)有歐幾里得距離、余弦相似度、皮爾遜相關(guān)系數(shù)、杰卡德相似度等。在本次數(shù)據(jù)挖掘任務(wù)中,我們得到的二維數(shù)據(jù)可以直觀地表示在二維平面上,用歐氏距離衡量數(shù)據(jù)點(diǎn)間的相似性。距離越近(遠(yuǎn)),數(shù)據(jù)點(diǎn)間的相似度越高(低)。
4.2.算法描述及相關(guān)案例
根據(jù)數(shù)據(jù)在主成分分析后只有兩個(gè)字段及其他特性,我們決定選用DBSCAN方法,利用聚類的思想實(shí)現(xiàn)離群值的檢測。

4.2.1.算法介紹
DBSCAN是極具代表性的基于密度的聚類算法。它將簇定義為密度相連的點(diǎn)的最大集合,能夠把具有足夠高密度的區(qū)域劃分為簇,是一種非常有效的聚類算法。

4.2.2.算法描述
DBSCAN算法的核心是“延伸”,其需要確定兩個(gè)參數(shù):
近鄰距離(Epsilon):一個(gè)點(diǎn)鄰域的半徑。
數(shù)據(jù)個(gè)數(shù)閾值(MinPts):鄰域內(nèi)至少需要包含數(shù)據(jù)點(diǎn)的個(gè)數(shù)。

根據(jù)以上兩個(gè)參數(shù),結(jié)合近鄰特征,我們把樣本點(diǎn)分成三類:
核心點(diǎn)(Core point):核心點(diǎn)在其近鄰距離內(nèi)的數(shù)據(jù)點(diǎn)個(gè)數(shù)不少于閾值。
邊緣點(diǎn)(Border point):邊緣點(diǎn)在其近鄰距離內(nèi)的數(shù)據(jù)點(diǎn)個(gè)數(shù)少于閾值,但其位于核心點(diǎn)的近鄰距離內(nèi)。
離群點(diǎn)(Outlier):離群點(diǎn)既不是核心點(diǎn)也不是邊緣點(diǎn)。

DBSCAN的一般步驟是(在已知Epsilon和MinPts的前提下):
選擇一個(gè)在其鄰域內(nèi)至少有MinPts的隨機(jī)點(diǎn),建立一個(gè)簇。
對核心點(diǎn)鄰域內(nèi)的各點(diǎn)進(jìn)行判斷,確定該點(diǎn)在其自己的鄰域內(nèi)是否有MinPts個(gè)數(shù)據(jù)點(diǎn) (包括點(diǎn)本身)。如果該點(diǎn)滿足標(biāo)準(zhǔn),即為另一個(gè)核心點(diǎn),將其加入本簇內(nèi),該簇得到擴(kuò)展;否則,它為邊緣點(diǎn),同樣將其加入本簇內(nèi)。
當(dāng)簇被邊緣點(diǎn)包圍時(shí),這個(gè)聚類簇已經(jīng)搜索完全。選擇一個(gè)新的隨機(jī)點(diǎn),重復(fù)以上過程以識(shí)別下一個(gè)簇。
當(dāng)所有簇均形成時(shí),聚類結(jié)束。

4.2.3.算法實(shí)現(xiàn)
基于上述算法描述,我們給出實(shí)現(xiàn)DBSCAN的偽代碼:

源自網(wǎng)絡(luò)
4.2.4.背景
為實(shí)現(xiàn)“確定輸入?yún)?shù)所需的相關(guān)知識(shí)最少、能夠發(fā)現(xiàn)任意形狀的聚類以及在大型數(shù)據(jù)庫上具有高效性”的目標(biāo),Ester 等人在1996年最初提出DBSCAN 算法,該算法基于密度的聚類概念,旨在發(fā)現(xiàn)任意形狀的聚類。DBSCAN只需要兩個(gè)輸入?yún)?shù)且支持用戶為其確定適當(dāng)?shù)闹怠?/p>

DBSCAN 自發(fā)表后受到了學(xué)界的一致推崇,眾多科學(xué)文獻(xiàn)引用該算法,同時(shí)DBSCAN 算法也是 PreDeCon 和 SUBCLU 等聚類算法中的一部分。

之后,DBSCAN算法不斷得到精進(jìn)與提高。1998年,Sander 和 Ester 提出了適用性更加廣泛的 GDBSCAN 算法;2007年,Birant 提出了用于時(shí)空數(shù)據(jù)處理的 ST-DBSCAN 算法;2010年,Kisilevich 等人提出了通過地理標(biāo)記照片數(shù)據(jù)挖掘地點(diǎn)和事件的P-DBSCAN算法。
2014年的時(shí)候,DBSCAN 算法獲得了2014 SIGKDD Test of Time Award。
4.2.5.應(yīng)用過程
我們將DBSCAN算法應(yīng)用到我們的葡萄酒異常檢測中。首先,我們介紹代碼中涉及到的自定義方法。
我們利用sklearn庫中的datasets模塊,定義loadDataSet方法。該方法可以導(dǎo)入txt格式的數(shù)據(jù)集,方便我們后續(xù)進(jìn)行DBSCAN運(yùn)算。

我們利用numpy庫及歐氏距離的公式,定義方法dist,計(jì)算并返回兩個(gè)點(diǎn)之間的歐式距離,該方法的參數(shù)為兩個(gè)元組。

我們根據(jù)DBSCAN算法的思路及偽代碼,定義dbscan方法,進(jìn)行聚類,該方法的參數(shù)為數(shù)據(jù)集、指定的近鄰距離及數(shù)據(jù)個(gè)數(shù)閾值。
在聚類過程中,我們借助列表unvisited和visited確定數(shù)據(jù)的訪問情況,并依據(jù)數(shù)據(jù)對象的鄰域數(shù)據(jù)點(diǎn)數(shù)與閾值的大小關(guān)系確定其為核心點(diǎn)、邊緣點(diǎn)還是噪聲點(diǎn)。
我們借助列表C記錄各數(shù)據(jù)索引最終對應(yīng)的簇索引值。對于未被聚類的數(shù)據(jù),其簇標(biāo)簽為-1;否則,其簇標(biāo)簽為非負(fù)整數(shù)k。

我們利用歐氏距離公式,定義select_MinPts方法,獲知數(shù)據(jù)集各點(diǎn)的k近鄰距離,以便后續(xù)我們通過繪制k近鄰有序距離圖找到拐點(diǎn)位置,確定DBSCAN參數(shù)的粗略范圍。

我們借助kneed庫中的KneeLocator模塊,定義knee_point_search方法檢測拐點(diǎn),獲知合理的參數(shù)Epsilon和minPts,以達(dá)到滿足實(shí)際需求的聚類效果。

在進(jìn)行DBSCAN前,我們首先需要合理地確定兩個(gè)參數(shù)的取值。通常情況下,我們繪制k近鄰有序距離圖,找出平滑曲線的拐點(diǎn)位置,對應(yīng)的距離即為Epsilon的值;對應(yīng)的數(shù)據(jù)個(gè)數(shù)+1即為MinPts的值。確定參數(shù)值的步驟如下:
首先,我們導(dǎo)入數(shù)據(jù)。以紅葡萄酒數(shù)據(jù)集為例,我們使用loadDataSet函數(shù)導(dǎo)入只包含兩個(gè)主成分屬性的紅酒數(shù)據(jù)集redForClustering.txt,借助select_MinPts方法獲知數(shù)據(jù)集的k近鄰距離列表,并按照距離大小從大到小排序。


通過繪制k近鄰距離排序折線圖,我們可以發(fā)現(xiàn)數(shù)據(jù)點(diǎn)的特性,進(jìn)而了解參數(shù)的粗略范圍。通過縮小折線圖的數(shù)據(jù)范圍,我們可以更加清晰地看到曲線上的數(shù)據(jù)點(diǎn)。



可以看出,數(shù)據(jù)集的拐點(diǎn)位置大致在([10-30],[10-15])間,但我們猶未可知拐點(diǎn)的具體坐標(biāo)值,因而我們選擇數(shù)學(xué)方法,通過計(jì)算得到拐點(diǎn)的精確坐標(biāo)。
利用knee_point_search方法,我們發(fā)現(xiàn)紅酒數(shù)據(jù)集存在拐點(diǎn)。


根據(jù)拐點(diǎn)坐標(biāo),我們選擇合適的Epsilon和minPts作為DBSCAN算法的參數(shù),并用indexList記錄各簇?cái)?shù)據(jù)點(diǎn)的索引值。

在此基礎(chǔ)上,我們繪制散點(diǎn)圖,用可視化的方法直觀判斷離群點(diǎn)。


可以看出,黃色的點(diǎn)形成的簇代表理化性質(zhì)正常紅葡萄酒,紫色的點(diǎn)則是我們本次異常檢測的目標(biāo)對象——理化性質(zhì)不符合要求的劣質(zhì)紅葡萄酒及噪聲點(diǎn)。
可以看出,右上角的紫色數(shù)據(jù)點(diǎn)為異常數(shù)據(jù),左下角的紫色點(diǎn)數(shù)據(jù)為噪聲數(shù)據(jù),但其均屬于我們要篩除的不符合要求的數(shù)據(jù)點(diǎn),故在此不作另外區(qū)分。
我們將根據(jù)簇索引值打印劣質(zhì)紅葡萄酒的索引值列表,以便后續(xù)篩選分析。


同理,我們可以得到白葡萄酒數(shù)據(jù)集的相關(guān)信息。


其中,右下角的紫色數(shù)據(jù)點(diǎn)為異常數(shù)據(jù),左上角的紫色點(diǎn)數(shù)據(jù)為噪聲數(shù)據(jù),但其同樣均屬于我們要篩除的不符合要求的數(shù)據(jù)點(diǎn),也不作另外區(qū)分。


至此,我們通過基于聚類的方法DBSCAN實(shí)現(xiàn)了異常檢測,找到了數(shù)據(jù)集中的離群點(diǎn),挖掘出了不應(yīng)流入市場的劣質(zhì)的紅、白葡萄酒。
4.2.6.結(jié)果分析
在利用DBSCAN進(jìn)行異常檢測的過程中,參數(shù)的選擇是非常重要的。我們根據(jù)k近鄰距離排序折線圖,可以粗略地估計(jì)參數(shù)并繪制散點(diǎn)圖觀察聚類情況,但參數(shù)不合理的算法得到的聚類效果非常不理想。

由于數(shù)據(jù)集均源自同一類酒,其理化性質(zhì)相對接近,數(shù)值本身不會(huì)存在大規(guī)模的極其明顯的差異,因而在數(shù)據(jù)密集區(qū)域內(nèi)出現(xiàn)多個(gè)簇的現(xiàn)象是不合理的。
我們通過計(jì)算拐點(diǎn),得到最合適的參數(shù)后繪制出的散點(diǎn)圖均只有若干代表“劣質(zhì)葡萄酒”的離群點(diǎn)和代表“正常葡萄酒”的數(shù)據(jù)點(diǎn)形成的單一簇,比較符合數(shù)據(jù)本身的描述。
因而我們可知,本次異常檢測得到的結(jié)果具有較高的可信度,是一次成功的異常檢測。
4.3.未來挑戰(zhàn)
異常檢測面臨著眾多挑戰(zhàn),包括但不限于:
異常的定義問題:現(xiàn)實(shí)生活中的異常通常沒有明確的定義,需要我們根據(jù)實(shí)際情況及應(yīng)用需求進(jìn)行合理定義。但復(fù)雜的現(xiàn)實(shí)因素使得我們很難挖掘并給出真正能夠解決問題的異常定義。此外,我們也缺乏對異常的發(fā)生模式的合理定義。
異常的未知性:異常與許多未知因素有關(guān),很多情況下它們直到真正發(fā)生時(shí)才為人所知,因而我們很難提前預(yù)知異常。例如,未知的突發(fā)行為、恐怖襲擊、詐騙和網(wǎng)絡(luò)入侵等。
異常的異構(gòu)性:異常是不規(guī)則的,一類異??赡鼙憩F(xiàn)出與另一類異常完全不同的異常特征。例如,在視頻監(jiān)控中,搶劫、交通事故和盜竊等異常事件在視覺上有很大差異;
異常的類別不均衡:異常是小比例的數(shù)據(jù)實(shí)例,正常實(shí)例通常占數(shù)據(jù)的絕大部分。因此,收集大量具有標(biāo)簽的異常實(shí)例是困難甚至不可能的。這導(dǎo)致在大多數(shù)情況下,我們無法獲得大規(guī)模的標(biāo)記數(shù)據(jù),異常檢測的難度也會(huì)隨之提高。
異常檢測的性能要求:數(shù)據(jù)包含的噪音會(huì)嚴(yán)重影響異常檢測的算法性能。此外,在時(shí)間序列的異常檢測中,其數(shù)據(jù)通常是非平穩(wěn)、非線性和動(dòng)態(tài)演化的,隨著時(shí)間序列長度的增加,異常檢測的計(jì)算復(fù)雜度也在不斷增長,對相關(guān)軟、硬件的性能提出了很高的要求。文章來源:http://www.zghlxwxcb.cn/news/detail-440934.html
源代碼及數(shù)據(jù):https://github.com/YourHealer/DM-Wine-Quality-Analysis.git文章來源地址http://www.zghlxwxcb.cn/news/detail-440934.html
到了這里,關(guān)于【數(shù)據(jù)挖掘】葡萄酒質(zhì)量分析及異常值檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!