CÁC THUẬT TOÁN

Một phần của tài liệu 28064_1712202001934994LUANVANPHAMDINHBON (Trang 35)

5. Cấu trúc luận văn

2.2.CÁC THUẬT TOÁN

2.2.1. Thuật toán CLS

Thuật toán này đƣợc Holland và Hint giới thiệu trong Concept learning System (CLS) vào những năm 50 của thế kỷ 20[4]. Thuật toán CLS đƣợc thiết kế theo chiến lƣợc chia để trị từ trên xuống. Nó gồm các bƣớc sau:

1. Tạo một nút T, nút này gồm tất cả các mẫu của tập huấn luyện.

2. Nếu tất cả các mẫu trong T có thuộc tính quyết định mang giá trị "yes" (hay thuộc cùng một lớp), thì gán nhãn cho nút T là "yes" và dừng lại. T lúc này là nút lá.

3. Nếu tất cả các mẫu trong T có thuộc tính quyết định mang giá trị "no" (hay thuộc cùng một lớp), thì gán nhãn cho nút T là "no" và dừng lại. T lúc này là nút lá.

4. Trƣờng hợp ngƣợc lại các mẫu của tập huấn luyện thuộc cả hai lớp "yes" và "no" thì:

 Chọn một thuộc tính X trong tập thuộc tính của tập mẫu dữ liệu, X có các giá trị vi,v2,...vn.

 Chia tập mẫu trong T thành các tập con T1, T2,..,Tn. chia theo giá trị của X.

 Tạo n nút con T; (i=1,2.n) với nút cha là nút T.

 Tạo các nhánh nối từ nút T đến các nút T; (i=1,2.n) là các thuộc tính của X.

5. Thực hiện lặp cho các nút con T:(i =1,2..n) và quay lại bƣớc 2.

Ta nhận thấy trong bƣớc 4 của thuật toán, thuộc tính đƣợc chọn để triển khai cây là tuỳ ý. Do vậy cùng với một tập mẫu dữ liệu huấn luyện nếu áp dụng thuật toán CLS với thứ tự chọn thuộc tính triển khai cây khác nhau, sẽ

cho ra các cây có hình dạng khác nhau. Việc lựa chọn thuộc tính sẽ ảnh hƣởng tới độ rộng, độ sâu, độ phức tạp của cây. Vì vậy một câu hỏi đặt ra là thứ tự thuộc tính nào đƣợc chọn để triển khai cây sẽ là tốt nhất. Vấn đề này sẽ đƣợc giải quyết trong thuật toán ID3 dƣới đây.

2.2.2. Thuật toán ID3

Thuật toán ID3 đƣợc phát biểu bởi Quinlan (trƣờng đại học Syney, Australia) và đƣợc công bố vào cuối thập niên 70 của thế kỷ 20[4]. Sau đó, thuật toán ID3 đƣợc giới thiệu và trình bày trong mục Induction on decision trees, machine learning năm 1986. ID3 đƣợc xem nhƣ là một cải tiến của CLS với khả năng lựa chọn thuộc tính tốt nhất để tiếp tục triển khai cây tại mỗi bƣớc. ID3 xây dựng cây quyết định từ trên- xuống (top -down).

- Với việc tính toán giá trị Gain để lựa chọn thuộc tính tối ƣu cho việc triển khai cây, thuật toán ID3 đƣợc xem là một cải tiến của thuật toán CLS. Tuy nhiên thuật toán ID3 không có khả năng xử lý đối với những dữ liệu có chứa thuộc tính số - thuộc tính liên tục (numeric attribute) và khó khăn trong việc xử lý các dữ liệu thiếu (missing data) và dữ liệu nhiễu (noisy data). Vấn đề này sẽ đƣợc giải quyết trong thuật toán C4.5 sau đây.

2.2.3. Thuật toán C4.5

