verum ipsum factum

sudillap's blog

ワインの味(美味しさのグレード)は予測できるか?(1)

データ分析の威力を色々な実例を挙げて述べた「その数学が戦略を決める」(イアン・エアーズ著)を読まれた方も多いと思います*1

その中に、ワイン好きの経済学者オーリー・アッシェンフェルター(Orley Ashenfelter, プリンストン大学)がワインの質を計算する式

ワインの質 = 12.145+0.00117 × 冬の降雨+0.0614 × 育成期平均気温
      -0.00386 × 収穫期降雨

により、伝統的なワイン批評家たちに「このやり方自体バカげていてまともには受け取れない」とまで言われたことが書かれています。

この式はワインの値段を予測する式ですが、ではワインの味を式で表すことは可能なのでしょうか?

実は可能で、ワインに含まれている成分(化学物質)の濃度などが分かれば、ワインの味(専門家が付けたグレード)を式で表すことができます。それが次の式です。
ちなみに、ワインの味(グレード)は、0(とてもまずい)から10(絶品)まであります。

  • 赤ワイン

ワインの味(グレード)=0.026×(酒石酸濃度)-0.96×(酢酸濃度)
      -0.10×(クエン酸濃度)+0.014×(残留糖分濃度)
      -2.3×(塩化ナトリウム濃度)+0.0054×(遊離亜硫酸濃度)
      -0.0041×(総亜硫酸濃度)-17×(密度)-0.50×(pH)
      +0.91×(硫酸カリウム濃度)+0.26×(アルコール度数)+22

  • 白ワイン

ワインの味(グレード)=0.13×(酒石酸濃度)-1.9×(酢酸濃度)
      -0.0050×(クエン酸濃度)+0.10×(残留糖分濃度)
      -0.12×(塩化ナトリウム濃度)+0.0048×(遊離亜硫酸濃度)
      +0.000076×(総亜硫酸濃度)-210×(密度)+0.86×(pH)
      +0.68×(硫酸カリウム濃度)+0.14×(アルコール度数)+209

ワインの成分さえ分かれば、ワイン専門家による評価の代わりに、この式を使ってワインの味を数値的に求めることができます。実際、この式の予測精度は約5~6割です。後述しますがより高度な手法を使えば精度は約7割となります(グレードをピタリと予測するのではなくグレード±1までなら正解とすれば正解率は約9割になります)。

さらには、この式を使えばどの成分を増やせばまたは減らせばワインをより美味しくできるかがわかります。
実際、これらの成分の中にはワインの製造過程でコントロールできるものがあります。たとえば、収穫前のぶどうの糖度をモニターすることによりワインのアルコール度数を高くしたり低くしたりできますし、残留糖分は、イースト菌(酵母菌)による糖の発酵を一時的に止めることで増やすことができます。


それでは、次からワインの成分から味(グレード)を予測するデータ分析の方法について述べます。

ワインのデータについて

データはUCI Machine Learning Repository(Wine Quality Data Set)から入手できます。

このデータは、ポルトガルワインの一種である、西北端の大西洋に面するミーニョ(Minho)地方で作られたヴィーニョ・ヴェルデ(Vinho Verde)を測定したデータから構成されています。

データセットは赤ワインと白ワインの2種類のデータ群から構成されており、ワイン(銘柄名は不明)ごとに測定された11種類の成分データとそのワインの味を評価したグレード(数値)からなっています。なお、グレードは3人以上のワイン査定士が評価した結果の中間値です(グレードは0(とてもまずい)から10(絶品)まで)(詳細はCortezら(2009)を参照してください)。
データサイズはそれぞれ1599、4898です。変数一覧はつぎのとおりです。

