so why you use "www.subdomain.example.com" ?
if you want to create subdomain it's better just create subdomain.example.com, it think if you use
www.subdomain.example.com it's subdomain in subdomain.
serveralias is just optional you just need ServerName subdomain.example.com if you want to create subdomain.example.com
so the conf is:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin
webmaster@example.com ServerName subdomain.example.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php
DocumentRoot /var/www/subdomain.example.com/public_html
<Directory /var/www/subdomain.example.com/public_html>
# Log file locations
LogLevel warn
ErrorLog /var/www/subdomain.example.com/log/error.log
CustomLog /var/www/subdomain.example.com/log/access.log combined
</VirtualHost>