1. Trang chủ
  2. » Luận Văn - Báo Cáo

XÂY DỰNG WEBSITE GIỚI THIỆU sản PHẨM sử DỤNG QUẢNG cáo THÔNG MINH sử DỤNG K MEANS

20 718 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 1,15 MB

Nội dung

Phân công công việc1 Tìm hiểu thuật toán Tất cả thành viên 3 Sưu tập nguồn dữ liệu Trần Văn Huân 4 Thiết kế giao diện phía người sử dụng Lê Văn Nam 5 Thiết kế giao diện phía quản trị Lê

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN

MÔN HỌC: HỆ CHUYÊN GIA

ĐỀ TÀI: XÂY DỰNG WEBSITE GIỚI THIỆU SẢN PHẨM SỬ DỤNG QUẢNG

CÁO THÔNG MINH SỬ DỤNG K-MEANS

Giáo viên hướng dẫn: Th.s Trần Thanh Hùng

Lớp : KHMT1-K5-Nhóm 13

Nhóm sinh viên thực hiện:

1- Trịnh Xuân Đồng 2- Trần Văn Huân 3- Lê Văn Nam

Hà Nội, ngày 01 tháng 08 năm 2013

Trang 2

MỤC LỤC

Phân công công việc 3

Lời Nói Đầu 4

CHƯƠNG I: TỔNG QUAN VỀ BÀI TOÁN PHÂN CỤM DỮ LIỆU 5

1 Giới thiệu về kỹ thuật phân cụm trong Khai phá dữ liệu (Clustering Techniques in Data Mining) 5

2 Lĩnh vực áp dụng phân cụm dữ liệu 5

CHƯƠNG II : THUẬT TOÁN KMEANS 7

1 Mô tả thuật toán 7

2 Các bước thực hiện 7

3 Nhận xét thuật toán 8

CHƯƠNG III : XÂY DỰNG WEBSITE BÁN HÀNG THÔNG MINH SỬ DỤNG THUẬT TOÁN KMEANS 9

1 Mục đích bài toán 9

2 Cấu trúc dữ liệu của bài toán 9

a Dữ liệu vào 9

b Dữ liệu ra 9

c Thiết kế CSDL 9

d Các thuật toán sử dụng 11

3 Các bước thực hiện bài toán 14

CHƯƠNG IV: MỘT SỐ GIAO DIỆN VÀ KẾT QUẢ 16

1 Giao diện chương trình 16

2 Kết quả đạt được 19

3 Hướng phát triển 19

4 Tài liệu tham khảo 20

Trang 3

Phân công công việc

1 Tìm hiểu thuật toán Tất cả thành viên

3 Sưu tập nguồn dữ liệu Trần Văn Huân

4 Thiết kế giao diện phía người sử dụng Lê Văn Nam

5 Thiết kế giao diện phía quản trị Lê Văn Nam

7 Xây dựng module ChuanHoaDuLieuSQL Trần Văn Huân

8 Xây dựng module TinhKhoangCach Trần Văn Huân

9 Xây dựng module Thêm mới dữ liệu Lê Văn Nam

10 Xây dựng module đọc dữ liệu SQL Lê Văn Nam

11 Xây dựng module phân cụm Trịnh Xuân Đồng

Trang 4

Lời Nói Đầu

Hê chuyên gia (HCG) là một lĩnh vực của khoa học máy tính, nghiên cứu sự thiết kế của các tác nhân thông minh Các áp dụng của HCG rất đa dạng và phong phú, hiện nay đã có rất nhiều hệ thông minh ra đời như: các hệ thống tư vấn, các hệ điều khiển tự động, các hệ nhận dạng Kỹ thuật của HCG đã được sử dụng trong việc xây dựng các hệ mềm nhằm tạo ra các hệ mềm mang yếu tố thông minh, linh hoạt và tiện dụng

Một trong những nghiên cứu đó là áp dụng thuật toán K-mean đưa ra các giải thuật phân cụm để gom cụm các sản phẩm có những thuộc tính tương tự nhau giúp cho việc tìm kiếm và tư vấn được nhanh chóng và chính xác Giải thuật phân cụm là một thuật toán đầu vào là một tập gồm N phân tử và K cụm và trả

về kết quả là K cụm tương ứng với các phần tử có thuộc tính tương tự nhau và không trùng lặp nhau

