Tải bản đầy đủ (.doc) (20 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1 MB, 20 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
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
2
Báo cáo BTL Hệ Chuyên Gia
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


1. Dữ liệu vào 9
2. Dữ liệu ra 9
3. Thiết kế CSDL 9
4. 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
2
Nhóm 13 lớp KHMT1-K5
3
Báo cáo BTL Hệ Chuyên Gia
Phân công công việc
STT Công việc Người thực hiện
1 Tìm hiểu thuật toán Tất cả thành viên
2 Thiết kế CSDL Trần Văn Huâ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
6 Lập trình Web Trịnh Xuân Đồng
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
3
Nhóm 13 lớp KHMT1-K5
4

Báo cáo BTL Hệ Chuyên Gia
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
4
Nhóm 13 lớp KHMT1-K5
5
Báo cáo BTL Hệ Chuyên Gia
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ả…;
5
Nhóm 13 lớp KHMT1-K5
6
Báo cáo BTL Hệ Chuyên Gia
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);…
6
Nhóm 13 lớp KHMT1-K5
7

Báo cáo BTL Hệ Chuyên Gia
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
7
Nhóm 13 lớp KHMT1-K5
8
Báo cáo BTL Hệ Chuyên Gia
 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.
8
Nhóm 13 lớp KHMT1-K5
9
Báo cáo BTL Hệ Chuyên Gia
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
1. 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.
2. 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.
3. 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
9
Nhóm 13 lớp KHMT1-K5
10
Báo cáo BTL Hệ Chuyên Gia
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á
Sale int Khuyến mại
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á
Sale int Khuyến mại
MaterialID int Mã chất liệu
Bảng Cluster – Cụm sau khi phân cụm
Cluster
ProductI int Mã SP
10
Nhóm 13 lớp KHMT1-K5
11

Báo cáo BTL Hệ Chuyên Gia
D
Cluster Nvacrchar(Max) MÃ cụm
Hình 1 : Thiết kế CSDL các bảng trên SQL Server
4. 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].
11
Nhóm 13 lớp KHMT1-K5
12
Báo cáo BTL Hệ Chuyên Gia
• Xây dựng công thức trên bằng ngôn ngữ C#
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;
12
Nhóm 13 lớp KHMT1-K5
13
Báo cáo BTL Hệ Chuyên Gia
float MauSac = 0;
float KichThuoc = 0;
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;
}
13
Nhóm 13 lớp KHMT1-K5
14
Báo cáo BTL Hệ Chuyên Gia
• 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)
{

//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.
1. 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++)
{
14
Nhóm 13 lớp KHMT1-K5
15
Báo cáo BTL Hệ Chuyên Gia
for (int i = 0; i < socum; i++)
{
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);
}
}
15
Nhóm 13 lớp KHMT1-K5
16
Báo cáo BTL Hệ Chuyên Gia
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.
16

Nhóm 13 lớp KHMT1-K5
17
Báo cáo BTL Hệ Chuyên Gia
 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…
17
Nhóm 13 lớp KHMT1-K5
18
Báo cáo BTL Hệ Chuyên Gia
 Ở 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.
18
Nhóm 13 lớp KHMT1-K5
19
Báo cáo BTL Hệ Chuyên Gia
 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…
19
Nhóm 13 lớp KHMT1-K5
20
Báo cáo BTL Hệ Chuyên Gia
4.Tài liệu tham khảo
 Giaó trình Lý Thuyết Nhận Dạng của đại học FPT.




20
Nhóm 13 lớp KHMT1-K5

×