属性(単位) 英語表記
ワインの味(グレード) quality; from 0 (very bad) to 10 (excellent)
酒石酸濃度($g/dm^3$) fixed acidity ($g$(tartaric acid)/$dm^3$)
酢酸濃度($g/dm^3$) volatile acidity ($g$(acetic acid)/$dm^3$)
クエン酸濃度($g/dm^3$) citric acid ($g/dm^3$)
残留糖分濃度($g/dm^3$) residual sugar ($g/dm^3$)
塩化ナトリウム濃度($g/dm^3$) chlorides ($g$(sodium chloride)/$dm^3$)
遊離亜硫酸濃度($mg/dm^3$) free sulfur dioxide ($mg/dm^3$)
総亜硫酸濃度($mg/dm^3$) total sulfur dioxide ($mg/dm^3$)
密度($g/dm^3$) density ($g/dm^3$)
pH pH
硫酸カリウム濃度($g/dm^3$) sulphates ($g$(potassium sulphate)/$dm^3$)
アルコール度数(% vol.) alcohol (% vol.)

今後は、基本的に英語表記の属性名を用います。

各種記述統計量は次のとおりです。

  • 赤ワイン
                     nobs NAs Minimum   Maximum 1. Quartile 3. Quartile      Mean   Median       Sum  SE Mean  LCL Mean  UCL Mean    Variance     Stdev Skewness  Kurtosis
fixed.acidity        1599   0 4.60000  15.90000      7.1000    9.200000  8.319637  7.90000 13303.100 0.043541  8.234234  8.405041    3.031416  1.741096 0.980908  1.119699
volatile.acidity     1599   0 0.12000   1.58000      0.3900    0.640000  0.527821  0.52000   843.985 0.004478  0.519037  0.536604    0.032062  0.179060 0.670333  1.212689
citric.acid          1599   0 0.00000   1.00000      0.0900    0.420000  0.270976  0.26000   433.290 0.004872  0.261420  0.280531    0.037947  0.194801 0.317740 -0.793046
residual.sugar       1599   0 0.90000  15.50000      1.9000    2.600000  2.538806  2.20000  4059.550 0.035259  2.469646  2.607965    1.987897  1.409928 4.532140 28.485020
chlorides            1599   0 0.01200   0.61100      0.0700    0.090000  0.087467  0.07900   139.859 0.001177  0.085158  0.089775    0.002215  0.047065 5.669694 41.525963
free.sulfur.dioxide  1599   0 1.00000  72.00000      7.0000   21.000000 15.874922 14.00000 25384.000 0.261586 15.361835 16.388009  109.414884 10.460157 1.248222  2.007221
total.sulfur.dioxide 1599   0 6.00000 289.00000     22.0000   62.000000 46.467792 38.00000 74302.000 0.822640 44.854225 48.081360 1082.102373 32.895324 1.512689  3.785676
density              1599   0 0.99007   1.00369      0.9956    0.997835  0.996747  0.99675  1593.798 0.000047  0.996654  0.996839    0.000004  0.001887 0.071154  0.922500
pH                   1599   0 2.74000   4.01000      3.2100    3.400000  3.311113  3.31000  5294.470 0.003861  3.303540  3.318686    0.023835  0.154386 0.193320  0.795919
sulphates            1599   0 0.33000   2.00000      0.5500    0.730000  0.658149  0.62000  1052.380 0.004239  0.649834  0.666463    0.028733  0.169507 2.424118 11.661529
alcohol              1599   0 8.40000  14.90000      9.5000   11.100000 10.422983 10.20000 16666.350 0.026650 10.370710 10.475256    1.135647  1.065668 0.859214  0.191659
quality              1599   0 3.00000   8.00000      5.0000    6.000000  5.636023  6.00000  9012.000 0.020196  5.596410  5.675635    0.652168  0.807569 0.217393  0.287915
  • 白ワイン
                     nobs NAs Minimum   Maximum 1. Quartile 3. Quartile       Mean    Median        Sum  SE Mean   LCL Mean   UCL Mean    Variance     Stdev Skewness  Kurtosis