Trong quá trình thực hiện đề tài, tuy có nhiều cố gắng nhưng sẽ không tránh khỏi những sai sót, rất mong được thầy hướng dẫn và góp ý Chúng em xin chân thành cảm ơn thầy Trần Thanh Hùng đã tận tình hướng dẫn và tạo điều kiện tốt trong quá trình học tập cũng như trong quá trình chúng em hoàn thành đề tài này

Nhóm sinh viên thực hiện

Trang 5

CHƯƠNG I: TỔNG QUAN VỀ BÀI TOÁN PHÂN CỤM DỮ

LIỆU

1. Giới thiệu về kỹ thuật phân cụm trong Khai phá dữ liệu (Clustering Techniques

in Data Mining)

Phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu, nó thuộc lớp các

phương pháp Unsupervised Learning trong Machine Learning Có rất nhiều

định nghĩa khác nhau về kỹ thuật này, nhưng về bản chất ta có thể hiểu “Phân cụm là các qui trình tìm cách nhóm các đối tượng đã cho vào các cụm (clusters), sao cho các đối tượng trong cùng 1 cụm tương tự (similar) nhau và các đối tượng khác cụm thì không tương tự (Dissimilar) nhau”.

Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm của dữ liệu Các thuật toán phân cụm (Clustering Algorithms) đều sinh ra các cụm (clusters) Tuy nhiên, không có tiêu chí nào là được xem là tốt nhất để đánh hiệu của của phân tích phân cụm, điều này phụ thuộc vào mục đích của phân cụm như: data reduction, “natural clusters”, “useful” clusters, outlier detection

2 Lĩnh vực áp dụng phân cụm dữ liệu

Kỹ thuật phân cụm có thể áp dụng trong rất nhiều lĩnh vực như:

Marketing: Xác định các nhóm khách hàng (khách hàng tiềm năng,

khách hàng giá trị, phân loại và dự đoán hành vi khách hàng,…) sử dụng sản phẩm hay dịch vụ của công ty để giúp công ty có chiến lược kinh doanh hiệu quả hơn;

Biology: Phận nhóm động vật và thực vật dựa vào các thuộc tính của

chúng;

Libraries: Theo dõi độc giả, sách, dự đoán nhu cầu của độc giả…;

Trang 6

Insurance, Finance: Phân nhóm các đối tượng sử dụng bảo hiểm và các

dịch vụ tài chính, dự đoán xu hướng (trend) của khách hàng, phát hiện gian lận tài chính (identifying frauds);

WWW: Phân loại tài liệu (document classification); phân loại người

dùng web (clustering weblog);…

Trang 7

CHƯƠNG II : THUẬT TOÁN KMEANS

1 Mô tả thuật toán

K-Means là thuật toán rất quan trọng và được sử dụng phổ biến trong kỹ thuật phân cụm Tư tưởng chính của thuật toán K-Means là tìm cách phân nhóm các đối tượng (objects) đã cho vào K cụm (K là số các cụm được xác đinh trước, K nguyên dương) sao cho tổng bình phương khoảng cách giữa các đối tượng đến tâm nhóm (centroid ) là nhỏ nhất

Thuật toán K-Means được mô tả như sau

2 Các bước thực hiện

Thuật toán K-Means thực hiện qua các bước chính sau:

 Chọn ngẫu nhiên K tâm (centroid) cho K cụm (cluster) Mỗi cụm được đại diện bằng các tâm của cụm

 Tính khoảng cách giữa các đối tượng (objects) đến K tâm (thường dùng khoảng cách Euclidean)

 Nhóm các đối tượng vào nhóm gần nhất

Trang 8

 Xác định lại tâm mới cho các nhóm

 Thực hiện lại bước 2 cho đến khi không có sự thay đổi nhóm nào của các đối tượng

3 Nhận xét thuật toán

 Thuật toán K-mean có rất nhiều ứng dụng từ mạng Neural network, nhận dạng mẫu, trí tuệ nhân tạo, các lĩnh vực sử lý ảnh cũng như tư vấn trong các trang Web

 Nó có thể áp dụng cho các bài toán phân loại mà dữ liệu có nhiều trường, nhiều thuộc tính với K là số loại mà bài toán muốn phân

 Nhược điểm :

