Hướng dẫn logarithmic regression python sklearn - hồi quy logarit python sklearn
Tôi không biết nếu "hồi quy logarit" là thuật ngữ đúng, tôi cần phải phù hợp với một đường cong trên dữ liệu của mình, giống như một đường cong đa thức nhưng đi thẳng vào cuối. Show
Đây là một hình ảnh, đường cong màu xanh là những gì tôi có (hồi quy đa thức thứ tự thứ 2) và đường cong Magenta là những gì tôi cần. Tôi đã tìm kiếm rất nhiều và không thể tìm thấy rằng, chỉ hồi quy tuyến tính, hồi quy đa thức, nhưng không có hồi quy logarit trên sklearn. Tôi cần phải vẽ đường cong và sau đó đưa ra dự đoán với hồi quy đó. CHỈNH SỬA Đây là dữ liệu cho hình ảnh cốt truyện mà tôi đã đăng: Cây quyết định (DTS) là một phương pháp học tập không tham số được sử dụng để phân loại và hồi quy. Mục tiêu là tạo ra một mô hình dự đoán giá trị của biến mục tiêu bằng cách tìm hiểu các quy tắc quyết định đơn giản được suy ra từ các tính năng dữ liệu. Một cây có thể được coi là một xấp xỉ hằng số piecewise. are a non-parametric supervised learning method used for classification and regression. The goal is to create a model that predicts the value of a target variable by learning simple decision rules inferred from the data features. A tree can be seen as a piecewise constant approximation. Chẳng hạn, trong ví dụ dưới đây, các cây quyết định học hỏi từ dữ liệu để xấp xỉ một đường cong hình sin với một tập hợp các quy tắc quyết định if-then-else. Cây càng sâu, các quy tắc quyết định càng phức tạp và mô hình càng phức tạp. Một số lợi thế của cây quyết định là:
Những bất lợi của cây quyết định bao gồm:
1.10.1. Phân loại %Classification¶>>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)0 là một lớp có khả năng thực hiện phân loại đa lớp trên bộ dữ liệu. Cũng như các phân loại khác, >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)0 lấy làm hai mảng đầu vào: một mảng X, thưa thớt hoặc dày đặc, có hình dạng >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)2 giữ các mẫu đào tạo và một mảng y của các giá trị số nguyên, hình dạng >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)3, giữ các nhãn lớp cho các mẫu đào tạo: >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y) Sau khi được trang bị, mô hình sau đó có thể được sử dụng để dự đoán lớp mẫu: >>> clf.predict([[2., 2.]]) array([1]) Trong trường hợp có nhiều lớp có cùng xác suất và cao nhất, trình phân loại sẽ dự đoán lớp có chỉ số thấp nhất trong số các lớp đó. Thay thế cho việc xuất ra một lớp cụ thể, xác suất của mỗi lớp có thể được dự đoán, đó là một phần của các mẫu đào tạo của lớp trong một chiếc lá: >>> clf.predict_proba([[2., 2.]]) array([[0., 1.]]) >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)0 có khả năng phân loại nhị phân (trong đó các nhãn [-1, 1]) phân loại và đa loại (trong đó các nhãn được phân loại [0,, K-1]). Sử dụng bộ dữ liệu IRIS, chúng ta có thể xây dựng một cây như sau: >>> from sklearn.datasets import load_iris >>> from sklearn import tree >>> iris = load_iris() >>> X, y = iris.data, iris.target >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, y) Sau khi được đào tạo, bạn có thể vẽ cây với chức năng >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)5: >>> tree.plot_tree(clf) [...] Chúng ta cũng có thể xuất cây theo định dạng GraphViz bằng cách sử dụng nhà xuất khẩu >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)6. Nếu bạn sử dụng trình quản lý gói Conda, các nhị phân GraphViz và gói Python có thể được cài đặt với >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)7. Ngoài ra, các nhị phân cho GraphViz có thể được tải xuống từ trang chủ của dự án GraphViz và trình bao bọc Python được cài đặt từ PYPI với >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)8. Dưới đây là một ví dụ xuất khẩu graphviz của cây trên được đào tạo trên toàn bộ bộ dữ liệu IRIS; Các kết quả được lưu trong một tệp đầu ra >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)9: >>> import graphviz >>> dot_data = tree.export_graphviz(clf, out_file=None) >>> graph = graphviz.Source(dot_data) >>> graph.render("iris") Nhà xuất khẩu >>> from sklearn import tree >>> X = [[0, 0], [1, 1]] >>> Y = [0, 1] >>> clf = tree.DecisionTreeClassifier() >>> clf = clf.fit(X, Y)6 cũng hỗ trợ nhiều tùy chọn thẩm mỹ khác nhau, bao gồm các nút tô màu theo lớp của họ (hoặc giá trị cho hồi quy) và sử dụng tên biến và tên lớp rõ ràng nếu muốn. Notebook Jupyter cũng tự động kết xuất các lô này nội tuyến: >>> dot_data = tree.export_graphviz(clf, out_file=None, ... feature_names=iris.feature_names, ... class_names=iris.target_names, ... filled=True, rounded=True, ... special_characters=True) >>> graph = graphviz.Source(dot_data) >>> graph Ngoài ra, cây cũng có thể được xuất ở định dạng văn bản với hàm >>> clf.predict([[2., 2.]]) array([1])1. Phương pháp này không yêu cầu cài đặt các thư viện bên ngoài và nhỏ gọn hơn: >>> from sklearn.datasets import load_iris >>> from sklearn.tree import DecisionTreeClassifier >>> from sklearn.tree import export_text >>> iris = load_iris() >>> decision_tree = DecisionTreeClassifier(random_state=0, max_depth=2) >>> decision_tree = decision_tree.fit(iris.data, iris.target) >>> r = export_text(decision_tree, feature_names=iris['feature_names']) >>> print(r) |--- petal width (cm) <= 0.80 | |--- class: 0 |--- petal width (cm) > 0.80 | |--- petal width (cm) <= 1.75 | | |--- class: 1 | |--- petal width (cm) > 1.75 | | |--- class: 2 1.10.2. Hồi quy¶Regression¶Cây quyết định cũng có thể được áp dụng cho các vấn đề hồi quy, sử dụng lớp >>> clf.predict([[2., 2.]]) array([1])2. Như trong cài đặt phân loại, phương thức FIT sẽ lấy làm mảng đối số x và y, chỉ trong trường hợp này Y dự kiến sẽ có các giá trị điểm nổi thay vì các giá trị số nguyên: >>> from sklearn import tree >>> X = [[0, 0], [2, 2]] >>> y = [0.5, 2.5] >>> clf = tree.DecisionTreeRegressor() >>> clf = clf.fit(X, y) >>> clf.predict([[1, 1]]) array([0.5]) 1.10.3. Vấn đề đa đầu raMulti-output problems¶Một vấn đề đa đầu ra là một vấn đề học tập được giám sát với một số đầu ra để dự đoán, đó là khi Y là một mảng 2D của hình dạng >>> clf.predict([[2., 2.]]) array([1])3. Khi không có mối tương quan giữa các đầu ra, một cách rất đơn giản để giải quyết loại vấn đề này là xây dựng n mô hình độc lập, tức là một cho mỗi đầu ra, và sau đó sử dụng các mô hình đó để dự đoán độc lập từng đầu ra. Tuy nhiên, vì có khả năng các giá trị đầu ra liên quan đến cùng một đầu vào có mối tương quan, một cách thường tốt hơn là xây dựng một mô hình duy nhất có khả năng dự đoán đồng thời tất cả các đầu ra. Đầu tiên, nó đòi hỏi thời gian đào tạo thấp hơn vì chỉ có một công cụ ước tính được xây dựng. Thứ hai, độ chính xác tổng quát của công cụ ước tính kết quả thường có thể được tăng lên. Liên quan đến cây quyết định, chiến lược này có thể dễ dàng được sử dụng để hỗ trợ các vấn đề đa sản lượng. Điều này đòi hỏi các thay đổi sau:
Mô-đun này cung cấp hỗ trợ cho các vấn đề đa đầu ra bằng cách thực hiện chiến lược này trong cả ____10 và >>> clf.predict([[2., 2.]]) array([1])2. Nếu một cây quyết định phù hợp với một mảng đầu ra y có hình dạng >>> clf.predict([[2., 2.]]) array([1])3 thì công cụ ước tính kết quả sẽ:
Việc sử dụng các cây đa đầu ra để hồi quy được thể hiện trong hồi quy cây quyết định đa đầu ra. Trong ví dụ này, đầu vào x là một giá trị thực duy nhất và đầu ra y là sin và cosin của X.Multi-output Decision Tree Regression. In this example, the input X is a single real value and the outputs Y are the sine and cosine of X. Việc sử dụng các cây nhiều đầu ra để phân loại được thể hiện khi hoàn thành khuôn mặt với các công cụ ước tính nhiều đầu ra. Trong ví dụ này, các đầu vào X là các pixel của nửa trên của mặt và đầu ra y là các pixel của nửa dưới của các khuôn mặt đó.Face completion with a multi-output estimators. In this example, the inputs X are the pixels of the upper half of faces and the outputs Y are the pixels of the lower half of those faces. 1.10.4. Sự phức tạp trongComplexity¶Nói chung, chi phí thời gian chạy để xây dựng một cây nhị phân cân bằng là \ (o (n_ {mẫu} n_ {tính năng} \ log (n_ {mẫu })) \). Mặc dù thuật toán xây dựng cây cố gắng tạo ra những cây cân bằng, nhưng chúng sẽ không luôn luôn được cân bằng. Giả sử rằng những người con sẽ được cân bằng xấp xỉ, chi phí ở mỗi nút bao gồm tìm kiếm thông qua \ (O (N_ {tính năng}) \) để tìm tính năng cung cấp mức giảm lớn nhất trong tiêu chí tạp chất, ví dụ: Mất nhật ký (tương đương với mức tăng thông tin). Điều này có chi phí \ (o (n_ {tính năng} n_ {mẫu} \ log (n_ {mẫu})) \) tại mỗi nút, dẫn đến tổng chi phí trên toàn bộ cây (bằng cách tổng chi phí ở mỗi nút) của \ (o (n_ {tính năng} n_ {mẫu}^{2} \ log (n_ {mẫu})) \).\(O(n_{samples}n_{features}\log(n_{samples}))\) and query time \(O(\log(n_{samples}))\). Although the tree construction algorithm attempts to generate balanced trees, they will not always be balanced. Assuming that the subtrees remain approximately balanced, the cost at each node consists of searching through \(O(n_{features})\) to find the feature that offers the largest reduction in the impurity criterion, e.g. log loss (which is equivalent to an information gain). This has a cost of \(O(n_{features}n_{samples}\log(n_{samples}))\) at each node, leading to a total cost over the entire trees (by summing the cost at each node) of \(O(n_{features}n_{samples}^{2}\log(n_{samples}))\). 1.10.5. Mẹo về sử dụng thực tếTips on practical use¶
1.10.6. Thuật toán cây: ID3, C4.5, C5.0 và Cart¶Tree algorithms: ID3, C4.5, C5.0 and CART¶Tất cả các thuật toán cây quyết định khác nhau là gì và làm thế nào để chúng khác nhau? Cái nào được thực hiện trong Scikit-learn? ID3 (Dichotomiser 3) được phát triển vào năm 1986 bởi Ross Quinlan. Thuật toán tạo ra một cây nhiều đường, tìm cho mỗi nút (nghĩa là theo cách tham lam), tính năng phân loại sẽ mang lại mức tăng thông tin lớn nhất cho các mục tiêu phân loại. Cây được trồng theo kích thước tối đa của chúng và sau đó một bước cắt tỉa thường được áp dụng để cải thiện khả năng của cây để khái quát hóa dữ liệu vô hình. C4.5 là kế thừa của ID3 và loại bỏ các hạn chế rằng các tính năng phải được phân loại bằng cách xác định động một thuộc tính riêng biệt (dựa trên các biến số) phân vùng giá trị thuộc tính liên tục thành một tập hợp các khoảng thời gian riêng biệt. C4.5 chuyển đổi các cây được đào tạo (nghĩa là đầu ra của thuật toán ID3) thành các bộ quy tắc if-then. Độ chính xác của từng quy tắc sau đó được đánh giá để xác định thứ tự mà chúng nên được áp dụng. Việc cắt tỉa được thực hiện bằng cách loại bỏ một điều kiện tiên quyết của quy tắc nếu độ chính xác của quy tắc được cải thiện mà không có nó. C5.0 là phiên bản mới nhất của Quinlan, theo giấy phép độc quyền. Nó sử dụng ít bộ nhớ hơn và xây dựng các quy tắc nhỏ hơn C4.5 trong khi chính xác hơn. Giỏ hàng (phân loại và cây hồi quy) rất giống với C4.5, nhưng nó khác nhau ở chỗ nó hỗ trợ các biến mục tiêu số (hồi quy) và không tính toán các bộ quy tắc. Cart xây dựng các cây nhị phân bằng cách sử dụng tính năng và ngưỡng mang lại mức tăng thông tin lớn nhất ở mỗi nút. Scikit-Learn sử dụng phiên bản tối ưu của thuật toán giỏ hàng; Tuy nhiên, việc triển khai Scikit-LEARN hiện không hỗ trợ các biến phân loại. 1.10.7. Công thức toán họcMathematical formulation¶Đã cho các vectơ đào tạo \ (x_i \ in r^n \), i = 1,, l, l và một vectơ nhãn \ (y \ in r^l \), một cây quyết định đã phân vùng không gian Cùng một nhãn hoặc giá trị mục tiêu tương tự được nhóm lại với nhau.\(x_i \in R^n\), i=1,…, l and a label vector \(y \in R^l\), a decision tree recursively partitions the feature space such that the samples with the same labels or similar target values are grouped together. Đặt dữ liệu tại nút \ (m \) được biểu diễn bằng các mẫu \ (q_m \) với \ (n_m \). Đối với mỗi ứng cử viên phân chia \ (\ theta = (j, t_m) \) bao gồm một tính năng \ (j \) và ngưỡng \ (t_m \), phân vùng dữ liệu thành \ (q_m^{trái} (\ theta) \) và \ (q_m^{right} (\ theta) \)\(m\) be represented by \(Q_m\) with \(n_m\) samples. For each candidate split \(\theta = (j, t_m)\) consisting of a feature \(j\) and threshold \(t_m\), partition the data into \(Q_m^{left}(\theta)\) and \(Q_m^{right}(\theta)\) subsets \] x_j \ leq t_m \} \\ q_m^{right} (\ theta) = q_m \ setMinus q_m^{left} (\ theta) Chất lượng của sự phân chia ứng cử viên của nút \ (m \) sau đó được tính toán bằng hàm tạp chất hoặc hàm mất \ (h () \), lựa chọn phụ thuộc vào nhiệm vụ được giải quyết (phân loại hoặc hồi quy)\(m\) is then computed using an impurity function or loss function \(H()\), the choice of which depends on the task being solved (classification or regression) \ [G (q_m, \ theta) = \ frac {n_m^{left}} {n_m} h (q_m^{left} (\ theta)) ^{phải} (\ theta)) \] Chọn các tham số để giảm thiểu tạp chất \ [\ theta^* = \ operatorname {argmin} _ \ theta g (q_m, \ theta) \] Tái phát cho các tập hợp con \ (q_m^{left} (\ theta^*) \) và \ (q_m^{right} (\ theta^*) \) cho đến khi đạt được độ sâu tối đa cho phép } \) hoặc \ (n_m = 1 \).\(Q_m^{left}(\theta^*)\) and \(Q_m^{right}(\theta^*)\) until the maximum allowable depth is reached, \(n_m < \min_{samples}\) or \(n_m = 1\). 1.10.7.1. Tiêu chí phân loạiClassification criteria¶Nếu một mục tiêu là kết quả phân loại có giá trị 0,1, thì, k-1, cho nút \ (m \), hãy để\(m\), let \ [p_ {mk} = \ frac {1} {n_m} \ sum_ {y \ in q_m} i (y = k) \] là tỷ lệ của các quan sát lớp K trong nút \ (m \). Nếu \ (m \) là nút đầu cuối, >>> clf.predict([[2., 2.]]) array([1])8 cho vùng này được đặt thành \ (p_ {mk} \). Các biện pháp phổ biến của tạp chất là như sau.\(m\). If \(m\) is a terminal node, >>> clf.predict([[2., 2.]]) array([1])8 for this region is set to \(p_{mk}\). Common measures of impurity are the following. Gini: \ [H (q_m) = \ sum_k p_ {mk} (1 - p_ {mk}) \] Mất nhật ký hoặc entropy: \ [H (q_m) = - \ sum_k p_ {mk} \ log (p_ {mk}) \] Ghi chú Tiêu chí entropy tính toán entropy Shannon của các lớp có thể. Nó lấy tần số lớp của các điểm dữ liệu đào tạo đạt đến một lá nhất định \ (m \) làm xác suất của chúng. Sử dụng entropy shannon làm tiêu chí phân tách nút cây tương đương với việc giảm thiểu tổn thất log (còn được gọi là độ lệch chéo và độ lệch đa hóa) giữa các nhãn thực \ (y_i \) và dự đoán thăm dò Mô hình cây \ (t \) cho lớp \ (k \).\(m\) as their probability. Using the Shannon entropy as tree node splitting criterion is equivalent to minimizing the log loss (also known as cross-entropy and multinomial deviance) between the true labels \(y_i\) and the probalistic predictions \(T_k(x_i)\) of the tree model \(T\) for class \(k\). Để xem điều này, trước tiên hãy nhớ lại rằng việc mất nhật ký của mô hình cây \ (t \) được tính toán trên bộ dữ liệu \ (d \) được định nghĩa như sau:\(T\) computed on a dataset \(D\) is defined as follows: \ [\ mathrm {ll} (d, t) = -\ frac {1} {n} \ sum _ {(x_i, y_i) \] trong đó \ (d \) là một bộ dữ liệu đào tạo của các cặp \ (n \) \ ((x_i, y_i) \).\(D\) is a training dataset of \(n\) pairs \((x_i, y_i)\). Trong một cây phân loại, xác suất lớp dự đoán trong các nút lá không đổi, đó là: với tất cả \ ((x_i, y_i) \ in q_m \), người ta có: mỗi lớp \ (k \).\((x_i, y_i) \in Q_m\), one has: \(T_k(x_i) = p_{mk}\) for each class \(k\). Thuộc tính này cho phép viết lại \ (\ mathrm {ll} (d, t) \) là tổng của các entropies shannon được tính toán cho mỗi lá của \ (t \) có trọng số :\(\mathrm{LL}(D, T)\) as the sum of the Shannon entropies computed for each leaf of \(T\) weighted by the number of training data points that reached each leaf: \ [\ mathrm {ll} (d, t) = \ sum_ {m \ in t} \ frac {n_m} {n} h (q_m) \] 1.10.7.2. Tiêu chí hồi quyRegression criteria¶Nếu mục tiêu là giá trị liên tục, thì đối với nút \ (m \), các tiêu chí phổ biến để giảm thiểu như để xác định vị trí cho các phân tách trong tương lai là lỗi bình phương L1 lỗi). Cả MSE và Poisson Deviance đều đặt giá trị dự đoán của các nút đầu cuối thành giá trị trung bình đã học \ (\ Bar {y} _M \) của nút trong khi MAE đặt giá trị dự đoán của các nút đầu cuối thành trung bình \ (y) \).\(m\), common criteria to minimize as for determining locations for future splits are Mean Squared Error (MSE or L2 error), Poisson deviance as well as Mean Absolute Error (MAE or L1 error). MSE and Poisson deviance both set the predicted value of terminal nodes to the learned mean value \(\bar{y}_m\) of the node whereas the MAE sets the predicted value of terminal nodes to the median \(median(y)_m\). Có nghĩa là lỗi bình phương: \ [\ started {align} \ start } \ sum_ {y \ in q_m} (y - \ bar {y} _m)^2 \ end {Aligned} \ end {align} \] Half Poisson Deviance: A \] Cài đặt >>> tree.plot_tree(clf) [...]0 có thể là một lựa chọn tốt nếu mục tiêu của bạn là đếm hoặc tần số (đếm cho mỗi đơn vị). Trong mọi trường hợp, \ (y> = 0 \) là một điều kiện cần thiết để sử dụng tiêu chí này. Lưu ý rằng nó phù hợp chậm hơn nhiều so với tiêu chí MSE.\(y >= 0\) is a necessary condition to use this criterion. Note that it fits much slower than the MSE criterion. Lỗi tuyệt đối trung bình: \ [\ started {align} \ start } \ sum_ {y \ in q_m} | y - median (y) _m | \ end {căn chỉnh} \ end {align} \] Lưu ý rằng nó phù hợp chậm hơn nhiều so với tiêu chí MSE. 1.10.8. Cắt tỉa phức tạp chi phí tối thiểuMinimal Cost-Complexity Pruning¶Cắt tỉa phức tạp chi phí tối thiểu là một thuật toán được sử dụng để cắt tỉa một cây để tránh quá mức, được mô tả trong Chương 3 của [BRE]. Thuật toán này được tham số hóa bởi \ (\ alpha \ ge0 \) được gọi là tham số độ phức tạp. Tham số độ phức tạp được sử dụng để xác định số đo độ phức tạp chi phí, \ (r_ \ alpha (t) \) của một cây đã cho \ (t \):[BRE]. This algorithm is parameterized by \(\alpha\ge0\) known as the complexity parameter. The complexity parameter is used to define the cost-complexity measure, \(R_\alpha(T)\) of a given tree \(T\): \ [R_ \ alpha (t) = r (t) + \ alpha | \ widetilde {t} | \] trong đó \ (| \ widetilde {t} | \) là số lượng nút đầu cuối trong \ (t \) và \ (r (t) \) theo truyền thống được định nghĩa là tổng tốc độ phân loại sai của các nút đầu cuối. Ngoài ra, Scikit-Learn sử dụng tổng số tạp chất có trọng số mẫu của các nút đầu cuối cho \ (r (t) \). Như được hiển thị ở trên, tạp chất của một nút phụ thuộc vào tiêu chí. Cắt tỉa phức tạp chi phí tối thiểu tìm thấy phần cây con của \ (t \) giảm thiểu \ (r_ \ alpha (t) \).\(|\widetilde{T}|\) is the number of terminal nodes in \(T\) and \(R(T)\) is traditionally defined as the total misclassification rate of the terminal nodes. Alternatively, scikit-learn uses the total sample weighted impurity of the terminal nodes for \(R(T)\). As shown above, the impurity of a node depends on the criterion. Minimal cost-complexity pruning finds the subtree of \(T\) that minimizes \(R_\alpha(T)\). Số đo độ phức tạp chi phí của một nút duy nhất là \ (r_ \ alpha (t) = r (t)+\ alpha \). Chi nhánh, \ (t_t \), được định nghĩa là một cây trong đó nút \ (t \) là gốc của nó. Nói chung, tạp chất của một nút lớn hơn tổng số tạp chất của các nút đầu cuối của nó, \ (r (t_t)\(R_\alpha(t)=R(t)+\alpha\). The branch, \(T_t\), is defined to be a tree where node \(t\) is its root. In general, the impurity of a node is greater than the sum of impurities of its terminal nodes,
\(R(T_t) |