# 5.6 RuleFit

Friedman ve Popescu'nun (2008)25 geliştirdiği **RuleFit algoritması**, karar kuralları biçiminde otomatik olarak algılanan etkileşim etkilerini içeren seyrek doğrusal modeller öğrenir.

Doğrusal regresyon modeli, özellikler arasındaki etkileşimleri hesaba katmaz. Peki, doğrusal modeller kadar basit ve anlaşılır, ancak aynı zamanda özellik etkileşimlerini de entegre eden bir modelimiz olsaydı nasıl olurdu? **RuleFit** bu boşluğu doldurur. RuleFit, orijinal özelliklerle birlikte bir dizi yeni özelliği de içeren bir seyrek doğrusal model öğrenir. Bu yeni özellikler, orijinal özellikler arasındaki etkileşimleri yakalar. RuleFit, bu özellikleri otomatik olarak karar ağaçlarından oluşturur. Bir ağaçtaki her bir yol, bölme kararlarını bir kuralda birleştirerek bir karar kuralına dönüştürülebilir. Düğüm tahminleri göz ardı edilir ve yalnızca bölmeler karar kurallarında kullanılır:

<figure><img src="https://2544487293-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFwj3Lgpiv5AroGHyRyJZ%2Fuploads%2FcSKDQubglNLOfzlG79cu%2Fimage.png?alt=media&#x26;token=094febe0-862b-4d09-8a39-e5a3d08a54a8" alt=""><figcaption><p><strong>Figür 5.21:</strong> 3 terminal düğüme sahip bir ağaçtan 4 kural oluşturulabilir.</p></figcaption></figure>

Bu karar ağaçları nereden geliyor? Ağaçlar, ilgilenilen sonucu tahmin etmek için eğitilir. Bu, bölmelerin tahmin görevi için anlamlı olmasını sağlar. RuleFit için birçok ağaç üreten herhangi bir algoritma kullanılabilir, örneğin bir rastgele orman (random forest). Her bir ağaç, seyrek bir doğrusal regresyon modelinde (Lasso) ek özellikler olarak kullanılan karar kurallarına ayrıştırılır.

**RuleFit makalesi**, Boston konut verilerini bu durumu açıklamak için kullanır: Amaç, bir Boston mahallesindeki ortalama ev değerini tahmin etmektir. RuleFit tarafından oluşturulan kurallardan biri şudur:\
**EĞER oda sayısı > 6.64 VE azot dioksit konsantrasyonu < 0.67 İSE 1, DEĞİLSE 0.**

RuleFit ayrıca tahminler için önemli olan doğrusal terimleri ve kuralları belirlemeye yardımcı olan bir özellik önemi ölçüsü sunar. Özellik önemi, regresyon modelinin ağırlıklarından hesaplanır. Bu önem ölçüsü, orijinal özellikler için (özelliklerin “ham” formunda ve muhtemelen birçok karar kuralında kullanıldığı durumlarda) toplanabilir.