fixed.acidity        4898   0 3.80000  14.20000    6.300000      7.3000   6.854788   6.80000  33574.750 0.012058   6.831149   6.878426    0.712114  0.843868 0.647355  2.166627
volatile.acidity     4898   0 0.08000   1.10000    0.210000      0.3200   0.278241   0.26000   1362.825 0.001440   0.275418   0.281065    0.010160  0.100795 1.576014  5.081904
citric.acid          4898   0 0.00000   1.66000    0.270000      0.3900   0.334192   0.32000   1636.870 0.001729   0.330801   0.337582    0.014646  0.121020 1.281135  6.163631
residual.sugar       4898   0 0.60000  65.80000    1.700000      9.9000   6.391415   5.20000  31305.150 0.072473   6.249336   6.533494   25.725770  5.072058 1.076434  3.462415
chlorides            4898   0 0.00900   0.34600    0.036000      0.0500   0.045772   0.04300    224.193 0.000312   0.045160   0.046384    0.000477  0.021848 5.020254 37.508493
free.sulfur.dioxide  4898   0 2.00000 289.00000   23.000000     46.0000  35.308085  34.00000 172939.000 0.243009  34.831679  35.784491  289.242720 17.007137 1.405883 11.447515
total.sulfur.dioxide 4898   0 9.00000 440.00000  108.000000    167.0000 138.360657 134.00000 677690.500 0.607239 137.170196 139.551119 1806.085491 42.498065 0.390471  0.568587
density              4898   0 0.98711   1.03898    0.991723      0.9961   0.994027   0.99374   4868.746 0.000043   0.993944   0.994111    0.000009  0.002991 0.977174  9.777368
pH                   4898   0 2.72000   3.82000    3.090000      3.2800   3.188267   3.18000  15616.130 0.002158   3.184037   3.192496    0.022801  0.151001 0.457502  0.527568
sulphates            4898   0 0.22000   1.08000    0.410000      0.5500   0.489847   0.47000   2399.270 0.001631   0.486650   0.493044    0.013025  0.114126 0.976595  1.586208
alcohol              4898   0 8.00000  14.20000    9.500000     11.4000  10.514267  10.40000  51498.880 0.017584  10.479795  10.548739    1.514427  1.230621 0.487044 -0.699877
quality              4898   0 3.00000   9.00000    5.000000      6.0000   5.877909   6.00000  28790.000 0.012655   5.853101   5.902718    0.784356  0.885639 0.155701  0.213767

属性ごとの箱ひげ図は次のとおりです。

  • 赤ワイン

f:id:sudillap:20130425234216p:plain

  • 白ワイン

f:id:sudillap:20130425234029p:plain

ワインの味(グレードquality)のヒストグラムはつぎのとおりです。グレードは0から10までの値を取ることができますが、このワインデータに含まれているサンプルには、3~8(赤ワイン)、3~9(白ワイン)のデータしかないことがわかります。
f:id:sudillap:20130427003253p:plainf:id:sudillap:20130427003258p:plain

それでは実際に分析を行なっていきます*2

*1:訳書では「super crunchers」を「絶対計算者」と訳していますが訳語に非常に違和感を感じます。本書で取り上げられている人達は統計的・確率的手法で分析しているため「絶対」とは真逆だと思うからです。今流行のデータサイエンティストと訳したほうがいいのではないかと思います。

*2:当初、属性residual.sugar, chlorides, free.sulfur.dioxide, total.sulfur.dioxide, sulphatesについてはlog変換した属性を用いたのですが、変換前よりわずかに精度が良くなるだけでしたのでlog変換しないときの結果のみを示します

ワインの味(美味しさのグレード)は予測できるか?(2)

それでは実際に分析を行なっていきます。

分析方法

データ分析により、ワインの成分データから味のグレード(属性quality)を求めるモデルを作成します。
グレードqualityは0(とてもまずい)から10(絶品)までの値をとる質的変数(順序尺度)とみなすのが原則ですが、分析の際には量的変数として扱います。

