Thuật toán thay thế giá trị thiếu với giá trị trung bình

Một phần của tài liệu Xử lý giá trị thiếu trong khai thác dữ liệu: luận văn thạc sĩ (Trang 27 - 33)

Đối với phương pháp này, chúng ta có 2 cách thức để thực hiện: đó là sử dụng giá trị trung bình của thuộc tính hoặc sử dụng giá trị trung bình của phân nhóm tùy thuộc vào đặc điểm của các nhóm đối tượng khác nhau. Vì vậy, với phương pháp này, sẽ tương ứng với 2 thuật toán cho 2 trường hợp.

2.2.2.1Thuật toán thay thế giá trị thiếu với giá trị trung bình của thuộc tính

* Ý tưởng: Thay thế giá trị thiếu của một thuộc tính bằng giá trị trung bình của thuộc tính đó. Thuật toán này áp dụng cho tập dữ liệu không phân nhóm các đối tượng.

* Thuật toán

Input: Tập dữ liệu T = (U,A) với các bộ dữ liệu có gía trị thiếu.

Begin

For mỗi thuộc tính có giá trị thiếu do

Tìm giá trị trung bình X của thuộc tính có giá trị thiếu Thay thế giá trị thiếu bằng giá trị trung bình X

Endfor End

Output: Tập dữ liệu T là tập dữ liệu hoàn chỉnh, không chứa giá trị thiếu. Đây là một thuật toán tương đối đơn giản. Độ phức tạp của thuật toán là O(n), với n là số bộ dữ liệu có trong cơ sở dữ liệu.

Để hiểu rõ hơn, chúng ta sẽ xét ví dụ như sau:

Ví dụ 1.1: Xét bảng dữ liệu như sau:

Bảng 2.4. Bảng dữ liệu ví dụ về các loại sữa 2

- Xác định dữ liệu có giá trị thiếu là thuộc tính số lượng của Sữa Nuti. - Tính toán giá trị trung bình của thuộc tính số lượng ở các mặt hàng

còn lại avg = (30+ 10)/2 =20.

- Thay thế giá trị thiếu của thuộc tính số lượng Sữa Nuti bằng giá trị trung bình vừa tính toán. Ta sẽ được bộ dữ liệu đầy đủ như sau:

Bảng 2.5. Bảng dữ liệu ví dụ đầy đủ về các loại sữa 2

2.2.2.2Thuật toán thay thế giá trị thiếu với giá trị trung bình của phân nhóm

* Ý tưởng: Đôi khi việc sử dụng giá trị trung bình của thuộc tính để thay thế cho các giá trị thiếu sẽ không phù hợp do sự khác nhau về đặc điểm của các nhóm đối tượng khác nhau. Lúc này, chúng ta có thể sử dụng các giá trị trung bình của phân nhóm để thay thế cho các giá trị bị thiếu.

Hình 2.1: Thay thế giá trị thiếu với giá trị trung bình của phân nhóm

* Thuật toán Input:

- Tập dữ liệu T=(U,A) với các bộ dữ liệu có giá trị thiếu. - Tập T gồm các bảng con như sau: T1=(U1,C,D1) T2=(U2,C,D2),

Tn=(Un,C,Dn)

trong đó U = (U1,U2,…,Un) và D = (D1,D2, …, Dn).

Begin

For mỗi bảng con do

For mỗi thuộc tính với giá trị thiếu do

Tính giá trị trung bình X của thuộc tính trong bảng con Thay thế giá trị thiếu với giá trị trung bình X

EndFor EndFor End

Output: T là tập dữ liệu hoàn chỉnh với T1, T2, …, Tn là những tập dữ liệu con không có giá trị thiếu.

Các bước thay thế giá trị thiếu bằng trung bình của phân nhóm được thực hiện tương tự như thay thế giá trị trung bình của thuộc tính. Nhưng ở đây, chúng ta chỉ thực hiện trên từng nhóm đối tượng khác nhau. (adsbygoogle = window.adsbygoogle || []).push({});

Độ phức tạp của thuật toán là O(n2), thuật toán này tốn thời gian để xử lý hơn thuật toán thay thế giá trị thiếu bằng giá trị trung bình của thuộc tính.