- Nếu số lượng điểm đầu vào không nhiều việc gom nhóm lúc đầu sẽ là kết quả của bài toán

- Số lượng nhóm K phải được xác định trước bằng tay

- Các thuộc tính của mỗi điểm đều có mức đánh giá là như nhau không phân biệt thuộc tính nào quan trọng hơn thuộc tính nào

- Đối với các điểm dữ liệu mà khoảng cách quá xa trọng tâm nếu gom nhóm sẽ dẫn đến việc tính lại trọng tâm không còn chính xác

Trang 9

CHƯƠNG III : XÂY DỰNG WEBSITE BÁN HÀNG THÔNG

MINH SỬ DỤNG THUẬT TOÁN KMEANS

1 Mục đích bài toán

 Đặt vấn đề : trong quá trình tìm kiếm mua các sản phẩm trên mạng cũng như các trang Web Người mua chưa biết lên mua mặt hàng nào

và mua những sản phẩm nào đi kèm Các nhà thiết kế trang Web đã áp dụng thuật toán K-mean để tư vấn giúp người mua có được những tư vấn giúp đỡ một cách nhanh chóng và chính xác nhất

 Thuật toán được áp dụng trực tiếp lên CSDL, phân dữ liệu thành các cụm có các đặc tính tương tự nhau Nhờ đó

2 Cấu trúc dữ liệu của bài toán

a Dữ liệu vào

 Danh sách các đặc tính của một sản phẩm (VD : Chất liệu, màu sắc, đơn giá, kích thước…)

 Số cụm K mà ta muốn phân cụm đỗi với danh sách trên

b Dữ liệu ra

 Danh sách các sản phẩm đã được phân vào K cụm

 Mỗi cụm sẽ chứa các đặc tính tương đối gần nhau

c Thiết kế CSDL

 Đỗi với đề tài xây dựng website bán hàng, bên cạnh những bảng dữ liệu cần có của một hệ thống bán hàng, chúng ta chỉ cần bổ sung thêm một số bảng để lưu kết quả của quá trình phân cụm dữ liệu, phục vụ cho quá trình tư vấn về sau

 Các bảng và cấu trúc dữ liệu cho từng bảng :

Bảng Color – Màu sắc

Color ColorID int Mã màu

colorName Nvacrchar(Max) Tên màu

Bảng Size – Kích cỡ

Size SizeID int Mã kích cỡ

SizeName Nvacrchar(Max) Tên kích cỡ

Bảng Material – Chất liệu

Trang 10

Material MaterialID int Mã chất liệu

MaterialName Nvacrchar(Max) Tên chất liệu

Bảng Type – Kiểu dáng

Type TypeID int Mã kiểu

TypeName Nvacrchar(Max) Tên kiểu

Bảng Product – Sản Phẩm

Product ProductID int Mã SP

ProductName Nvacrchar(Max) Tên SP

UrlSmallImage Nvacrchar(Max) Ảnh nhỏ

UrlLargeImage Nvacrchar(Max) Ảnh lớn

Visted int

Số lượng người xem

ColorID int Mã màu

SizeID int Mã kích cỡ

TypeID int Mã kiểu

Price int Đơn giá

MaterialID int Mã chất liệu

CreateDate Datetime Ngày tạo

Bảng Table_ChuanHoaDuLieu – Chuẩn hóa dữ liệu trước khi phân cụm

Table_ChuanHoaDuLieu ProductID int Mã SP

Visted int Số lượng người xem

ColorID int Mã màu

SizeID int Mã kích cỡ

TypeID int Mã kiểu

Price int Đơn giá

MaterialID int Mã chất liệu

Bảng Cluster – Cụm sau khi phân cụm

Cluster ProductID int Mã SP

Trang 11

Cluster Nvacrchar(Max) MÃ cụm

Hình 1 : Thiết kế CSDL các bảng trên SQL Server

d Các thuật toán sử dụng

Thuật toán chuẩn hóa dữ liệu rời rạc

 Khi xây dựng chương trình và thực nghiệm nhóm nhận thấy đỗi với các dữ liệu rời rạc (không liên tục) thì kết quả của thuật toán ảnh hưởng rất nhiều Cụ thể là theo hướng xấu đi (Dữ liệu phân cụm chưa chính xác) Chính vì vậy cần một thuật toán để chuẩn hóa dữ liệu trước khi phân cụm