RuleFit ayrıca, bir özelliği değiştirerek tahmindeki ortalama değişimi gösteren kısmi bağımlılık grafikleri sunar. Kısmi bağımlılık grafiği, modelden bağımsız bir yöntemdir ve herhangi bir modelle kullanılabilir. Bu grafikler, kitabın [kısmi bağımlılık grafikleriyle](https://ozancans-organization.gitbook.io/yorumlanabilir-makine-ogrenmesi/8.kuresel-model-agnostik-metotlar-global-model-agnostic-methods/8.1-kismi-bagimlilik-grafigi-partial-dependency-plot) ilgili bölümünde açıklanmıştır.

#### 5.6.1 Yorumlama ve Örnek

RuleFit sonunda bir doğrusal model tahmin ettiği için yorumlama, "normal" doğrusal modellerle aynıdır. Tek fark, modelin karar kurallarından türetilen yeni özelliklere sahip olmasıdır. Karar kuralları, ikili özelliklerdir: Bir değerin 1 olması, kuralın tüm koşullarının sağlandığı anlamına gelir; aksi takdirde değer 0 olur. RuleFit’teki doğrusal terimler için yorumlama, doğrusal regresyon modellerindekiyle aynıdır: Eğer özellik bir birim artarsa, tahmin edilen sonuç, özelliğin ağırlığı kadar değişir.

Bu örnekte, RuleFit’i belirli bir gün için kiralanan bisiklet sayısını tahmin etmek amacıyla kullanıyoruz. Aşağıdaki tablo, RuleFit tarafından oluşturulan kurallardan beşini, bunların **Lasso ağırlıkları** ve **önemleri** ile birlikte göstermektedir. Hesaplama bu bölümün ilerleyen kısımlarında açıklanacaktır.

| Description                                               | Weight | Importance |
| --------------------------------------------------------- | ------ | ---------- |
| days\_since\_2011 > 111 & weathersit in (“GOOD”, “MISTY”) | 795    | 303        |
| 37.25 <= hum <= 90                                        | -20    | 278        |
| temp > 13 & days\_since\_2011 > 554                       | 676    | 239        |
| 4 <= windspeed <= 24                                      | -41    | 204        |
| days\_since\_2011 > 428 & temp > 5                        | 356    | 174        |

En önemli kural şuydu: **“days\_since\_2011 > 111 & weathersit in (‘GOOD’, ‘MISTY’)”** ve buna karşılık gelen ağırlık 795’tir. Bunun yorumu şudur: **Eğer days\_since\_2011 > 111 ve weathersit (‘GOOD’, ‘MISTY’) koşulları sağlanırsa, diğer tüm özellik değerleri sabit kaldığında tahmin edilen bisiklet sayısı 795 artar.**

Toplamda, orijinal 8 özelliğe dayalı olarak 278 kural oluşturulmuştur. Oldukça fazla! Ancak, **Lasso** sayesinde, bu 278 kuraldan yalnızca 59’unun ağırlığı 0’dan farklıdır.

Küresel özellik önemlerini hesaplamak, sıcaklık ve zaman eğiliminin en önemli özellikler olduğunu ortaya koymuştur:

\\

<figure><img src="https://2544487293-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFwj3Lgpiv5AroGHyRyJZ%2Fuploads%2Fn4S4tiXbyyFJFJTGA1cq%2Fimage.png?alt=media&#x26;token=06f8a70a-9164-4ac0-bd85-91f4290b265f" alt=""><figcaption><p><strong>Figür 5.22:</strong> Bisiklet sayısını tahmin eden bir RuleFit modeli için özellik önem ölçütleri. Tahminler için en önemli özellikler sıcaklık ve zaman trendiydi.</p></figcaption></figure>

Özellik önemi ölçümü, ham özellik teriminin önemini ve özelliğin yer aldığı tüm karar kurallarının önemini içerir.

#### Yorumlama Şablonu

Yorumlama doğrusal modellere benzerdir: Tahmin edilen sonuç, özellik xj bir birim değiştiğinde, diğer tüm özellikler sabit kalmak koşuluyla,  $$β\_j$$ kadar değişir. Karar kuralının ağırlık yorumu özel bir durumdur: Eğer bir karar kuralı  $$r\_k$$​'nın tüm koşulları sağlanıyorsa, tahmin edilen sonuç, doğrusal modeldeki  $$r\_k$$ ​ kuralının öğrenilen ağırlığı  $$α\_k$$​ kadar değişir.

Sınıflandırma (doğrusal regresyon yerine lojistik regresyon kullanılarak): Eğer karar kuralı   $$r\_k$$​'nın tüm koşulları sağlanıyorsa, olay/olay olmama oranı,  $$α\_k$$​ faktörü ile değişir.

### 5.6.2 Teori

RuleFit algoritmasının teknik detaylarına daha derinlemesine bakalım. RuleFit iki bileşenden oluşur: İlk bileşen, karar ağaçlarından “kurallar” oluşturur ve ikinci bileşen, orijinal özellikler ve yeni kurallarla bir doğrusal model oluşturur (bu yüzden adı “RuleFit”tir).

#### Adım 1: Kural oluşturma

Bir kural nasıl görünür? Algoritma tarafından oluşturulan kurallar basit bir forma sahiptir. Örneğin:

\
**EĞER x2 < 3 VE x5 < 7 İSE 1, DEĞİLSE 0.**

Kurallar, karar ağaçlarını ayrıştırarak oluşturulur: Bir ağaçtaki herhangi bir düğüme giden bir yol, bir karar kuralına dönüştürülebilir. Kurallar için kullanılan ağaçlar hedef sonucu tahmin etmek için oluşturulur. Bu nedenle bölmeler ve ortaya çıkan kurallar, ilgilendiğiniz sonucu tahmin etmek için optimize edilir. Belirli bir düğüme götüren ikili kararları “VE” ile birleştirirsiniz ve işte, bir kuralınız olur. Çeşitli ve anlamlı birçok kural oluşturmak istenir. Gradient boosting, orijinal özellikleriniz X ile y üzerinde regresyon veya sınıflandırma yaparak bir karar ağacı topluluğu oluşturmak için kullanılır. Ortaya çıkan her ağaç birden fazla kurala dönüştürülür. RuleFit için sadece boosting ile oluşturulan ağaçlar değil, herhangi bir ağaç topluluk algoritması kural oluşturmak için kullanılabilir. Bir ağaç topluluğu şu genel formülle tanımlanabilir:

$$
\hat{f}(x) = a\_0+\sum\_{m=1}^M a\_m \hat{f}\_m(X)
$$

M, ağaçların sayısını temsil eder ve $$f^m(x)$$ , m-inci ağacın tahmin fonksiyonudur. $$a$$​’lar ağırlıklardır. Bagged ensemble’lar, rastgele orman (random forest), AdaBoost ve MART, ağaç toplulukları oluşturur ve RuleFit için kullanılabilir.

Tüm topluluk ağaçlarından kurallar oluştururuz. Her bir kural  $$r\_m$$  şu formu alır:

&#x20;$$r\_m(x)=\prod\_{j\in\text{T}*m}I(x\_j\in{}s*{jm})$$

Burada,  ​ $$T\_m$$ , m-inci ağaçta kullanılan özelliklerin kümesidir. 𝐼, bir gösterge fonksiyonudur ve  $$x\_j$$ j-inci özellik, 𝑠  ile belirtilen değer alt kümesinde olduğunda 1, aksi takdirde 0 değerini alır (ağacın bölme kriterleri tarafından belirtilir). Sayısal özellikler için  $$s\_{jm}$$, özelliğin değer aralığında bir aralığı ifade eder. Bu aralık şu iki durumdan birine benzer:

$$
x\_{s\_{jm},\text{lower}}\<x\_j
$$

$$
x\_j\<x\_{s\_{jm},upper}
$$

O özellikteki daha ileri bölmeler, muhtemelen daha karmaşık aralıklara yol açabilir. Kategorik özellikler için 𝑠 s alt kümesi, özelliğin bazı belirli kategorilerini içerir.

Bisiklet kiralama veri kümesi için uydurulmuş bir örnek:

$$
\begin{align\*}
r\_{17}(x) & = I(x\_{\text{temp}}<15) \cdot I(x\_{\text{weather}}\in{\text{good},\text{cloudy}}) \\
& \cdot I(10\leq x\_{\text{windspeed}}<20)
\end{align\*}
$$

Bu kural, tüm üç koşul karşılanıyorsa 1, aksi takdirde 0 döndürür. RuleFit, yalnızca yaprak düğümlerden değil, bir ağacın tüm olası yollarından kurallar çıkarır. Bu nedenle oluşturulabilecek başka bir kural şunlar olabilir:

$$
r\_{18}(x)=I(x\_{\text{temp}}<15)\cdot I(x\_{\text{weather}}\in{\text{good},\text{cloudy}})
$$

Birlikte,  $$M$$ adet ağaca sahip bir topluluktan ve her biri  $$t\_m$$ terminal düğüme sahip olan ağaçlardan oluşturulan toplam kural sayısı şu şekilde ifade edilir:

$$
K=\sum\_{m=1}^M2(t\_m-1)
$$

RuleFit yazarları tarafından tanıtılan bir püf noktası, farklı uzunluklarda birçok çeşitli kuralın oluşturulması için rastgele derinliklere sahip ağaçlar öğrenmektir. Her düğümde tahmin edilen değerleri atıp, yalnızca bir düğüme ulaşmamızı sağlayan koşulları tutarız ve bundan bir kural oluştururuz. Karar kurallarının ağırlıklandırılması, RuleFit'in 2. adımında yapılır.

Adım 1’e başka bir açıdan bakıldığında: RuleFit, orijinal özelliklerinizden yeni bir özellik seti oluşturur. Bu özellikler ikilidir ve orijinal özelliklerinizin oldukça karmaşık etkileşimlerini temsil edebilir. Kurallar, tahmin görevini en üst düzeye çıkarmak için seçilir. Kurallar, açıklayıcı değişkenler matrisinden (X) otomatik olarak oluşturulur. Kuralları, orijinal özelliklerinizden türetilmiş yeni özellikler olarak görebilirsiniz.

#### Adım 2: Seyrek doğrusal model

Adım 1’de ÇOK SAYIDA kural elde edersiniz. İlk adım yalnızca bir özellik dönüşümü olarak görülebilir, bu nedenle bir model oluşturma işi henüz tamamlanmış olmaz. Ayrıca, kural sayısını azaltmak istersiniz. Kuralların yanı sıra, orijinal veri kümenizdeki tüm "ham" özellikler de seyrek doğrusal modelde kullanılır. Her kural ve her orijinal özellik doğrusal modelde bir özellik haline gelir ve bir ağırlık tahmini alır. Orijinal ham özellikler eklenir çünkü ağaçlar, yyy ve xxx arasındaki basit doğrusal ilişkileri temsil etmede yetersiz kalır. Seyrek bir doğrusal model eğitmeden önce, orijinal özellikleri winsorize ederiz, böylece aykırı değerlere karşı daha dayanıklı hale gelirler.

$$
l\_j^\*(x\_j)=min(\delta\_j^+,max(\delta\_j^-,x\_j))
$$

Burada  $$δj^−$$  ​ ve  $$δj^−$$  ​ , özelliğin $$x\_j$$ veri dağılımının $$δ$$ çeyrek dilimlerini ifade eder.  $$δ$$ için 0.05 seçimi, $$x\_j$$ özelliğinin en düşük %5’lik ya da en yüksek %5’lik değerlerinin sırasıyla %5 ya da %95 çeyrek dilim değerlerine ayarlanacağı anlamına gelir. Bir kural olarak,  $$δ$$ =0.025 seçebilirsiniz. Buna ek olarak, doğrusal terimlerin, tipik bir karar kuralıyla aynı öncelikli öneme sahip olmaları için normalize edilmesi gerekir.

$$
l\_j(x\_j)=0.4\cdot{}l^*\_j(x\_j)/std(l^*\_j(x\_j))
$$

&#x20;$$0.4$$, destek dağılımı $$s\_k∼U(0,1)$$ olan kuralların ortalama standart sapmasını ifade eder.

Her iki tür özelliği birleştirerek yeni bir özellik matrisi oluştururuz ve şu yapı ile bir seyrek doğrusal modeli Lasso kullanarak eğitiriz:

$$
\hat{f}(x)=\hat{\beta}*0+\sum*{k=1}^K\hat{\alpha}*k{}r\_k(x)+\sum*{j=1}^p\hat{\beta}\_j{}l\_j(x\_j)
$$

Burada,  $$\hat{\alpha}$$ kural özellikleri için tahmini ağırlık vektörü ve  $$\hat{\beta}$$ orijinal özellikler için ağırlık vektörüdür. RuleFit, Lasso kullandığı için, kayıp fonksiyonuna bazı ağırlıkların sıfır tahminine zorlanmasını sağlayan ek bir kısıtlama eklenir:

$$
\begin{align\*}
({\hat{\alpha}}*1^K,{\hat{\beta}}*0^p) & = & argmin*{{\hat{\alpha}}*1^K,{\hat{\beta}}*0^p}\sum*{i=1}^n L(y^{(i)},f(x^{(i)}))  \\
& + & \lambda\cdot\left(\sum*{k=1}^K|\alpha\_k| + \sum*{j=1}^p|\beta\_j|\right)
\end{align\*}
$$

Sonuç, tüm orijinal özellikler ve kurallar için doğrusal etkiler içeren bir doğrusal modeldir. Yorumlama, doğrusal modellerle aynıdır; tek fark, bazı özelliklerin artık ikili (binary) kurallar olmasıdır.

**Adım 3 (isteğe bağlı): Öznitelik önemi**

Orijinal özelliklerin doğrusal terimleri için öznitelik önemi, standartlaştırılmış kestirici ile ölçülür:

$$
I\_j=|\hat{\beta}\_j|\cdot std(l\_j(x\_j))
$$

Burada $$β\_j$$, Lasso modelinden gelen ağırlığı,  $$std(l\_j(x\_j))$$ ise veri üzerindeki doğrusal terimin standart sapmasını ifade eder.

Karar kuralı terimleri için, önem aşağıdaki formül yardımıyla hesaplanır.&#x20;

$$
I\_k=|\hat{\alpha}\_k|\cdot\sqrt{s\_k(1-s\_k)}
$$

Burada  $$\hat{\alpha}$$, karar kuralına ait Lasso ağırlığını,  $$s\_k$$ ise özelliğin veri içindeki desteğini ifade eder; bu, karar kuralının uygulandığı veri noktalarının yüzdesidir (yani $$r\_k(x)=1$$; karar kuralı=1; olduğu durumlar):

$$
s\_k=\frac{1}{n}\sum\_{i=1}^n r\_k(x^{(i)})
$$

Bir öznitelik, doğrusal bir terim olarak ve muhtemelen birçok karar kuralı içinde yer alabilir. Peki, bir özniteliğin toplam önemini nasıl ölçeriz? Bir özniteliğin önemi  $$J\_j (x)$$, her bir bireysel tahmin için şu şekilde ölçülebilir:

$$
J\_j(x)=I\_j(x)+\sum\_{x\_j\in{}r\_k}I\_k(x)/m\_k
$$

Burada  $$I\_l$$​ , doğrusal terimin önemini;  $$I\_k$$, $$x\_j$$ özniteliğinin içinde bulunduğu karar kurallarının önemini ifade eder ve  $$m\_k$$, kural  $$r\_k$$'yi oluşturan özniteliklerin sayısını temsil eder. Tüm örneklerden gelen öznitelik öneminin toplanması, bize küresel (global) öznitelik önemini verir:

$$
J\_j(X)=\sum\_{i=1}^n{}J\_j(x^{(i)})
$$

Belirli bir örnek alt kümesi seçilerek bu grup için öznitelik önemi hesaplanabilir.

**5.6.3 Avantajlar**

**RuleFit**, doğrusal modellere otomatik olarak özellik etkileşimleri ekler. Bu sayede, doğrusal modellerde etkileşim terimlerini manuel olarak ekleme zorunluluğunu ortadan kaldırır ve doğrusal olmayan ilişkilerin modellenmesi sorununu bir miktar çözer.

RuleFit hem sınıflandırma hem de regresyon görevlerini işleyebilir.

Oluşturulan kuralların anlaşılması kolaydır, çünkü bu kurallar ikili karar kurallarıdır. Bir kural ya bir örneğe uygulanır ya da uygulanmaz. Ancak, bir kuralın içindeki koşul sayısının fazla olmaması durumunda iyi bir yorumlanabilirlik sağlanır. 1 ila 3 koşul içeren kurallar makul görünmektedir; bu da ağaç topluluklarındaki ağaçlar için maksimum 3 derinlik anlamına gelir.

Modelde birçok kural bulunsa bile, bu kurallar her örnek için geçerli değildir. Bireysel bir örnek için yalnızca birkaç kural geçerli olur (yani sıfır olmayan ağırlıklara sahiptir). Bu durum, yerel yorumlanabilirliği artırır.

RuleFit, bir dizi kullanışlı teşhis aracı sunar. Bu araçlar modelden bağımsızdır, bu yüzden kitapta modelden bağımsız bölümde bulunabilir: öznitelik önemi, kısmi bağımlılık grafikleri ve öznitelik etkileşimleri.

**5.6.4 Dezavantajlar**

Bazen RuleFit, Lasso modelinde sıfır olmayan ağırlık alan birçok kural oluşturur. Modeldeki özellik sayısının artmasıyla birlikte yorumlanabilirlik azalır. Bu duruma yönelik umut verici bir çözüm, özellik etkilerinin monoton olmasını zorlamaktır, yani bir özelliğin artışının tahmin değerinde bir artışa yol açmasını sağlamak.

**Deneyimsel bir dezavantaj:** Makaleler, RuleFit'in genellikle rastgele ormanlar (random forests) ile benzer bir tahmin performansı gösterdiğini iddia etse de, benim kişisel denemelerimde performansı hayal kırıklığı yarattı. Sorununuz için deneyip performansını kendiniz görün.

RuleFit prosedürünün nihai ürünü, ek olarak gelişmiş özellikler (karar kuralları) içeren bir doğrusal modeldir. Ancak, model doğrusal olduğu için ağırlıkların yorumlanması hâlâ sezgisel değildir. Bu durum, klasik doğrusal regresyon modelindeki şu “dipnot” ile birlikte gelir: “… tüm diğer özellikler sabit tutulduğunda.” Kuralların çakıştığı durumlarda yorumlama daha karmaşık hale gelir. Örneğin, bisiklet tahmini için bir karar kuralı “temp > 10” ve başka bir kural “temp > 15 & weather=‘GOOD’” olabilir. Eğer hava durumu iyi ve sıcaklık 15 derece üzerindeyse, sıcaklık otomatik olarak 10’un üzerinde olur. İkinci kuralın geçerli olduğu durumlarda birinci kural da geçerlidir. Bu durumda, ikinci kuralın tahmini ağırlığının yorumu şu şekilde olur: “Tüm diğer özellikler sabit tutulduğunda, hava durumu iyi ve sıcaklık 15 derece üzerinde olduğunda tahmin edilen bisiklet sayısı β2\beta\_2 kadar artar.” Ancak bu durumda “tüm diğer özellikler sabit” varsayımı problemli hale gelir, çünkü ikinci kural geçerliyse birinci kural da geçerlidir ve yorum anlamsızlaşır.

**5.6.5 Yazılım ve Alternatifler**

RuleFit algoritması, Fokkema ve Christoffersen (2017) tarafından R'da uygulanmıştır ve [Python](https://github.com/christophM/rulefit) sürümüne GitHub üzerinden erişilebilir.

[**Skope-rules**](https://github.com/scikit-learn-contrib/skope-rules), benzer bir çerçeve olup, bir Python modülü olarak topluluklardan kurallar çıkartır. Son kuralları öğrenme yöntemi farklıdır: İlk olarak, skope-rules düşük performanslı kuralları geri çağırma (recall) ve kesinlik (precision) eşiklerine göre kaldırır. Daha sonra, mantıksal terimlerin çeşitliliği (değişken + büyük/küçük operatörleri) ve kuralların performansına (F1-skoru) göre bir seçim yaparak yinelenen ve benzer kuralları eler. Bu son adım Lasso'yu kullanmaz, ancak yalnızca out-of-bag F1-skorunu ve kuralları oluşturan mantıksal terimleri dikkate alır. [**imodels** ](https://github.com/csinva/imodels)paketi, Bayesian kural setleri, Boosted kural setleri ve SLIPPER kural setleri gibi diğer kural setlerinin uygulanmasını içerir ve bunları scikit-learn ile uyumlu bir Python paketi olarak sunar.

***

Friedman, Jerome H, and Bogdan E Popescu. “Predictive learning via rule ensembles.” The Annals of Applied Statistics. JSTOR, 916–54. (2008).[↩︎](https://christophm.github.io/interpretable-ml-book/rulefit.html#fnref25)

Fokkema, Marjolein, and Benjamin Christoffersen. “Pre: Prediction rule ensembles”. [https://CRAN.R-project.org/package=pre](https://cran.r-project.org/package=pre) (2017).[↩︎](https://christophm.github.io/interpretable-ml-book/rulefit.html#fnref26)