したがって回帰モデルを作成することによりデータを分析すれば良いことになります。用いた手法は、線形回帰モデル(交互作用あり・なし)、サポートベクター回帰(SVR、support vector regression)、ランダムフォレスト(random forest)です*1

もちろん、グレードqualityを質的変数とみなすことにより、分類問題として分析することも可能です。実際は、あまり予測精度に違いはありませんでしたので結果は省略します。

また、事前につぎの処理をデータに施しておきます。

  • 標準化
  • 元データを2/3を訓練データに、1/3をテストデータに分割
  • 外れ値の除去(LOF(local outlier factor)を用います)

この処理を施した結果、データサイズはつぎのようになりました。

ワイン 訓練データサイズ テストデータサイズ
赤ワイン 1062 533
白ワイン 3263 1633

訓練データを用いてモデルを作成し、テストデータを用いて予測精度を評価します(教師あり学習です)。

ところで、モデルの予測結果は実数になるため、これを0から10までの整数に変換する必要があります。この記事ではCortezら(2009)と同様な方法で整数に変換します。

$i$番目のテストデータのquality(正解のグレード)を$y_i$、予測結果(実数)を$\hat{y}_i$とします。このときqualityの予測クラス(整数で、予測グレードのこと)$p_i$はつぎの式で計算します。
$$
p_i =
\begin{cases}
y_i, & \text{if } |y_i - \hat{y}_i| \leqq T \\
\lfloor \hat{y}_i + 0.5 \rfloor, & \text{if } |y_i - \hat{y}_i| > T
\end{cases}
$$
ここで、$\lfloor x \rfloor$は床関数で、上の2番めの式は難しく見えますが、実際は単純な四捨五入のことです。

上の1番目の式に現れる$T$はしきい値で、0.5または1とします。それぞれの意味はつぎのとおりです。

  • $T=0.5$のときは予測結果を四捨五入してqualityの予測クラスを求めます。
  • $T=1$のときは予測結果と正解データの差が1以下であれば正解とみなします(すなわち評価が甘くなります)。

たとえば、正解が5、予測結果が5.8とすると、$T=0.5$のときは四捨五入して予測クラスは6となります。一方、$T=1$のときは正解と予測結果の差は0.8(<1)なので予測クラスは(6ではなく)5となります。また、予測結果が6.1のばあいは、正解との差は1.1(>1)なので、四捨五入して予測クラスは6となります。

$T=1$とすると評価基準が甘くなります。しかし、もともと味のグレードqualityは、3人以上のワイン査定人による評価結果の中間値を取ったものですので、正解のグレードと予測結果が1だけ異なっても正解とみなして問題ないと考えられます。


線形回帰モデル

まずはシンプルな線形回帰モデルでワインの味qualityを予測します。

まず属性間に多重共線性があるかどうか、VIF(分散拡大要因)を計算しました。

●赤ワイン
       fixed.acidity     volatile.acidity          citric.acid       residual.sugar            chlorides  free.sulfur.dioxide total.sulfur.dioxide              density                   pH            sulphates              alcohol 
            7.630214             1.790090             3.212295             1.687765             1.490558             2.061621             2.273877             5.993643             3.319835             1.402595             2.820069 
●白ワイン
       fixed.acidity     volatile.acidity          citric.acid       residual.sugar            chlorides  free.sulfur.dioxide total.sulfur.dioxide              density                   pH            sulphates              alcohol 
            3.260098             1.132510             1.151530            15.216226             1.242013             1.782381             2.323432            38.632377             2.469470             1.171794            11.087115 

白ワインのdensity、alcoholのVIFが10を超えているため多重共線性を起こす可能性はありますが、ここでは全属性を用いて回帰モデルを作成します。