-Ta sử dụng công thức sau :

X[i]= (X[i]-Xmin)/(Xmax - Xmin)

 X[i] : Giá trị hiện tại tương ứng với đặc tính X của sản phẩm thứ i

 Xmax : Giá trị lớn nhất đặc tính X

 Xmin : Giá trị lớn nhất đặc tính X

 Sau khi áp dụng CT trên, dữ liệu của chúng ta sẽ được chuẩn hóa và có giá trị nằm trong miền [0,1]

 Xây dựng công thức trên bằng ngôn ngữ C#

Trang 12

private float tinhMinMaxTB(int Xmin, int Xmax, int xi) {

return (xi-Xmin)/(float)(Xmax-Xmin);

}

Định nghĩa một sản phẩm (hay 1 vector)

public class item {

public float GheTham { get; set; } public float MauSac { get; set; } public float KichThuoc { get; set; } public float KieuDang { get; set; } public float ChatLieu { get; set; } public float DonGia { get; set; } public float KhuyenMai { get; set; } public string ProductID { get; set; } }

Tính khoảng cách giữa hai sản phẩm

private float tinhKhoangCachHaiDiem(item x, item y) {

float GheTham = y.GheTham - x.GheTham;

float MauSac = y.MauSac - x.MauSac;

float KichThuoc = y.KichThuoc - x.KichThuoc;

float KieuDang = y.KieuDang - x.KieuDang;

float ChatLieu = y.ChatLieu - x.ChatLieu;

float DonGia = y.DonGia - x.DonGia;

float KhuyenMai = y.KhuyenMai - x.KhuyenMai;

GheTham = GheTham * GheTham;

MauSac = MauSac * MauSac;

KichThuoc = KichThuoc * KichThuoc;

KieuDang = KieuDang * KieuDang;

ChatLieu = ChatLieu * ChatLieu;

DonGia = DonGia * DonGia;

KhuyenMai = KhuyenMai * KhuyenMai;

float kq = (float)(Math.Sqrt(GheTham + MauSac + KichThuoc + KieuDang + ChatLieu + DonGia + KhuyenMai));

return kq;

}

Tính giá trị trung bình của một cụm

private item tinhToanDoTB(int k)

{

float GheTham = 0;

float MauSac = 0;

float KichThuoc = 0;

Trang 13

float KieuDang = 0;

float ChatLieu = 0;

float DonGia = 0;

float KhuyenMai = 0;

int counter = 0;

for (int i = 0; i < tongSoVecTor; i++)

{

if (ProductID[1, i] == k)

{

GheTham += vector[i].GheTham;

MauSac += vector[i].MauSac;

KichThuoc += vector[i].KichThuoc;

KieuDang += vector[i].KieuDang;

ChatLieu += vector[i].ChatLieu;

DonGia += vector[i].DonGia;

KhuyenMai += vector[i].KhuyenMai;

counter++;

}

}

item kq = new item();

if (counter== 0)

{

kq.GheTham = 0;

kq.KhuyenMai = 0;

kq.KichThuoc = 0;

kq.KieuDang = 0;

kq.MauSac = 0;

kq.ChatLieu = 0;

kq.DonGia = 0;

}

else

{

kq.GheTham = GheTham / (float)counter;

kq.KhuyenMai = KhuyenMai / (float)counter;

kq.KichThuoc = KichThuoc / (float)counter;

kq.KieuDang = KieuDang / (float)counter;

kq.MauSac = MauSac / (float)counter;

kq.ChatLieu = ChatLieu / (float)counter;

kq.DonGia = DonGia / (float)counter;

}

return kq;

}

Tính khoảng cách từ một sản phẩm đến một cụm

private float tinhKhoangCachDenCum(item x, int k)

Trang 14

{ //tim ra toa do TB cua cuam item TB = tinhToanDoTB(k);

//tinh khoang cach float KQ = tinhKhoangCachHaiDiem(x, TB);

return KQ;

}

3 Các bước thực hiện bài toán

 B1 : Chuẩn hóa dữ liệu SQL

 B2 : Đọc dữ liệu và lưu vào các biến

 B3 : Nhập số cụm K

 B4 : Chọn ngẫu nhiên K phần tử làm trọng tâm

 B5 : Tính khoảng cách từ một phần tử đến K cụm

 B6 : Tìm khoảng cách nhỏ nhất và gán phần tử đó vào cụm

 B7 : Kiểm tra xem các phần tử ở mỗi cụm có thay đổi gì không, nếu không có sự thay đổi thì thoát khỏi chương trình, ngược lại thì quay lại B5