Để hiểu rõ hơn nội dung thuật toán, chúng ta cùng xét ví dụ như sau:

Ví dụ 1.2: Xét bảng dữ liệu như sau:

- Xác định dữ liệu có giá trị thiếu là số lượng của nhóm sữa Grow Plus.

- Tính toán giá trị trung bình của thuộc tính số lượng ở nhóm sữa Grow Plus: avg = (10+ 30)/2 =20.

- Thay thế giá trị thiếu của số lượng Grow Plus bằng giá trị trung bình vừa tính toán. Ta sẽ được bộ dữ liệu đầy đủ như sau:

Bảng 2.7. Kết quả kiểm thử thuật toán thay thế giá trị trung bình thuộc tính

Phương pháp thay thế giá trị thiếu bằng giá trị trung bình là một phương pháp khá đơn giản và được sử dụng phổ thuộc tính để xử lý các bộ dữ liệu có giá trị thiếu. Tuy nhiên, có một số vấn đề gặp phải khi sử dụng phương pháp này đó là:

- Sử dụng hằng số trung bình để thay thế giá trị dữ liệu bị mất sẽ làm thay đổi đặc tính của tập dữ liệu ban đầu, đôi khi chúng không gần sát với dữ liệu ban đầu.

Một mở rộng của phương pháp này đó là là thay thế dữ liệu bị thiếu cho một thuộc tính nhất định theo giá trị trung bình hoặc mode của tất cả các giá trị đã biết của thuộc tính đó trong lớp mà trường hợp thiếu dữ liệu thuộc vào.

2.2.3 Thuật toán xóa tất cả các bộ dữ liệu có giá trị thiếu

* Ý tưởng: Phương pháp này sẽ bỏ qua những bộ dữ liệu có giá trị thuộc tính bị thiếu và hệ thống sẽ phân tích dựa trên những bộ dữ liệu còn lại. Phương pháp này thường được sử dụng trong trường hợp bộ dữ liệu bị thiếu nhãn lớp hoặc bộ dữ liệu có nhiều thuộc tính có giá trị thiếu. Đây là một phương pháp khá đơn giản, tuy nhiên nó có 2 nhược điểm chính đó là:

- Tập dữ liệu được dùng để phân tích sẽ bị giảm đáng kể về kích thước khi có nhiều bộ dữ liệu chứa giá trị thiếu.

- Dữ liệu không phải lúc nào cũng bị mất hoàn toàn một cách ngẫu nhiên. Xóa những bộ dữ liệu có giá trị thiếu sẽ ảnh hưởng về mặt phân bố dữ liệu và phân tích, thống kê dữ liệu. Đặc biệt trong trường hợp xóa các bộ dữ liệu ở các thuộc tính có tỷ lệ mất cao. Một mở rộng của phương pháp này đó là trước khi xóa bất kỳ bộ dữ liệu nào, chúng ta sẽ phải thực hiện phân tích mối liên hệ trên toàn tập dữ liệu, đặc biệt là ở các thuộc tính có tỷ lệ giá trị thiếu cao.

* Thuật toán:

Input: Tập dữ liệu T=(U,A) với các bộ dữ liệu có giá trị thiếu.

Begin

For mỗi giá trị thiếu do

Xóa bộ dữ liệu

EndFor End

Độ phức tạp của thuật toán là O(n).

Ví dụ: Xét bảng dữ liệu như sau:

Bảng dữ liệu trên có 6 bộ dữ liệu, giá trị thiếu là thuộc tính “số lượng” của nhóm “Sữa Grow Plus”. Áp dụng thuật toán xóa bộ dữ liệu có giá trị thiếu, ta thu được bảng dữ liệu kết quả còn lại 5 bộ dữ liệu, không có giá trị thiếu như sau:

Bảng 2.8. Kết quả kiểm thử thuật toán xóa bộ dữ liệu có giá trị thiếu

Một phần của tài liệu Xử lý giá trị thiếu trong khai thác dữ liệu: luận văn thạc sĩ (Trang 27 - 33)