- Thuật toán C4.5 do Quinlan phát triển vào năm 1996[1][2][3][4]. Thuật toán C4.5 là một thuật toán đƣợc cải tiến từ thuật toán ID3 với việc cho phép xử lý trên tập dữ liệu có các thuộc tính số (numeric atributes) và và làm việc đƣợc với tập dữ liệu bị thiếu và bị nhiễu. Nó thực hiện phân lớp tập mẫu dữ liệu theo chiến lƣợc ƣu tiên theo chiều sâu (Depth - First). Thuật toán xét tất cả các phép thử có thể để phân chia tập dữ liệu đã cho và chọn ra một phép thử có giá trị GainRatio tốt nhất. GainRatio là một đại lƣợng để đánh giá độ hiệu quả của thuộc tính dùng để thực hiện phép tách trong thuật toán

để phát triển cây quyết định. GainRatio đƣợc tính dựa trên kết quả tính toán đại lƣợng Information Gain theo công thức sau:

( , ) ( , ) ( , ) Gain X T GainRation X T SplitInfo X T  (2.5) Với: 2 ( ) | | | | ( , ) log | | | | i i i Value X T T SplitInfo X T T T     (2.6) Trong đó:

Value(X) là tập các giá trị của thuộc tính X

Ti là tập con của tập T ứng với thuộc tính X = giá trị là vi.

Đối với các thuộc tính liên tục, chúng ta tiến hành phép thử nhị phân cho mọi giá trị của thuộc tính đó. Để thu thập đƣợc giá trị Entropy gain của tất cả các phép thử nhị phân một cách hữu hiệu ta tiến hành xắp xếp các dữ liệu theo giá trị của thuộc tính liên tục đó bằng thuật toán Quicksort

Thuật toán xây dựng cây quyết định C4.5

Mô tả thuật toán dƣới dạng giả mã nhƣ sau: Function xay_dung_cay(T)

{

1. <Tính toán tần xuất các giá trị trong các lớp của T>;

2. If <Kiểm tra các mẫu, nếu thuộc cùng một lớp hoặc có rất ít mẫu khác lớp>Then <Trả về 1 nút lá>

3. For <Với mỗi thuộc tính A> Do <Tính giá trị Gain(A)>;

4. <Tại nút N, thực hiện việc kiểm tra để chọn ra thuộc tính có giá trị Gain tốt nhất (lớn nhất). Gọi N.test là thuộc tính có Gain lớn nhất>;

5. If <Nếu N.test là thuộc tính liên tục> Then <Tìm ngƣỡng cho phép tách của N.test>; (adsbygoogle = window.adsbygoogle || []).push({});

6. For <Với mỗi tập con T đƣợc tách ra từ tập T> Do ( T' đƣợc tách ra theo quy tắc:

- Nếu N.test là thuộc tính liên tục tách theo ngƣỡng ở bƣớc 5 - Nếu N.test là thuộc tính phân loại rời rạc tách theo các giá trị của thuộc tính này.

)

7. { If <Kiểm tra, nếu T rỗng>} Then <Gán nút con này của nút N là nút lá>; Else

8. <Gán nút con này là nút đƣợc trả về bằng cách gọi đệ qui lại đối với hàm xay_dung_cay(T’), với tập T‟>;

}

9. <Tính toán các lỗi của nút N>; <Trả về nút N>;

Một số công thức đƣợc sử dụng 1 | | ( ) * ( ) | | n i x i i T Info T Info T T    (2.7) ( ) ( ) x( )

Gain XInfo TInfo T (2.8)

(2.8) đƣợc sử dụng làm tiêu chuẩn để lựa chọn thuộc tính khi phân lớp. Thuộc tính đƣợc chọn là thuộc tính có giá trị Gain tính theo (2.8) đạt giá trị lớn nhất[12].

Một số cài tiến của thuật toán C4.5:

1. Làm việc với thuộc tính đa trị

Tiêu chuẩn (2.8) có một khuyết điểm là không chấp nhận các thuộc tính đa trị. Vì vậy thuật toán C4.5 đã đƣa ra các đại lƣợng GainRatio và SplitInfo (SplitInformation), chúng đƣợc xác định theo các công thức sau:

( , ) | | j freq C T P S  2 1 | | ( ) log | | n i i i T T SplitInfo X T T           (2.9) ( ) ( ) ( ) Gain X GainRatio X SplitInfo X  (2.10)