つぎに最適な重回帰モデルをステップワイズ法でモデル選択(AICで評価)しました。重回帰モデルの変数ごとの係数はつぎのとおりです。
なお、各変数の係数が本記事の冒頭で書いた式と異なるのは、データを標準化しているためです(冒頭に書いた式はわかりやすさのため標準化していないデータによる式です)。

●赤ワイン
Call:
lm(formula = .outcome ~ fixed.acidity + volatile.acidity + citric.acid + 
    residual.sugar + chlorides + free.sulfur.dioxide + total.sulfur.dioxide + 
    density + pH + sulphates + alcohol, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
 -2.34418 -0.38125 -0.04248  0.47055  2.11543 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)           5.617422   0.020111 279.317  < 2e-16 ***
fixed.acidity         0.029250   0.054355   0.538   0.5906    
volatile.acidity     -0.165753   0.027092  -6.118 1.33e-09 ***
citric.acid          -0.012419   0.035889  -0.346   0.7294    
residual.sugar        0.007935   0.026037   0.305   0.7606    
chlorides            -0.096093   0.023713  -4.052 5.45e-05 ***
free.sulfur.dioxide   0.064935   0.028752   2.258   0.0241 *  
total.sulfur.dioxide -0.143063   0.031568  -4.532 6.52e-06 ***
density              -0.022065   0.048730  -0.453   0.6508    
pH                   -0.084751   0.036164  -2.344   0.0193 *  
sulphates             0.159759   0.023963   6.667 4.21e-11 ***
alcohol               0.281640   0.033668   8.365  < 2e-16 ***
 ---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.6543 on 1050 degrees of freedom
Multiple R-squared: 0.3413,     Adjusted R-squared: 0.3344 
F-statistic: 49.45 on 11 and 1050 DF,  p-value: < 2.2e-16 

●白ワイン
Call:
lm(formula = .outcome ~ fixed.acidity + volatile.acidity + citric.acid + 
    residual.sugar + chlorides + free.sulfur.dioxide + total.sulfur.dioxide + 
    density + pH + sulphates + alcohol, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
 -3.4069 -0.5082 -0.0447  0.4634  3.0696 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)           5.890e+00  1.322e-02 445.658  < 2e-16 ***
fixed.acidity         1.085e-01  2.337e-02   4.642 3.58e-06 ***
volatile.acidity     -1.924e-01  1.432e-02 -13.433  < 2e-16 ***
citric.acid           5.967e-05  1.397e-02   0.004 0.996592    
residual.sugar        5.205e-01  5.297e-02   9.825  < 2e-16 ***
chlorides            -2.557e-03  1.514e-02  -0.169 0.865939    
free.sulfur.dioxide   8.593e-02  1.819e-02   4.723 2.42e-06 ***
total.sulfur.dioxide -3.577e-03  2.026e-02  -0.177 0.859869    
density              -6.403e-01  8.385e-02  -7.636 2.93e-14 ***
pH                    1.324e-01  2.043e-02   6.481 1.05e-10 ***
sulphates             7.742e-02  1.457e-02   5.314 1.14e-07 ***
alcohol               1.604e-01  4.342e-02   3.694 0.000225 ***
 ---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.7545 on 3251 degrees of freedom
Multiple R-squared: 0.2993,     Adjusted R-squared: 0.2969 
F-statistic: 126.2 on 11 and 3251 DF,  p-value: < 2.2e-16 

このモデルのもとでテストデータを用いてワインの味qualityを予測しました。予測結果の分割表はつぎのとおりです。なお、pred.halfは$T=0.5$の予測結果、pred.oneは$T=1$の予測結果です。

●赤ワイン
       pred.half
quality   4   5   6   7
      3   1   3   1   0
      4   0  10   3   0
      5   1 162  50   0
      6   0  62 151   8
      7   0   2  60  14
      8   0   0   4   1

       pred.one