4 Mã chương trình thực hiện

public void xuly() {

chuanHoaDuLieu();

docDulieu();

//phan cum ngau nhien cho cac phan tu

//ProductID[1, courter] =- 1;

for (int i = 0; i < socum; i++)

ProductID[1, i] = i;

//tien hanh phan cum du lieu

while (true)

{

int[,] TG=new int[2,tongSoVecTor];

for (int k = 0; k < tongSoVecTor; k++)

{

TG[0, k] = ProductID[0, k];

TG[1, k] = ProductID[1, k];

}

float[] khoangcach = new float[socum];

for (int j = 0; j < tongSoVecTor; j++)

{

for (int i = 0; i < socum; i++)

{

Trang 15

khoangcach[i] = tinhKhoangCachDenCum(vector[j], i);

}

//tim gia tri nho nhat la khoang cach tu diem j den cum i

float min = khoangcach[0];

int chiso = 0;

for (int k = 1; k < socum; k++)

{

if (khoangcach[k] < min)

{

min = khoangcach[k];

chiso = k;

}

}

ProductID[1, j] = chiso;

}

//so sanh xem co su khac biet hay khong

int check = 0;

for (int k = 0; k < tongSoVecTor; k++)

{

if (TG[1, k] != ProductID[1, k])

{

check = 1;

break;

}

}

if (check == 0) break;

}

//sau khi phan cum xong thi insert vao CSDL

xoaTatCaCacCum();

for (int i = 0; i < tongSoVecTor; i++)

{

string sql = "insert into Cluster values('" + ProductID[0,i] +

"','" +ProductID[1,i]+ "')";

new KetNoiCSDL().excuteNonquery(sql);

}

}

Trang 16

CHƯƠNG IV: MỘT SỐ GIAO DIỆN VÀ KẾT QUẢ

1 Giao diện chương trình

 Sau khi truy cập vào trang Web bạn có thể thực hiện các thao tác như đăng nhập nếu bạn đã có tài khoản tìm kiếm các sản phẩm mà cụ thể ở đây là các mặt hàng quần áo của hãng Việt Tiến Xem chi tiết cụ thể đầy đủ các thông tin của từng sản phẩm

Trang 17

Trong mục Danh Mục Sản Phẩm bạn có thể lựa chọn các thể loại mà trang web bán như: áo sơ mi ngắn tay, áo sơ mi dài tay, quần Jean, quần kaki…

Trang 18

 Ở trang quản trị Admin có thể kiểm tra mọi hoạt động của trang Web xem

có sự cố gì với trang Web hay không Đồng thời có thể cập nhật hàng hóa khi

có hàng mới nhập về sửa chửa những thông tin sản phẩm bị sai, xóa những sản phẩm không còn lưu thông nữa

Trang 19

Khi bạn chọn một sản phẩm bất kỳ thì giao diện sẽ chuyển tới trang chi tiết sản phẩm ở trang này bạn có thể xem đầy đủ thông tin về sản phẩm sô lượng còn cũng như giá tiền mà bạn phải trả và thông tin khuyến mại cho sản phẩm bạn có thêm sản phẩm vào giỏ hàng và mua sản phẩm nếu đồng ý Ngoài ra

hệ thống sẽ sử dụng thuật toán K-mean để phân cụm liệt kê và tư vấn những sản phẩm tương ứng kèm theo sản phẩm mà khách hàng lựa chọn

2 Kết quả đạt được

 Nghiên cứu và tìm hiểu, nắm rõ thuật toán Kmeans

 Xây dựng thành công chương trình

 Đã tư vấn được cho khách hàng khi mua hàng

 Xây dựng giao diện thân thiện

 Hỗ trợ quản trị CSDL

3 Hướng phát triển

 Hệ thống nên áp dụng thêm các giải thuật khác để tăng hiệu quả tư vấn

 Sử dụng Apriori

 Sử dụng Mạng Noron

 Sử dụng Knn…

Ngày đăng: 11/06/2015, 15:29

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w