Giá trị SplitInfo là đại lƣợng đánh giá thông tin tiềm năng thu thập đƣợc khi phân chia tập T thành n tập hợp con. GainRatio là tiêu chuẩn để đánh giá việc lựa chọn thuộc tính phân loại.

2. Làm việc với dữ liệu bị thiếu

Thuật toán vừa xây dựng dựa vào giả thuyết tất cả các mẫu dữ liệu có đủ các thuộc tính. Nhƣng trong thực tế, xẩy ra hiện tƣợng dữ liệu bị thiếu, tức là ở một số mẫu dữ liệu có những thuộc tính không đƣợc xác định, hoặc mâu thuẫn, hoặc không bình thƣờng. Ta xem xét kỹ hơn với trƣờng hợp dữ liệu bị thiếu. Đơn giản nhất là không đƣa các mẫu với các giá trị bị thiếu vào, nếu làm nhƣ vậy thì có thể dẫn đến tình trạng thiếu các mẫu học. Giả sử T là một tập hợp gồm các mẫu cần đƣợc phân loại, X là phép kiểm tra theo thuộc tính L, U là số lƣợng các giá trị bị thiếu của thuộc tính L. Khi đó ta có 2 1 ( , ) ( , ( ) *log | | | | k j i j freq C T freq C T Info T T U T U             (2.11) 2 1 | | ( ) *log ( ) | | n i x i j T Info T T T U     (2.12)

Trong trƣờng hợp này, khi tính tần số freq (Ci, T) ta chỉ tính riêng các mẫu với giá trị trên thuộc tính L đã xác định. Khi đó tiêu chuẩn (2.8) đƣợc viết lại bằng công thức (2.13) nhƣ sau:

| |

( ) ( ( ) ( ))

| | x

T U

Gain X Info T Info T

T

  (2.13)

Tƣơng tự thay đổi tiêu chuẩn (2.13). Nếu phép kiểm tra có N giá trị đầu vào thì tiêu chuẩn (2.13) đƣợc tính nhƣ trong trƣờng hợp chia N tập hợp ban đầu thành (N+1) tập hợp con.

Giả sử phép thử X có các giá trị Ol,O2,....On đƣợc lựa chọn theo tiểu chuẩn (2.13), ta cần xử lý nhƣ thế nào với các dữ liệu bị thiếu. Giả sử mẫu từ tập

hợp T với đầu ra là Oi có liên quan đến tập hợp Ti thì khả năng mẫu đó thuộc tập hợp Ti là 1.

Giả sử mỗi mẫu trong Ti có một chỉ số xác định xác suất thuộc tập hợp Ti. Nếu mẫu có giá trị thuộc tính L thì có trọng số bằng 1. Nếu trong trƣờng hợp ngƣợc lại, thì mẫu này liên quan đến tập con T l,T2,…Tn với xác xuất tƣơng ứng là : (adsbygoogle = window.adsbygoogle || []).push({});

1 2 |T |

|T | |T |

, ,...,

|T|-U |T|-U |T|-U

n

Ta có thể dễ dàng thấy đƣợc rằng tổng các xác xuất này bằng 1.

1 | | 1 | | n i j T T U    

Tóm lại giải pháp này đƣợc phát biểu nhƣ sau: xác suất xuất hiện của các giá trị bị thiếu tỷ lệ thuận với xác suất xuất hiện của các giá trị không thiếu.

Qua tìm hiểu trên ta thấy thuật toán C4.5 là cải tiến của thuật toán ID3

2.2.4. Thuật toán SLIQ[5]

Thuật toán SLIQ (Supervised Learning In Quest) đƣợc gọi là thuật toán phân lớp leo thang nhanh. Thuật toán này có thể áp dụng cho cả hai kiểu thuộc liên tục và thuộc tính rời rạc[4][5].

Thuật toán này có sử dụng kỹ thuật tiền xử lý phân loại(Pre sorting) trƣớc khi xây dựng cây, do đó giải quyết đƣợc vấn đề bộ nhớ cho thuật toán ID3.

Thuật toán SLIQ có thể phân lớp rất hiệu quả đối với các tập dữ liệu lớn và không phụ thuộc vào số lƣợng lớp, số lƣợng thuộc tính và số lƣợng mẫu trong tập dữ liệu.

Xây dựng cây quyết định theo thuật toán này chia ra làm 2 giai đoạn: 1. Giai đoạn tạo cây

 Vào: tập dữ liệu học T

 Ra: cây đƣợc phân loại trên tập T Hàm

MakeTree(TrainningData T) {partition (T) ;}

2. Giai đoạn phân chia tập dữ liệu S

Thủ tục phân loại tập S có giả mã nhƣ sau: Function partition (Data S)

{

If <tất cả các giá trị của tập S đều thuộc cùng một lớp> Then <kết thúc>

Else{ <Đánh giá mỗi thuộc tính A để phân chia>;

<Tách tập S thành 2 tập con S1 và S2 theo thuộc tính A mà có giá trị chia tách tốt nhất>;

<Gọi đệ qui thủ tục Partition(S1)>; <Gọi đệ qui thủ tục Partition(S2)>; }

Chỉ số chia tách (Spliting index):

Vấn đề đặt ra trong thủ tục Partition(S) trên là làm thế nào để đánh giá thuộc tính tốt nhất cho việc lựa chọn thuộc tính để chia tách. Để đánh giá thuộc tính tốt nhất đó, thuật toán SLIQ đƣa vào một đại lƣợng, gọi là chỉ số hàm Gini, chỉ số gini đƣợc định nghĩa nhƣ sau:

 Nếu tập dữ liệu T gồm n lớp thì giá trị gini của tập T ký hiệu Gini(T) đƣợc xác định bởi công thức:

2

( ) 1 j

Gini T  P (2.14) Trong đó Pj là tần suất xuất hiện của lớp j trong tập mẫu T. (adsbygoogle = window.adsbygoogle || []).push({});

 Nếu tập T đƣợc tách ra làm 2 tập con T1 và T2 thì chỉ số Gini của tập T khi đƣợc chia tách ký hiệu là gini(T)spiit đƣợc xác định bởi công thức sau: 1 2 1 2 | | | | ( ) ( ) ( ) | | | | split T T

Gini T gini T gini T

T T

  (2.15)

Sau khi tính toán chỉ số gini cho các nút, thuộc tính nào có chỉ số gini nhỏ nhất sẽ đƣợc chọn để thực hiện tiếp việc triển khai cây.

Kỹ thuật tiền xử lý phân loại(Pre_sorting Technique)

Kỹ thuật này tạo ra một lƣợc đồ, lƣợc đồ này đƣợc tạo ra bằng cách sắp xếp dữ liệu tạo ra tại mỗi nút. Ứng với mỗi thuộc tính có một danh sách riêng tạo ra bởi tập giá trị của thuộc tính và định danh các mẫu dữ liệu. Mỗi danh sách riêng gọi là danh sách lớp (class list). Các danh sách riêng sẽ tạo ra tƣơng ứng nhãn của cây gắn với các mẫu học.

Thuật toán SLIQ yêu cầu tại một thời điểm có một danh sách lớp và chỉ một danh sách thuộc tính đƣợc lƣu trữ trong bộ nhớ của máy tính, các danh sách còn lại lƣu trên đĩa.

Đánh giá sự phân chia:

Thuật toán đánh giá phân chia: EvaluateSplits ()

{

For <Với mỗi thuộc tính A> do {

< Duyệt danh sách các giá trị của thuộc tính A>; For <với mỗi giá trị v trong danh sách thuộc tính > do

<Tìm một mục tƣơng ứng trong danh sách lớp, sau đó hãy tìm lớp tƣơng ứng với nút lá 1>;

<Cập nhật biểu đồ lớp vào trong nút lá 1>;

If <A là thuộc tính số> Then for <với mỗi nút lá trong cây> do <Tìm tập con của tập A mà có chỉ số tách là tốt nhất>

} }

Cập nhật danh sách lớp:

Thuật toán cập nhật danh sách lớp: UpdateLabels()

{ for<Với mỗi thuộc tính A đƣợc sử dụng trong một phép tách> do { <Duyệt danh sách các thuộc tính của A>;

For <Với môi giá trị v trong danh sách các thuộc tính của A> do {<Tìm một mục tƣơng ứng với danh sách lớp e>;

<Tìm lớp c chứa giá trị v bằng cách áp dụng sự kiểm tra phân chia tại nút c đƣợc tham chiếu từ e>;

<Cập nhật nhãn của lớp cho lớp e vào lớp mới c>;

<Cập nhật nút đƣợc tham chiếu trong e vào nút con tƣơng ứng cho lớp c>;

} }

}

2.3.KẾT CHƢƠNG

Chƣơng 2 trình bày tổng quan về khai phá dữ liệu bằng hình thức phân lớp với cây quyết định, bao gồm khái niệm phân lớp và ƣu điểm cây quyết định. Nghiên cứu thuật toán khai phá dữ liệu, trong đó nghiên cứu sâu về thuật toán ID3 làm tiền đề cho việc nghiên cứu thực nghiệm, đồng thời đƣa ra những khó khăn trong quá trình sử dụng thuật toán ID3.

Các khó khăn này cần phải đƣợc giải quyết trong khai phá dữ liệu. Trong chƣơng sau, luận văn sẽ trình bày một ứng dụng cụ thể mà ngân hàng

có thể áp dụng để phân loại khách hàng của mình, căn cứ vào kết quả ngân hàng sẽ có thêm sự hỗ trợ để quyết định có cho khách hàng vay vốn hay không. (adsbygoogle = window.adsbygoogle || []).push({});

CHƯƠNG 3

ỨNG DỤNG CÂY QUYẾT ĐỊNH TRONG PHÂN LOẠI KHÁCH HÀNG VAY VỐN TẠI NGÂN HÀNG VIETINBANK CHI NHÁNH

KON TUM

3.1.GIỚI THIỆU QUY TRÌNH TÍN DỤNG TẠI NGÂN HÀNG VIETINBANK CHI NHÁNH KON TUM CHI NHÁNH KON TUM

3.1.1. Tổng quan về quy trình tín dụng: a. Khái niệm: a. Khái niệm:

Quy trình tín dụng là bảng tổng hợp mô tả công việc của ngân hàng từ khi tiếp nhận hồ sơ vay vốn của khách hàng cho đến khi quyết định cho vay, giải ngân, thu nợ và thanh lý hợp đồng tín dụng.

b. Vai trò:

Việc xác lập một quy trình tín dụng và không ngừng hoàn thiện nó đặc biệt quan trọng đối với một ngân hàng thƣơng mại:

 Về mặt hiệu quả, một quy trình tín dụng hợp lý sẽ giúp cho ngân hàng nâng cao chất lƣợng tín dụng và giảm thiểu rủi ro tín đụng.

 Về mặt quản lý, quy trình tín dụng có tác dụng:

+ Làm cơ sở cho việc phân định quyền, trách nhiệm cho từng bộ phận trong hoạt động tín dụng.

+ Làm cơ sở để thiết lập các hồ sơ, thủ tục vay vốn về mặt hành chính. + Chỉ rõ mối quan hệ giữa các bộ phận liên quan trong hoạt động tín

c. Nội dung cơ bản của quy trình tín dụng:

Các giai đoạn Nguồn cung cấp thông tin Nhiệm vụ của ngân hàng Kết quả Bƣớc 1: Lập hồ sơ vay vốn Khách hàng đi vay cung cấp thông tin. Tiếp xúc,phổ biên và hƣớng dẫn khách hàng lập hồ sơ vay vốn Hoàn thành hồ sơ để chuyển sang giai đoạn sau Bƣớc 2: Phân tích tín dụng -Hồ sơ đề nghị vay vốn từ giai đoạn trƣớc chuyển sang. -Các thông tin bổ sung từ phỏng vấn, hồ sơ lƣu trữ. -Tổ chức thẩm định về các măt tài chính và phi tài chính do các cá nhân hoặc bộ phận thẩm đinh thực hiện

Báo cáo kêt quả thẩm định đế chuyển sang bộ phận có thẩm

Một phần của tài liệu 28064_1712202001934994LUANVANPHAMDINHBON (Trang 35)