quality   4   5   6   7
      3   1   3   1   0
      4   1   9   3   0
      5   0 207   6   0
      6   0   8 213   0
      7   0   2  22  52
      8   0   0   4   1

●白ワイン
       pred.half
quality   4   5   6   7
      3   1   2   4   1
      4   2  28  20   0
      5   2 203 293   9
      6   0 111 571  65
      7   0  10 195  74
      8   0   0  27  14
      9   0   0   0   1

       pred.one
quality   4   5   6   7   8
      3   1   2   4   1   0
      4  14  16  20   0   0
      5   0 423  75   9   0
      6   0   8 738   1   0
      7   0  10  63 206   0
      8   0   0  27  12   2
      9   0   0   0   1   0

結果をまとめるとつぎの表になります。

  • 赤ワイン
しきい値T 正解率 精度(quality:4~7) 再現率(quality:3~8)
0.5 0.614 0.000 0.678 0.561 0.609 0.000 0.000 0.761 0.683 0.184 0.000
1 0.887 0.500 0.904 0.855 0.981 0.000 0.077 0.972 0.964 0.684 0.000
  • 白ワイン
しきい値T 正解率 精度(quality:4~7) 再現率(quality:3~9)
0.5 0.521 0.400 0.573 0.514 0.451 0.000 0.040 0.400 0.764 0.265 0.000 0.000
1 0.847 0.933 0.922 0.796 0.896 1.000 0.000 0.280 0.834 0.988 0.738 0.049 0.000

正解率は、約5~6割(しきい値0.5)、約8~9割(しきい値1)です。

また、交互作用を考慮して線形回帰モデルを作成しましたが、予測性能は交互作用なしの場合とほぼ同じ(わずかによい)でしたので結果は省略します。

サポートベクターマシンサポートベクター回帰

$\epsilon$サポートベクター回帰で予測します。カーネルはRBF(パラメータは$\gamma$)を用いました。サポートベクターマシンについてはこちらを参照してください。

サポートベクター回帰にはいくつかのパラメータがありますので、最適なパラメータを5分割の交差検証で選択しました。探索したパラメータ空間は、$C \in \{2^{-5}, 2^{-4}, \ldots, 2^{5}\}, \gamma \in \{-15, -13, \ldots,3\}, \epsilon \in \{2^{-5}, 2^{-4}, \ldots, 2^{-1}\}$です。
最適なパラメータはつぎのとおりでした。

$C$ $\gamma$ $\epsilon$
赤ワイン 1 0.125 0.25
白ワイン 2 0.125 0.25

このモデルのもとでテストデータを用いてワインの味qualityを予測しました。予測結果の分割表はつぎのとおりです。なお、pred.halfは$T=0.5$の予測結果、pred.oneは$T=1$の予測結果です。

●赤ワイン
       pred.half
quality   4   5   6   7
      3   1   4   0   0
      4   0  11   2   0
      5   0 177  36   0
      6   0  67 143  11
      7   0   3  50  23
      8   0   0   5   0

       pred.one
quality   4   5   6   7
      3   1   4   0   0
      4   1  10   2   0
      5   0 207   6   0
      6   0   1 220   0
      7   0   3  14  59
      8   0   0   5   0

●白ワイン
       pred.half
quality   4   5   6   7   8
      3   0   6   2   0   0
      4   8  32  10   0   0
      5   5 308 184  10   0
      6   2 150 526  69   0
      7   0   6 150 122   1
      8   0   2  11  27   1
      9   0   0   0   1   0

       pred.one
quality   4   5   6   7   8
      3   0   6   2   0   0
      4  22  18  10   0   0
      5   0 448  49  10   0
      6   2  15 726   4   0
      7   0   6  48 225   0
      8   0   2  11  22   6
      9   0   0   0   1   0

結果をまとめるとつぎの表になります。

  • 赤ワイン
しきい値T 正解率 精度(quality:4~7) 再現率(quality:3~8)
0.5 0.644 0.000 0.676 0.606 0.676 0.000 0.000 0.831 0.647 0.303 0.000
1 0.914 0.500 0.920 0.891 1.000 0.000 0.077 0.972 0.995 0.776 0.000
  • 白ワイン
しきい値T 正解率 精度(quality:4~8) 再現率(quality:3~9)
0.5 0.591 0.533 0.611 0.596 0.533 0.500 0.000 0.160 0.607 0.704 0.437 0.024 0.000
1 0.874 0.917 0.905 0.858 0.859 1.000 0.000 0.440 0.884 0.972 0.806 0.146 0.000

正解率は、約6割(しきい値0.5)、約9割(しきい値1)で、線形回帰モデルより予測結果が良いことが分かります。

ランダムフォレスト

ランダムフォレスト回帰で予測します。

このモデルのもとでテストデータを用いてワインの味qualityを予測しました。分割表はつぎのとおりです。なお、pred.halfは$T=0.5$の予測結果、pred.oneは$T=1$の予測結果です。

●赤ワイン
       pred.half
quality   4   5   6   7
      3   1   4   0   0
      4   0  11   2   0
      5   2 176  35   0
      6   0  54 154  13
      7   0   3  38  35
      8   0   0   3   2

       pred.one
quality   4   5   6   7   8
      3   1   4   0   0   0
      4   2   9   2   0   0
      5   0 209   4   0   0
      6   0   1 220   0   0
      7   0   3  11  62   0
      8   0   0   3   1   1

●白ワイン
       pred.half
quality   4   5   6   7   8
      3   0   4   4   0   0
      4   3  36  11   0   0
      5   0 346 156   5   0
      6   0 108 590  49   0
      7   0   2 125 152   0
      8   0   1   6  26   8
      9   0   0   0   1   0

       pred.one
quality   4   5   6   7   8
      3   0   4   4   0   0
      4  24  15  11   0   0
      5   0 457  45   5   0
      6   0   6 740   1   0
      7   0   2  27 250   0
      8   0   1   6  16  18
      9   0   0   0   1   0

結果をまとめるとつぎの表になります。

  • 赤ワイン
しきい値T 正解率 精度(quality:4~7) 再現率(quality:3~8)
0.5 0.685 0.000 0.710 0.664 0.700 0.000 0.000 0.826 0.697 0.461 0.000
1 0.927 0.667 0.925 0.917 0.984 1.000 0.000 0.154 0.981 0.995 0.816 0.200
  • 白ワイン
しきい値T 正解率 精度(quality:4~8) 再現率(quality:3~9)
0.5 0.673 1.000 0.696 0.661 0.652 1.000 0.000 0.060 0.682 0.790 0.545 0.195 0.000
1 0.912 1.000 0.942 0.888 0.916 1.000 0.000 0.480 0.901 0.991 0.896 0.439 0.000

正解率は、約7割(しきい値0.5)、約9割(しきい値1)で、線形回帰モデルやサポートベクターマシンより予測結果が良いことが分かります。

予測結果と正解の散布図(ジッターあり)を示します。
f:id:sudillap:20130427171336p:plainf:id:sudillap:20130427171341p:plain

ランダムフォレストでは変数ごとの重要度を計算することができます。Cortezら(2009)の結果と異なるのですが、データを標準化したためと重要度の計算手法が異なるためと思われます。
f:id:sudillap:20130427171355p:plainf:id:sudillap:20130427171400p:plain



参考文献

Bache, K. & Lichman, M. (2013). UCI Machine Learning Repository. Irvine, CA: University of California, School of Information and Computer Science.

P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis.
Modeling wine preferences by data mining from physicochemical properties.
In Decision Support Systems, Elsevier, 47(4):547-553. ISSN: 0167-9236.

*1:Cortezら(2009)が採用した手法は、線形回帰モデル、サポートベクター回帰ニューラルネットワークです